平方完成計算機
平方完成APIは、二次式 ax² + bx + c の3つの係数 a、b、c を受け取り、頂点形式とも呼ばれる平方完成形 a(x − h)² + k に書き換えます。この変換を定義する2つのパラメータ h と k を、放物線の頂点とあわせて返します。書き換え全体は決定論的な算術の1パスで、h = −b/(2a)、k = c − b²/(4a) です。方程式を解くことも推測もなく、指定した丸め精度を超える近似もないため、同じ係数からは常に同じ頂点形式が得られます。放物線の頂点を直接読み取る場合、方程式を解く準備をする場合、あるいは大きなパイプラインで二次項を正規化する場合に、手作業の代数計算の代わりに1回の呼び出しで済ませられます。
無料で実行
平方完成が実際に意味するもの
ax² + bx + c と書かれた二次式は、その形状を間接的にしか示しません。同じ式を a(x − h)² + k と書き換えると、多くの人が本当に知りたい2つのことが分かります。放物線の頂点が点 (h, k) にあること、そして係数 a の符号から上に開くか下に開くかです。この書き換えの背後にある手法である平方完成は、x² の項と x の項を取り出し、完全平方三項式にするために必要な定数をちょうど加えて引くことで、二項式の二乗の形にまとめます。式そのものは何も変わりません。どちらの形に任意の x の値を代入しても同じ数が得られます。変わるのは一目で読み取れる内容だけです。係数 a はそのまま引き継がれるため、送信した最高次の係数がそのまま答えの二乗項に掛かります。このエンドポイントは3つの数値係数に対して記号的に変形を行うため、整数・小数・負の値のいずれにも対応し、唯一の退化ケースである a がゼロの場合、つまり式が実際には直線で平方完成形に意味がない場合は拒否します。
h と k の計算方法
2つのパラメータは2つの閉じた形の恒等式から得られます。水平方向のずれは h = −b/(2a) で、これは放物線の対称軸の x 座標そのものです。垂直方向のずれは k = c − b²/(4a) で、これはその軸上で二次式が取る値、言い換えれば元の式を x = h で評価したものです。これらは反復手続きではなく厳密な公式なので、結果は決定論的です。同じ係数で2回実行すればバイト単位で同一の出力が得られ、そのためレスポンスはキャッシュ・比較・テストへの埋め込みに安全です。選択の余地があるのは丸めだけです。デフォルトでは h と k は小数点以下10桁に丸められ、マシンや言語をまたいで出力が安定します。オプションの precision フィールドで0から15桁まで指定できます。厳密な整数となる値は精度に関係なく整数のままなので、2x² − 8x + 5 は h = 2、k = −3 を返し、2.0000000000 にはなりません。係数は数値でも数値文字列でも送信でき、すべての係数は有限でなければなりません。Infinity と NaN は、意味のない結果を黙って返すのではなく、明確なエラーで拒否されます。
実務での使いどころ
平方完成が最終目標になることはまれで、次のステップへの扉を開く工程です。二次方程式の解の公式への標準的な道筋であり、微積分を使わずに頂点を求める最速の方法であり、円や楕円の方程式を中心・半径の形に変える手順でもあります。教育プロダクトでは、標準形と並べて頂点形式を表示し、学生にそのつながりを見せられます。グラフィックスや物理のパイプラインでは、フィットした二次式をピーク位置と値に直接変換できます。サンプルに ax² + bx + c をフィットさせ、3つの係数を送り、k から最大値または最小値を読み取るだけです。最適化サービスでは、二次のペナルティ項をソルバーに渡す前に正規化します。この機能はエッジ上で何も保存しない純粋な算術として動作し、同じコードがこのページのブラウザ上で無料で動きます。3つの係数を貼り付けて頂点形式を確認し、自動化されたフローに組み込む場合にのみ、1リクエストあたり $0.002 をお支払いいただきます。
活用例
微積分を使わずに放物線の頂点を求める
a、b、c を送れば、頂点 (h, k) を頂点形式から直接読み取れます。微分もグラフ描画の手順も不要です。
方程式を解くための準備
ax²+bx+c を a(x−h)²+k に変換すれば、根が x = h ± √(−k/a) として得られます。これは二次方程式の解の公式を導くのと同じ道筋です。
データパイプラインでフィットしたピークを抽出
サンプリングした測定値に二次式をフィットさせ、その係数をここに送れば、ピーク位置 h とピーク値 k をきれいな数値として取得できます。
よくある質問
料金はいくらですか?
API経由では1リクエストあたり $0.002 です。このページのブラウザ上では無料で実行できます。
具体的に何が返されますか?
変更されない係数 a、頂点パラメータ h と k、書き換え後の形を示す文字列 a(x−h)²+k、および (x, y) 点としての頂点です。
なぜ a = 0 を拒否するのですか?
最高次の係数がゼロの場合、式は二次ではなく一次になり、平方完成形は定義されません。2a で割ることに意味がないからです。
係数を文字列として送れますか?
はい。数値と数値文字列の両方を受け付けますが、すべての係数は有限の数値でなければなりません。Infinity と NaN は拒否されます。
結果はどのように丸められますか?
h と k はデフォルトで小数点以下10桁に丸められ、precision は0から15まで設定できます。厳密な整数はどの精度でも整数として返されます。
何か保存されますか?
いいえ。計算は送信された3つの係数に対する純粋な算術であり、ログへの記録も保持もされません。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/completing-the-square \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":2,"b":-8,"c":5}'const res = await fetch("https://api.kit.forhosting.com/math/completing-the-square", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 2,
"b": -8,
"c": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/completing-the-square",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 2,
"b": -8,
"c": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/completing-the-square", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":2,"b":-8,"c":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":2,"b":-8,"c":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/completing-the-square", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 2,
"b": -8,
"c": 5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.completing_the_square",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_abs_coeff | 1000000000000000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |