- ベストアンサー
Excelで3次方程式を解く方法
3次方程式には解の公式が存在していて、この公式をExcelのセルに入力して、係数を入れれば答えが出るようにしたいのですが、どうも複素数の3乗根が取り扱えないようでエラーとなってしまいます。 実数解を持つことは分かっている場合でも、計算途中で複素数の3乗根が出てくるので答えが出ません。 これを回避する方法をご存知でしたら教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
複素数 x + iy の 3乗根を求めるなら, 極座標で r e^(iθ) としてから r^(1/3) e^(iθ/3) = r^(1/3) cos (θ/3) + i r^(1/3) sin (θ/3) とするのが簡単かな. r = (x^2 + y^2)^(1/2), θ = atan2(x, y) です. x = y = 0 だと困りますが, まあなんとかしてください.
その他の回答 (2)
- age_momo
- ベストアンサー率52% (327/622)
>変数の列に対して解の列が自動的に作られると便利になります。 >いい方法はあるでしょうか? 数値解でいいなら関数を作るのが一番簡単かと。。。 手抜きですが、一応動作はすると思います。 残りの解は因数分解してから解の公式で求めてください。 Function 三次式解(係数1 As Double, 係数2 As Double, 係数3 As Double, 係数4 As Double) As Double Dim ct As Integer Dim temp As Double, tempx As Double For ct = 1 To 1000 temp = 係数1 * tempx ^ 3 + 係数2 * tempx ^ 2 + 係数3 * tempx + 係数4 tempx = tempx - temp / (3 * 係数1 * tempx ^ 2 + 2 * 係数2 * tempx + 係数3) If Abs(temp) < 10 ^ -16 Then Exit For Next 三次式解 = tempx End Function
お礼
ご教授ありがとう御座いました。 あのあとExcelの関数をちゃんと調べましたら、IMPOWERが整数乗だけでなく分数乗も扱えると判明しました。 これで試してみます。 ありがとうございました。
- c80s3xxx
- ベストアンサー率49% (1634/3294)
数値解ではだめなんですか?
補足
数値解ではだめか?とのご質問ですが、これはゴールシーク機能ではだめか?ということでしょうか。 やりたいのは、係数がいろいろ変化したときの解を求めて、その結果を横軸変数、縦軸解、でグラフ化したいのです。変数ごとに計算させて結果を別のセルに貼り付けて、とやっていると非常に時間がかかるので、できれば変数の列に対して解の列が自動的に作られると便利になります。 いい方法はあるでしょうか?
お礼
ご教授ありがとう御座いました。 あのあとExcelの関数をちゃんと調べましたら、IMPOWERが整数乗だけでなく分数乗も扱えると判明しました。 これで試してみます。 ありがとうございました。