2次ルンゲクッタ法による微分方程式計算ツール
このRunge-Kutta 2計算ツールは、y' = f(x,y)で表される初期値問題を近似します。導関数の式、既知の点x0とy0、終点、固定ステップ数を入力してください。2次精度の中点法、Heun法、Ralston法から選択できます。結果には共通のステップ幅、各ステップの2つの傾き、重み付き増分、最終近似値が表示されるため、数値計算の過程を明確に確認して再現できます。
無料で実行
微分方程式と区間を入力します
equation欄には右辺のf(x,y)だけを入力してください。y' = x + yの場合は、x + yと入力します。式では、10進数と科学的記数法の数値、変数xとy、定数piとe、括弧、加算、減算、明示的な乗算、除算、累乗、およびexp、log、sin、cos、sqrtの各関数を使用できます。2xではなく2*xと記述し、関数の引数は括弧で囲んでください。初期条件はx0とy0で定義され、y(x0)がy0に等しいことを意味します。target_xは区間のもう一方の端点です。x0より大きい値にも小さい値にも設定できるため、順方向と逆方向のどちらにも積分できます。最後に正確なステップ数を選択してください。計算ツールは区間全体をその数の等しい部分に分割し、最大値として扱ったり計算中に調整したりしません。不正な式、未対応の名前、数値の欠落、有限実数の範囲外となる計算は、信頼性が不十分な表を返すのではなく入力エラーとして報告されます。
RK2公式を選択して結果を読み取ります
収録されている方法は、いずれも2段階の陽的Runge-Kutta法で、2次精度です。まず現在の点でk1 = f(x,y)を評価します。次にk1を使って中間位置を予測し、その位置でk2を評価します。中点法は段階点をステップの中央に置き、k2を最終的な傾きとして使います。Heun法はステップの終点を予測してk1とk2を平均する方法で、改良Euler法または陽的台形法とも呼ばれます。Ralston法は段階点をステップの3分の2の位置に置き、k1の4分の1とk2の4分の3を組み合わせます。これは一般的な局所誤差係数を小さくするための選択です。出力には、採用された各点についてk1、k2、得られた増分が表示されます。直前のy値に増分を加えると、表示された次の値を再現できます。段階の規則が異なるため、十分滑らかな問題では3方式とも2次収束しますが、RK2の方式ごとに近似値がわずかに異なる場合があります。
ステップ幅と数値的な信頼性を評価します
符号付きステップ幅は(target_x - x0)をstepsで割った値なので、ステップ数を増やすと各ステップの絶対値は小さくなります。滑らかで非剛性の問題では、計算が漸近領域に入った後にステップ幅を半分にすると、2次精度の方法の大域誤差は一般に約4分の1になります。実用的な収束確認として、Nステップで解いた後に2Nステップでも解き、最終的なy値を比較してください。値の一致はその問題における安定性の根拠になりますが、厳密な誤差保証ではありません。表示された傾きも確認してください。急激な増大、大きな値の交互変化、有限でない演算結果は、区間内の特異点や粗すぎるステップを示すことがあります。この計算ツールは意図的に固定ステップ数を使用し、適応的な誤差制御は行いません。また、返すのは近似値であり、記号解ではありません。剛性方程式、不連続な導関数、長区間の積分、安全性が重要な科学計算では、適切な適応型ソルバー、分野の知識、独立した誤差解析で確認してください。
活用例
演習の計算を確認
各ステップの2つの傾きと重み付き増分を、手計算したRK2表と比較できます。
RK2方式を比較
同じ初期値問題に中点法、Heun法、Ralston法を適用し、終点の推定値を比較できます。
収束性を検証
固定ステップ数を2倍にして最終値を比較し、近似値が安定しているか確認できます。
よくある質問
リクエストの料金はいくらですか?
APIリクエスト1回の料金は$0.002です。同じ決定論的な計算をブラウザーでも実行できます。
既定ではどの方法が使われますか?
methodを省略すると、RK2の中点法が使用されます。
ここではHeun法と改良Euler法は同じですか?
はい。Heunオプションは、開始時の傾きと終点で予測した傾きを平均する陽的台形更新を使用します。
x0から逆方向にも解けますか?
はい。target_xをx0より小さく設定すると、指定ステップ数は正のまま、算出されるステップ幅が負になります。
ステップ数は自動で選ばれますか?
いいえ。stepsに指定された正の整数を常に使用し、区間を均等に分割します。
結果には誤差限界が含まれますか?
いいえ。ステップ数を増やした結果同士を比較するか、定量的な誤差制御が必要な場合は適応型ソルバーをご使用ください。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calculus/rk2-method \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"equation":"x + y","x0":0,"y0":1,"target_x":0.4,"steps":4}'const res = await fetch("https://api.kit.forhosting.com/calculus/rk2-method", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"equation": "x + y",
"x0": 0,
"y0": 1,
"target_x": 0.4,
"steps": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calculus/rk2-method",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"equation": "x + y",
"x0": 0,
"y0": 1,
"target_x": 0.4,
"steps": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calculus/rk2-method", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"equation":"x + y","x0":0,"y0":1,"target_x":0.4,"steps":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"equation":"x + y","x0":0,"y0":1,"target_x":0.4,"steps":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calculus/rk2-method", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"equation": "x + y",
"x0": 0,
"y0": 1,
"target_x": 0.4,
"steps": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calculus.rk2_method",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_steps | 10000 |
max_expression_chars | 500 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |