オイラー法による常微分方程式計算ツール
オイラー法の計算を見やすい表で確認できます。y' = x + y、y(0) = 1、刻み幅0.1で4ステップ進めると約1.5282になります。各行に x、y、使った傾きが表示されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
このオイラー法計算ツールは、y' = f(x,y) と表される1階初期値問題の解を数値的に近似します。導関数、初期点、0ではない固定刻み幅、反復回数をご入力ください。現在点で傾きを評価し、オイラー更新を適用して、すべての近似値を見やすい表で返します。正方向と逆方向の計算に対応し、一般的な数学関数も使用できるため、演習の確認、簡易検算、再現可能な数値処理に適しています。
初期値問題を正確に指定します
オイラー法は既知の1点から開始するため、導関数 f(x,y) とともに x0 と y0 を指定してください。導関数は、x、y、四則演算、括弧、べき乗、および sin、cos、exp、log、sqrt、abs などの対応関数を使った式で記述します。
たとえば y' = x + y、y(0) = 1 の問題では、導関数に x + y、x0 に 0、y0 に 1 を入力します。式の先頭に y' = または dy/dx = を付けたままでも構いません。乗算は省略せず、2x ではなく 2*x と記述してください。
定数 pi と e も利用できます。解析器は数学構文だけを受け付け、コードを実行することはありません。計算前に、微分方程式が陽な1階形式になっていることをご確認ください。
両辺に y' が残る式、2階導関数を含む式、値が未指定のパラメーターを含む式は f(x,y) として評価できません。単位を想定して計算することはできますが、本ツールは値を単なる数値として扱うため、すべての入力で一貫した単位系をご使用ください。
刻みの向きと各更新を確認します
h には連続する x の間隔を固定値で指定し、実行する更新回数を選びます。正の h では x が大きくなる方向へ進み、負の h では小さくなる方向へ戻ります。結果にはステップ0として初期点が含まれ、その後に各更新の行が続きます。
更新後の各行には直前の点で求めた傾きも記録されるため、計算を1行ずつ検算できます。反復処理では内部的に浮動小数点の精度を保ち、precision の指定は表示する小数桁数だけを変更します。したがって、表示桁数を減らしても各中間値を意図的に丸めることはなく、余分な丸め誤差を累積させません。
final オブジェクトには最後の x と y を再掲し、自動処理で利用しやすくしています。式が未定義になった場合や数値範囲を超えた場合は、誤解を招く無限大を返さず、明確な入力エラーで停止します。
近似値を解釈し、信頼性を確かめます
オイラー法は1次の数値解法であり、各区間で厳密解の曲線ではなく接線に沿って進みます。そのため結果は近似値です。問題が良好な性質を持つ場合、刻み幅の絶対値を小さくすると、通常は大域的な打切り誤差が減少します。
実用的な確認方法は、同じ終点まで2回計算することです。最初は h を使い、次は h/2 としてステップ数を2倍にします。最後の y を比較し、差が小さければ信頼性が高まり、大きければ粗い格子では不十分だと判断できます。
ただし、ステップ数を増やせば必ず解決するわけではありません。急激な増大、特異点、不連続、硬い方程式では、陽的オイラー法が不安定になったり、実用にならないほど小さな刻みが必要になったりします。比較前に、両方の計算が同じ最終 x に到達していることもご確認ください。
計算表を使えば、2つの結果がどこから離れ始めるか、傾きがどこで急変するかを確認できます。精度が重要な科学・工学用途では、可能なら既知の解析解と比較し、高次法または安定性に優れた解法もご検討ください。本ツールは透明性の高い基準として特に有用で、単純な漸化式により数値上の仮定が明確になり、確認、教育、テスト、後続計算に使える再現可能な系列を得られます。
活用例
微分方程式の演習を検算する
オイラー法の全計算表を作成し、各傾きと更新値を手計算の結果と照合できます。
刻み幅への感度を調べる
同じ初期値問題をより小さい h で再計算し、同一の終点における近似値を比較できます。
再現可能な数値データを作る
決定論的な各行を、授業、表計算、テスト、アプリケーション試作の基準データとして使えます。
よくある質問
どのような微分方程式を入力できますか?
数値の初期値を持つ陽な1階方程式 y' = f(x,y) を入力できます。導関数には x、y、演算、べき乗、定数、対応関数を使用できます。
逆方向へ積分できますか?
はい。 h に負の値を指定してください。同じオイラー更新を適用しながら、各ステップでより小さい x へ進みます。
precision の指定は反復計算を変えますか?
いいえ。 表示する小数桁数だけを制御します。出力を準備するまで、漸化式は JavaScript の浮動小数点精度を保持します。
導関数が有限値でないと表示されるのはなぜですか?
負数の対数や0による除算などにより、途中で式が未定義になったか数値範囲を超えています。方程式、区間、刻み幅をご確認ください。
結果の精度をどのように見積もれますか?
刻み幅の絶対値を半分、ステップ数を2倍にして再計算し、同じ最終 x の y を比較してください。厳密な用途では高次法も併用してください。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calculus/euler-method-step \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"derivative":"x + y","x0":0,"y0":1,"h":0.1,"steps":4}'const res = await fetch("https://api.kit.forhosting.com/calculus/euler-method-step", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"derivative": "x + y",
"x0": 0,
"y0": 1,
"h": 0.1,
"steps": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calculus/euler-method-step",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"derivative": "x + y",
"x0": 0,
"y0": 1,
"h": 0.1,
"steps": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calculus/euler-method-step", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"derivative":"x + y","x0":0,"y0":1,"h":0.1,"steps":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"derivative":"x + y","x0":0,"y0":1,"h":0.1,"steps":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calculus/euler-method-step", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"derivative": "x + y",
"x0": 0,
"y0": 1,
"h": 0.1,
"steps": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calculus.euler_method_step",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
刻みの向きと各更新を確認します
第 n ステップでは傾き f(x_n,y_n) を評価し、y_(n+1) = y_n + h f(x_n,y_n)、続いて x_(n+1) = x_n + h を計算します。更新は最大 10,000 回まで指定でき、大きな表に対応しながらブラウザーと API の処理量を確実に制限します。
技術的な質問
APIリクエストの料金はいくらですか?
APIは1リクエストあたり$0.002です。ブラウザー版は端末内で無料実行できます。