二次方程式の解
a、b、cを入力すると、判別式と2つの解が分かります。x² − 3x + 2 = 0なら判別式は1、解は2と1です。判別式が負のときは複素数の組になり、どの解も小数点以下6桁で表示されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 係数A
- 1
- 係数B
- -3
- 係数C
- 2
- 判別式
- 1
- 解の種類
- two_real
ブラウザで無料計算
解の公式で解を求めるしくみ
二次方程式はどれも、aかけるxの2乗、たすbかけるx、たすcがゼロ、という形に書けます。このツールはまず、bの2乗から4かけるaかけるcを引いた判別式を、整数の計算で正確に求めます。次に、おなじみの解の公式を使います。マイナスbに判別式の平方根をたすか引くかして、全体を2aで割ります。たとえばx² − 3x + 2 = 0では、aが1、bが−3、cが2なので、判別式は9から8を引いた1です。その平方根は1で、2つの解は4を2で割った2と、2を2で割った1になります。
結果の読み方とよくある間違い
判別式が負のときは実数の解がなく、2つの解は実部と虚部で表され、互いに鏡に映したような共役の組になります。手計算で最も多い間違いはbの符号です。x² − 3x + 2ではbは3ではなく−3で、公式はマイナスbから始まります。もう1つは、2aで割るのが分子全体だという点を忘れることです。係数は絶対値が百万以下の整数でなければならず、最初の係数は0にできません。どの解も小数点以下6桁に丸められます。三次以上の方程式はここでは扱いません。
Math.sqrt の誤差を避ける half-up 根
実根は古典公式 x = (-b ± √D) / (2a) を使います。平方根は n·S² の整数 isqrt から求め、S は100万で、6桁へ half-up します。除算はゼロから遠ざかる対称 half-up です。
複素根は |D| に同じスケール経路を使い、a が負でも虚部が共役になるようにします。各段が整数なので、署名済み規則に従う独立オラクルは全ベクトルで同一文字列を出します。
根の順序と実用上の限界
x1 は常に公式のプラス枝、x2 はマイナス枝です。複素解では x1 の虚部に √|D| を 2a で割った符号が入り、x2 がその虚部符号を反転します。出力はネット通信せず、システム時計も読まず、ロケールにも依存しません。
v1 は意図的に非整数係数・記号因数分解・高次多項式を外し、契約を短く監査しやすくしています。範囲を広げたい場合は将来の版で議論します。
活用例
宿題の検算
モニック/非モニック二次の根を確認する。
複素数の授業
D が負のときの共役対を示す。
簡易モデル
整数係数の特性方程式を解く。
よくある質問
Math.sqrt を使う?
いいえ。 整数 isqrt とスケール half-up です。
判別式から何が分かりますか?
判別式はbの2乗から4acを引いた値です。正なら異なる2つの実数解、0なら重解、負なら互いに共役な複素数の解の組になります。
x1とx2はどちらの解ですか?
1つ目の解は公式の平方根の前にプラスを、2つ目はマイナスを使ったものです。x² − 3x + 2 = 0なら、1つ目が2、2つ目が1になります。
aが0のときはどうなりますか?
2乗の項がなくなると二次方程式ではなく一次方程式になるため、受け付けません。最初の係数は0以外の整数である必要があります。
解はどのくらいの精度で表示されますか?
どの解も小数点以下6桁に丸めて表示し、ちょうど半分の値は0から遠い側に丸めます。判別式そのものは整数の計算で正確に求めるため、誤差は生じません。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/quadratic-equation \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":1,"b":-3,"c":2}'const res = await fetch("https://api.kit.forhosting.com/dev/quadratic-equation", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 1,
"b": -3,
"c": 2
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/quadratic-equation",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 1,
"b": -3,
"c": 2
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/quadratic-equation", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":1,"b":-3,"c":2}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":1,"b":-3,"c":2}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/quadratic-equation", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 1,
"b": -3,
"c": 2
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.quadratic_equation",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_abs_coeff | 1000000 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
整数係数 a, b, c を入力すると、方程式 ax² + bx + c = 0 の判別式、根の種類、実数または複素数の2解が得られます。
バージョン1は整数係数のみ
係数 a は 0 にできません。絶対値が100万を超える値も拒否し、整数経路を有界に保ちます。入力はネットワークに送られず、端末内だけで完結します。このソルバーは a, b, c を JSON 整数または先頭に任意のマイナスを付けた正規の整数文字列として受け付けます。浮動小数、真偽値、小数点、先頭のプラス、01 のような先頭ゼロは、問題のフィールドに対する型付き invalid_input で拒否されます。その場合は二次でなくなるため a_zero として報告します。
厳密な判別式と3つの性質
常に x1 と x2 の2つの根オブジェクトを受け取り、それぞれ実部 re と虚部 im がちょうど6桁の小数文字列で入ります。結果の並びも常に同じ規則に従います。判別式 D は b の二乗から 4ac を引いた値で、IEEE 浮動小数ではなく厳密な整数演算で求めます。D が正なら nature は two_real、0 なら repeated、負なら complex です。
連携の活用例
CI テスト
6桁文字列をゴールデンに固定する。
技術的な質問
a は 0 でもよい?
いいえ。二次でなくなるため a_zero になります。
小数係数は?
v1 では不可。整数または整数文字列のみ。
根の精度は?
常に6桁、half-up 丸めです。
nature とは?
D の符号に応じた two_real / repeated / complex。
ブラウザは無料?
はい。ウィジェットはローカル。API は $0.002。