複素数解を厳密に求める二次方程式計算機
この複素数解計算機は、整数係数による ax² + bx + c = 0 の判別式が負になる場合を解きます。答えを小数へ丸めず、実部は既約分数、虚部の大きさは簡約した平方根または分数として保持します。2 つの解は、厳密な複素共役の組として直交形式でまとめて返されます。そのため、代数の演習、解答集、数式処理のテストデータ、近似値では解の構造が見えにくくなる処理にご利用いただけます。
無料で実行
二次方程式が複素数解を持つ条件をご確認ください
標準形 ax² + bx + c = 0 から始めます。ここで a は 0 ではありません。判別式は b² − 4ac です。判別式が正なら異なる 2 つの実数解、0 なら重複する実数解が得られます。本計算機は残る場合、すなわち判別式が厳密に負の場合だけを対象とします。このとき平方根には、i² = −1 で定義される虚数単位 i が含まれ、解の公式は実部に虚部を加減する形へ整理できます。a、b、c が実整数なので、符号だけが異なる 2 つの共役解になります。たとえば x² + x + 1 の判別式は −3 で、解は −1/2 + sqrt(3)/2 i と −1/2 − sqrt(3)/2 i です。誤った前提を明確にするため、0 以上の判別式は受け付けません。また、a = 0 は二次方程式ではなく一次方程式になるため、エラーとして扱います。
直交形式の厳密な結果をお読みください
標準形に合わせて整数係数 a、b、c を入力してください。応答には読みやすい方程式と負の判別式が表示されます。roots の各要素には real、imaginary、rectangular が含まれます。real は既約化した −b/(2a) です。imaginary は sqrt(−D)/(2|a|) から求めた i の符号付き係数で、根号内から平方因子を取り出し、分母との共通因子を約分します。rectangular は両者を u + vi の形にまとめます。たとえば 3/2 + sqrt(7)/2 i なら u = 3/2、v = sqrt(7)/2 を意味し、もう一方の解では実部を保ったまま虚部の符号が反転します。根号を小数へ置き換えないため、循環する分数や無理数の平方根も厳密なままです。根号が整数まで簡約できる場合は sqrt 表記を外し、分数が整数になる場合は分母を省略します。
共役の組を検算し、安全にお使いください
簡単な検算では、共役対称性をご確認ください。2 つの解は同じ実部を持ち、虚部の符号だけが反対でなければなりません。Vieta の公式でも確認できます。虚数項が相殺されるため、解の和は −b/a、積は c/a になります。どちらかの直交形式を ax² + bx + c に代入し、実部と虚部がともに 0 になるまで整理する方法もあります。入力は絶対値が 100 万以下の安全な整数に制限されます。これにより、ブラウザーと API Worker の双方で判別式と因数分解の厳密性を維持します。本ツールは小数係数、入力された方程式文の解析、実数解の計算には対応しません。有理数係数は、あらかじめ同値な整数へ変換してください。ブラウザー版はネットワークを使わず同じ純粋関数を実行します。API で正常に処理された 1 項目の料金は $0.002 で、無効な入力には明確なエラーを返します。
活用例
代数課題の答え合わせ
手計算した共役解を厳密な実部と虚部に照らし、提出前にご確認いただけます。
厳密な解答集の作成
プリントや評価問題に小数丸めを持ち込まず、一貫した直交形式の解を作成できます。
数式処理コードのテスト
根号と分数の決定的な文字列を、複素二次方程式を扱うプログラムのテスト値として使えます。
よくある質問
判別式が負でなければならないのはなぜですか?
本機能は非実数の複素共役解専用です。判別式が 0 または正の場合は、実数解用の計算機をご利用ください。
解は厳密値ですか、それとも小数近似ですか?
厳密値です。分数を既約化し、平方根を簡約しますが、浮動小数点の近似値には変換しません。
直交形式とは何ですか?
複素数を u + vi と書き、実部 u と虚数係数 v を分けて表す形式です。
2 つの解が共役になるのはなぜですか?
実係数の二次方程式が非実数解を持つ場合、実部は等しく、虚部の符号だけが反対になるためです。
API 呼び出しの料金はいくらですか?
正常に解かれた各項目は $0.002 です。同じ決定的な計算機をブラウザー内でも実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/algebra/quadratic-complex-roots \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":1,"b":1,"c":1}'const res = await fetch("https://api.kit.forhosting.com/algebra/quadratic-complex-roots", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 1,
"b": 1,
"c": 1
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/algebra/quadratic-complex-roots",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 1,
"b": 1,
"c": 1
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/algebra/quadratic-complex-roots", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":1,"b":1,"c":1}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":1,"b":1,"c":1}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/algebra/quadratic-complex-roots", 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": 1,
"c": 1
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "algebra.quadratic_complex_roots",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |