変数分離形微分方程式計算ツール
この変数分離形微分方程式計算ツールは、指数増加または指数減衰の標準形 dy/dx = ky を扱います。定数 k、初期条件 y(x0) = y0、解を評価する点を入力してください。変数を分離し、一般的な指数関数族を求め、初期条件を適用して、指定点における安定した数値を返します。演習の確認や、瞬間変化率が現在量に比例する現象のモデル化にご利用いただけます。
無料で実行
標準的な変数分離形を見分けます
本ツールは、k を一定の実数とする代表的な方程式 dy/dx = ky を対象としています。現在の量に比例する速さで変化する現象に現れ、制約のない人口増加、放射性崩壊、連続複利残高、一次除去、理想化した冷却差などが例です。y を含む因子を一方へ、x を含む因子を他方へ移せるため変数分離形であり、y がゼロでなければ dy/y = k dx となります。初期値 y0 = 0 によるゼロ解も保持されます。対象をこの形に限定することで、数値的な刻み近似ではなく、厳密で決定的な答えを得られます。減衰には負の k、一定解にはゼロを直接入力し、解曲線上の既知の点として x0 と y0 を指定してください。任意の導関数式、変数係数、強制項、複雑な置換後にだけこの形になる方程式には対応していません。
変数分離から特殊解を導きます
分離した方程式を積分すると、ln|y| = kx と積分定数が得られます。指数関数を取ると、符号と正の指数因子を一つの任意定数 C にまとめられるため、一般解の族は y = C exp(kx) です。y(x0) = y0 を適用すると C = y0 exp(-kx0) となります。同じ結果を y(x) = y0 exp(k(x - x0)) と書くと明確であり、本ツールはこの特殊解を表示します。この移動形では x0 を代入した瞬間に指数因子が一となって y0 が復元され、扱いにくい C の値を別に示す必要もありません。y0 がゼロの場合も、形式的な変数分離で y により除算すると除外される y = 0 の平衡解を正しく返します。途中の考え方を確認できるよう、分離式、一般解、特殊解、数値評価をまとめて表示します。計算には JavaScript の浮動小数点演算を用い、最後に指定された精度で表示を丸めます。
解を評価して結果を解釈します
評価点 x は初期点とは独立に選べ、x0 より前、同じ、後のいずれでも構いません。本ツールは無次元の指数 k(x - x0) を求め、指数関数を評価し、y0 を掛け、表示結果を小数点以下ゼロ桁から十五桁までで丸めます。k が正なら x の増加に伴って絶対値が増え、負ならゼロへ減衰します。x0 から後ろへ進む場合はこの傾向が逆になります。指数因子は常に正なので、ゼロでない解の符号は y0 から引き継がれ、このモデルがゼロを横切ることはありません。単位にもご注意ください。x が時間単位なら k は時間の逆数であり、出力 y は y0 と同じ単位です。非常に大きな指数が有限数値範囲を超える場合、誤解を招く無限大を返さず入力を拒否します。解析には厳密式を、具体的な予測や検算には評価値をご利用ください。任意の f(x)g(y) には追加の記号積分が必要なため、本ツールの範囲外です。
活用例
指数増加の演習を確認する
dy/dx = ky に与えられた初期条件を適用し、厳密な評価値と手計算の解を比較できます。
一次減衰をモデル化する
負の速度定数を使い、数値刻み法を使わずに指定時点の残存量を推定できます。
初期値問題の解を検証する
一般解、特殊な指数関数式、指数、丸めた値を一つの決定的な結果で確認できます。
よくある質問
どの微分方程式を解けますか?
一定の実数 k と y(x0) = y0 を持つ変数分離形初期値問題 dy/dx = ky を解きます。
厳密解は何ですか?
特殊解は y(x) = y0 exp(k(x - x0)) であり、指定された x での値も計算します。
k または y0 は負でもよいですか?
はい。負の k は通常減衰を表し、負の y0 から始まる解は負のままです。
y0 がゼロの場合はどうなりますか?
任意の有限な x で平衡解 y(x) = 0 となります。
任意の変数分離形方程式を解けますか?
いいえ。記号的な不定積分を要する任意の積ではなく、一定速度の標準形 dy/dx = ky のみを対象としています。
料金はいくらですか?
API の一回のリクエストは $0.002 で、同じ決定的な計算をブラウザーでは無料で実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calculus/separable-ode \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"k":0.5,"x0":0,"y0":2,"x":3}'const res = await fetch("https://api.kit.forhosting.com/calculus/separable-ode", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"k": 0.5,
"x0": 0,
"y0": 2,
"x": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calculus/separable-ode",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"k": 0.5,
"x0": 0,
"y0": 2,
"x": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calculus/separable-ode", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"k":0.5,"x0":0,"y0":2,"x":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"k":0.5,"x0":0,"y0":2,"x":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calculus/separable-ode", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"k": 0.5,
"x0": 0,
"y0": 2,
"x": 3
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calculus.separable_ode",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |