プロが教えるわが家の防犯対策術!

三次方程式を解くプログラムを作成したいです。
三次方程式a*x3+b*x2+c*x+d=0を解くのに,
カルダノの公式がありますが,解が全て実数解であるとしても,
計算過程で虚数が存在することを考えなければなりません。

しかし,a=1で解が実数解の場合,
計算過程で虚数を考えなくても,簡単に実数解を求める
ことができる(エクセルで簡単に)と聞きました。
ニュートン法等の収束計算を用いる方法ではないようです。

このような方法をご存知でしたら,詳しく教えてください。
よろしくお願いいたします。

A 回答 (4件)

ビエタの解


http://ja.wikipedia.org/wiki/%E4%B8%89%E6%AC%A1% …
なら、計算過程で虚数を使わずに実数解が出てきます。
    • good
    • 0
この回答へのお礼

この方法なら簡単に実数解だけを求められるみたいですね。
有難うございます。

お礼日時:2007/12/05 13:57

三次に限らず多項式f(x)の零点を計算する話にします。



その目的でニュートン法を使う場合、式を大幅に簡単にできるので、見かけはニュートン法っぽくなくなります。

また「二次因数分解」を使うこともできます。すなわち多項式f(x)が実係数の二次式(x^2-ux-v)で割り切れるようにu,vを決定する。この際にニュートン法を利用しますが。

収束が遅くてあまり実用的とは言えないけれども、「商差法(Quotient-difference method)」てのがあり、これはニュ-トン法を全然使いません。
    • good
    • 0

>計算過程で虚数を考えなくても,簡単に実数解を求める


ことができる(エクセルで簡単に)と聞きました。

参考URLにEXCELによる具体的な実数解の求め方が掲載されています。
3次方程式のソルバー(解くためのソフト)は標準でインストールされていないので、OFFICEのCD-ROM中にあるソルバーをインストールしないといけないようです。参考URLに詳細が載っていますのでご覧下さい。

参考URL:http://members.jcom.home.ne.jp/dbp/Excel/excel_c …
    • good
    • 0

a = 1 のときに簡単に解けるんだったら, a が 1 でないときでも簡単に解けるはず (全体を a で割るだけ, だから) です.


でもって, カルダノによる三次方程式の解法では, 「3個の異なる実数解」になるときには必ず「虚数の 3乗根」が出てきます. 「不尽根」というやつです. 「計算過程で虚数が存在することを考えなければなりません」よりもっと強い結果です.
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!