四次方程式の解


10

四次方程式の解のためのオープンなC実装はありますか?

ax+bx³+cx²+dx+e=0

フェラーリのソリューションの実装を考えています。ウィキペディアで、係数の可能​​な符号の組み合わせの一部に対してのみ、解が計算的に安定していることを読みました。しかし、私は幸運かもしれません...コンピュータ代数システムを使用して分析的に解決し、Cにエクスポートすることによって実用的な解決策を得ました。しかし、テスト済みの実装がある場合、これを使用したいと思います。私は高速な方法を検索し、一般的なルートファインダーを使用しないことを好みます。

本当の解決策だけが必要です。


すべての(実際の)ソリューションが同時に必要ですか?GertVdEが以下に述べるように、閉じた形式のソリューションで安定性の問題がある場合、ルート探索アルゴリズムを使用しない理由は実際にはありません。
Godric Seer 2012

3
これが非線形代数にタグ付けされているのはおかしいです。なぜなら、すでにヘッセンベルク形式になっているコンパニオン行列の固有値を簡単に計算でき、QRスイープを適用するのはかなり簡単なためです。
Victor Liu

2
ACM TOMS(Algorithm 954)で公開されている3次/ 4次ソルバーをご覧ください。そのジャーナルに入るコードは通常非常に高品質です。論文自体はペイウォールの背後にありますが、コードはこのリンクからダウンロードできます。
GoHokies 2017年

...(後の編集)ACMコードはFORTRAN 90で記述されていますが、私の第一印象は、多くの努力をしなくてもCから呼び出すことができるということです。
GoHokies 2017年

1
@GoHokiesこの質問には良い回答だと思うので、コメントを回答に変換する必要があると思います。特に、リンクされた論文は通常の数値の不安定性を回避することに成功しており、それを行うことは決して簡単なことではありません。
キリル

回答:


20

数値的に非常に不安定になる傾向があるため、閉じた形のソリューションを使用しないことを強くお勧めします。判別式やその他のパラメーターの評価の方法と順序には細心の注意を払う必要があります。

古典的な例は、次方程式です。として根を計算すると、多項式で問題が発生します。分子。を計算する必要があり。、X 1 2 = - B ± aバツ2+bバツ+c=0 B»4CX1=- B+SIGNB

バツ12=b±b24ac2a
b4ac
バツ1=b+sgbb24ac2a;バツ2=ca1バツ1

Highamの傑作「数値アルゴリズムの精度と安定性」(第2版、SIAM)は、直接探索法を使用して、古典的な分析3次解が非常に不正確な結果を与える3次多項式の係数を見つけます。彼の例はです。この多項式の場合、根は十分に分離されているため、問題は悪条件ではありません。ただし、分析アプローチを使用して根を計算し、これらの根の多項式を評価する場合、安定した標準法(コンパニオンマトリックス法)を使用しながら剰余を取得します。 、剰余は次数[abc]=[1.73211.2704]O102O1015。彼はアルゴリズムにわずかな変更を提案しますが、それでも、彼は残差につながる係数のセットを見つけることができますが、これは明らかに良くありません。上記の本のp480-481を参照してください。O(1011)

あなたの場合、私はベアストウの方法を適用します。これは、2次形式でのニュートン反復法(および2次式の根が解かれます)とデフレーションの反復的な組み合わせを使用します。これは簡単に実装でき、Webで利用できる実装もいくつかあります。


1
「数値的に非常に不安定になる傾向があるので、閉形式の解を使用しないことを強くお勧めします。」の意味を教えてください。これは4次多項式にのみ適用されますか、それとも一般的な規則ですか?
NoChance 2012

@EmmadKareem上記の回答を更新しました。
GertVdE 2012

3

これらを参照してください:


2
私の答えで与えられた係数を持つ多項式でこのコードを使用すると、次のことがわかります:、これは、実際のルートと比較して相対エラーがあります(コンパニオンマトリックス法を使用するOctaveのrootsコマンドを使用して計算されます)。これにはの剰余がありますが、コンパニオンマトリックスメソッドのルートには剰余があります。これで十分かどうかはあなた次第です(コンピュータグラフィックスの場合、他の一部のアプリケーションの場合はそうではありません)バツ1=1.602644912244132e+00O108O107O1015
GertVdE

1

cの数値レシピは、2次および3次の実数の根に対して閉形式の式を提供します。4次の代数解には3次の解と2次の2次の解が含まれるため、おそらく閉じた形の4次のw精度は問題外ではありません。


私は、c(press et al)の3次式の数値レシピを使用して、2e-16(フロートの精度を少し上回った)に引用されている3次の例の根を得ました。したがって、希望する理由があります。
Nemocopperfield 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.