4次ルンゲクッタ法1ステップ計算機
この4次ルンゲクッタ法1ステップ計算機は、既知の点から次の点まで1階常微分方程式を進めます。導関数をf(x, y)の形で入力し、初期座標とゼロではない刻み幅をご指定ください。結果には傾きの推定値k1、k2、k3、k4、それぞれを評価する中間点、加重平均、最終的なRK4近似値が表示されます。計算過程をすべて確認できるため、演習問題の検算、数値ソルバーの検証、1ステップ分の技術資料作成に役立ちます。
無料で実行
初期値問題を明確に入力します
まず、1階方程式をy' = f(x, y)の形にしてください。式の欄には右辺だけを入力し、独立変数にx、従属変数にyを使用します。たとえばy' = x + yなら、x + yと入力してください。パーサーでは通常の四則演算、括弧、^で表す累乗、定数piとe、およびsin、cos、exp、log、sqrtなどの一般的な関数を使用できます。次に、既知の点(x, y)と刻み幅hをご指定ください。hが正なら右方向へ進み、負なら同じRK4の構成で逆方向へ進みます。ゼロでは解が進まないため、刻み幅にゼロは指定できません。数値入力とすべての関数値は有限である必要があります。乗算は省略せず、2xではなく2*xと記述してください。この厳密な入力形式により、方程式のラベルや暗黙の乗算の誤解釈を防ぎ、4回の評価を再現可能に保ちます。
4つの傾き推定値を確認します
この計算機は、k1 = f(x, y)という規約に従い、k1からk4をh倍済みの増分ではなく傾きとして表示します。最初にk1を初期点で求めます。第2の推定値は中点x + h/2を使い、そのy座標をh*k1/2で予測します。第3の推定値も中点を使いますが、予測をh*k2/2に置き換え、第2の傾きで方向を補正します。最後にk4は、k3に基づく1ステップ先のy予測を用いて、x + hで導関数を評価します。返されるk2_point、k3_point、k4_pointには、これらの評価座標が直接示されます。教科書によっては、各傾きをh倍した値にも同じk記号を使うため、この区別が重要です。お使いの資料がその規約を採用している場合は、各段階を比較する前に表示されたkをh倍してください。対応する式を一貫して使えば、最終的なyの近似値は変わりません。
加重更新と適用上の限界を把握します
RK4は傾きを(k1 + 2*k2 + 2*k3 + k4)/6として合成し、2つの中点推定値に端点推定値の2倍の重みを与えます。この計算機はその値をweighted_slopeとして返し、続いてy_next = y + h*weighted_slopeとx_next = x + hを計算します。十分に滑らかな導関数であれば、1回のRK4ステップは標準的な局所的意味で4次精度を持ちます。ただし、任意の刻み幅が十分に小さいことを保証するものではありません。急変、特異点、不連続、またはスティッフ性を含む問題では、より小さなhや誤差制御付きの手法が必要です。このツールは固定された1ステップだけを実行し、打切り誤差の推定、刻み幅の自動調整、区間全体の求解は行いません。感度を調べる場合は、完全なソルバーで大きさhの1ステップと大きさh/2の連続2ステップを比較してください。表示された各段階から、式の入力、丸め、傾きの規約による差を特定できます。
活用例
教科書の演習を検算する
最終値だけでなく、RK4の各中間傾きと次のy近似値を段階ごとに確認できます。
数値ソルバーをデバッグする
中間状態を含む既知の1ステップを、表計算、スクリプト、シミュレーションの実装と比較できます。
工学計算を記録する
モデルを1ステップ進める4回の決定論的な導関数評価と加重更新を記録できます。
よくある質問
APIで1回計算する料金はいくらですか?
APIリクエスト1回の料金は$0.002です。ブラウザー版は端末内で動作し、無料でご利用いただけます。
k1、k2、k3、k4は傾きですか、それとも増分ですか?
f(x, y)の直接値である傾きです。資料で各kを増分として定義している場合は、それぞれをh倍してください。
刻み幅を負にできますか?
はい。有限の負の刻み幅では、同じRK4の式を使って、より小さいxの方向へ進みます。
どのような式の構文を使えますか?
x、y、数値、pi、e、括弧、+、-、*、/、^と、sin、cos、exp、log、sqrtなど対応する1引数関数を使用できます。
区間全体の微分方程式を解けますか?
いいえ。指定された初期点から固定RK4ステップを正確に1回実行するだけで、刻み幅の選択や誤差推定は行いません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calculus/rk4-single-step \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"expression":"x + y","x":0,"y":1,"step_size":0.1}'const res = await fetch("https://api.kit.forhosting.com/calculus/rk4-single-step", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"expression": "x + y",
"x": 0,
"y": 1,
"step_size": 0.1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calculus/rk4-single-step",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"expression": "x + y",
"x": 0,
"y": 1,
"step_size": 0.1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calculus/rk4-single-step", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"expression":"x + y","x":0,"y":1,"step_size":0.1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"expression":"x + y","x":0,"y":1,"step_size":0.1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calculus/rk4-single-step", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"expression": "x + y",
"x": 0,
"y": 1,
"step_size": 0.1
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calculus.rk4_single_step",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_chars | 500 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |