ステファンセン法による求根計算
このステファンセン法計算機は、導関数を入力せず、1つの初期値から実数関数の零点を近似します。f(x)の式、開始値、停止条件を指定すると、最終近似値と全反復の履歴を返します。f(x)とf(x + f(x))から構成するエイトケン型の補正を使うため、適切な単根の近くでは、関数値だけで二次収束を得られる場合があります。構造化された結果は、数値解析の学習、計算確認、再現可能な自動処理に利用できます。
無料で実行
関数と適切な初期値を入力します
関数はxを使い、x^2 - 2、cos(x) - x、exp(-x) - xのように入力してください。乗算は2xではなく2*xと明記します。パーサーは小数、科学表記、括弧、+、-、*、/、^による累乗、定数piとe、およびsin、cos、tan、exp、log、log10、sqrt、absなどの1引数関数に対応します。JavaScriptは実行せず、f(x)=のような代入も受け付けません。initial_guessには、目的の根に十分近い有限値を指定してください。ステファンセン法は開放型手法であり、二分法のように根を含む区間から始める保証はありません。開始値によって別の根へ収束したり、特異点に到達したり、有効な定義域から外れたりします。グラフ、符号の調査、数学的な見積もりが開始値の選択に役立ちます。toleranceは残差と相対変化の許容値、max_iterationsは計算回数の上限です。入力データが裏付ける精度に合う許容値をお選びください。
エイトケン型の更新式を確認します
現在の近似値xで、まずf(x)を評価し、次に移動点x + f(x)でも関数を評価します。差f(x + f(x)) - f(x)を分母とし、次の近似値をxからf(x)の2乗をその分母で割った値を引いて求めます。この構成は固定点反復へのエイトケン加速と解釈でき、f'(x)を明示的に計算せずにニュートン法の効果を近似します。関数が十分滑らかで、根が単根であり、開始値が適切なら、局所的には通常二次収束し、解の近くで正しい桁が急速に増えます。ただし大域的な保証ではありません。分母が0なら更新は未定義で、非常に小さい分母は大きな飛躍を生みます。本計算機は分母が厳密に0の場合や有限でない値をエラーにします。履歴の各行にはx、f(x)、移動点、その関数値、分母、次の近似値、次の残差が表示されるため、式を再現し、問題が起きた反復を特定できます。
収束判定を読み、結果を検証します
新しい残差がtolerance以下になるか、新しい近似値の尺度に対して更新量が小さくなると、convergedはtrueになります。rootとf_rootは最後の近似値と残差、iterationsは完了した更新回数です。初期値が残差判定を満たす場合は、反復回数0、空の履歴を返します。上限に達した場合、convergedはfalseのまま、最後の有限な近似値と全履歴を返し、未収束を成功とは表示しません。数値的停滞によって更新だけが小さくなる場合があるため、必ずf_rootもご確認ください。重要な用途では、元の式に根を代入し、近い開始値で再実行し、可能なら区間を使う手法とも比較してください。重根では収束次数が下がり、不連続、制限された定義域、平坦部、悪いスケーリングでは失敗します。浮動小数点演算も有効精度を制限します。本ツールは数値計算機であり、根の存在、一意性、保証誤差を証明するものではありません。それらには連続性、導関数、区間、条件数の別途解析が必要です。
活用例
数値解析の演習を確認する
導関数を使わない各更新を手計算と比較し、得られた根の残差をご確認いただけます。
非線形モデル方程式を解く
関数値は計算できても導関数の導出や実装が難しい場合に、有限の零点を求められます。
初期値への感度を調べる
近接する開始値から同じ式を実行し、吸引域、収束速度、失敗の仕方を調査できます。
よくある質問
APIリクエストの料金はいくらですか?
APIは1リクエスト$0.002です。ブラウザー版では同じ決定論的ソルバーをローカルで実行できます。
ステファンセン法には導関数が必要ですか?
いいえ。各更新では、現在値、移動点、得られた次の近似値における関数値を使用します。
二次収束は保証されますか?
いいえ。滑らかさ、単根、適切な開始値などの条件下での局所的な性質であり、難しい問題では失敗します。
分母が0になるのはなぜですか?
差分に使う2つの関数値が等しく、補正が未定義になったためです。別の初期値または手法をお試しください。
反復回数の上限に達するとどうなりますか?
convergedをfalseとし、診断用に最後の有限な近似値、残差、履歴を返します。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/calculus/steffensen-method \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"expression":"x^2 - 2","initial_guess":1}'const res = await fetch("https://api.kit.forhosting.com/calculus/steffensen-method", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"expression": "x^2 - 2",
"initial_guess": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/calculus/steffensen-method",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"expression": "x^2 - 2",
"initial_guess": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/calculus/steffensen-method", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"expression":"x^2 - 2","initial_guess":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"expression":"x^2 - 2","initial_guess":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/calculus/steffensen-method", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"expression": "x^2 - 2",
"initial_guess": 1
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "calculus.steffensen_method",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_expression_chars | 500 |
max_iterations | 10000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |