複素数の立方根計算機
0ではない複素数には、複素平面上の円周に等間隔で並ぶ、相異なる3つの立方根があります。この計算機はド・モアブルの公式を使って3つすべてを求め、各結果を極形式と直交形式で表示します。元の数の実部と虚部を入力すると、その絶対値と主偏角に加え、各根の絶対値、ラジアンと度による角度、実部、虚部を確認できます。0は特別に処理され、同じ位置に重なる3つの0の根として返されます。
無料で実行
複素数を直交形式で入力します
数を a + bi として表し、実部の欄に a、虚部の欄に b を入力してください。どちらも正、負、0のいずれでもかまいませんが、有限の数値である必要があります。たとえば 8 + 0i は実部を 8、虚部を 0 とし、-8i は 0 と -8 を入力します。計算機は最初に、この組を極形式へ変換します。絶対値は原点からの距離であり、a の2乗と b の2乗の和の平方根として計算されます。主偏角には2引数の逆正接を使うため、符号の情報を失わず、正しい象限を保てます。入力の角度は、負の pi から正の pi までの通常の主値で表示されます。直交成分で入力することで、角度の単位や表し方に関する曖昧さを避けられ、軸上の値も簡単に指定できます。両成分が0の場合、幾何学的には0の偏角は定義されませんが、この計算では実用上の規約として偏角を0とします。表示される3つの根は、いずれも同じ0を表します。
ド・モアブルの公式から3つの根を得る方法です
入力を r と i theta の指数関数との積で表します。ここで r は絶対値、theta は主偏角です。ド・モアブルの公式によれば、各立方根の絶対値は r の実数立方根になります。可能な角度は、theta を3で割った値、theta に二 pi を加えて3で割った値、theta に四 pi を加えて3で割った値です。つまり計算機は、k が 0、1、2 のそれぞれについて (theta + 2 pi k) / 3 を使います。除算の前に1回転ずつ加えると、120度間隔の根が得られます。そのため、入力が0でなければ3つの異なる答えになります。どの根も3乗すると角度が3倍になり、追加した完全な回転は消えるため、元の複素数に戻ります。各結果には k の番号が付き、極形式の絶対値と角度がラジアンと度の両方で示されます。角度を同じ範囲に無理に収める必要はありません。同終辺角は同じ点を表し、この順序によってド・モアブルの構成を直接確認できます。
直交形式の結果を読み取り、検算します
絶対値 rho、角度 phi の各極形式の根は、直交形式にも変換されます。実部は rho と phi の余弦の積、虚部は rho と phi の正弦の積です。このため、x + yi を必要とする代数計算へすぐに利用でき、同時に対称性を示す極形式の値も保持できます。0に非常に近い浮動小数点の端数は0へ正規化し、表示値は常に小数点以下12桁で丸めます。これにより、計算方法を変えることなく、ごく小さな三角関数の誤差ではなく読みやすい0を表示できます。検算するには、直交形式の値を複素数の乗算で3乗するか、極形式の絶対値を3乗して角度を3倍してください。通常の浮動小数点精度の範囲で、入力した実部と虚部に戻ります。また、3つの結果の絶対値が等しく、隣り合う角度が120度ずつ異なることも確認できます。この処理は決定的で、通信や乱数を使いません。APIは1件あたり$0.002で、このページでは同じ計算を直接実行できます。
活用例
複素代数の課題を確認します
ド・モアブルの公式で手計算した解答を、2種類の形式で示される3つすべての根と比較できます。
グラフ用の根を準備します
直交座標を点として使い、極角から120度の対称性を把握できます。
数値計算へ値を渡します
安定した実部と虚部を、工学、信号処理、数学の処理へコピーできます。
よくある質問
なぜ答えが3つあるのですか?
0ではない複素数では、偏角を3で割る前に完全な回転を加えると、120度ずつ離れた3つの異なる角度が得られるためです。
入力が0の場合はどうなりますか?
表示される3つの根はすべて 0 + 0i で重なります。この特別な場合は、実用上の規約として角度を0と表示します。
角度はどの単位で返されますか?
各極形式の結果にはラジアンと度の両方が含まれるため、入力時に角度単位を選ぶ必要はありません。
根の角度が180度を超えることがあるのはなぜですか?
k = 0、1、2 に対するド・モアブルの直接の順序を使うためです。同終辺角は同じ複素平面上の点を表します。
APIでの計算料金はいくらですか?
APIは1件あたり$0.002です。このページのブラウザーでも無料で計算できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/algebra/complex-cube-roots \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"real":8,"imaginary":0}'const res = await fetch("https://api.kit.forhosting.com/algebra/complex-cube-roots", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"real": 8,
"imaginary": 0
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/algebra/complex-cube-roots",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"real": 8,
"imaginary": 0
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/algebra/complex-cube-roots", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"real":8,"imaginary":0}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"real":8,"imaginary":0}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/algebra/complex-cube-roots", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"real": 8,
"imaginary": 0
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "algebra.complex_cube_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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |