Matlabで一次方程式を解く (3) 共役勾配法と最急降下法の比較

1.共役勾配法


ここに画像の説明を挿入
教科書計算例P113:行列Aの次数nをそれぞれ100、200、400として一次方程式系Ax=bを共役勾配法で解き、その計算結果が信頼できるかどうかを指摘せよ。

共役勾配法の解法結果は次のとおりです。
(1) n=100 の場合、
50 回の反復後に精度要件が満たされ、誤差曲線が下図に示されます。
ここに画像の説明を挿入

(2) n=200 の場合、
100 回の反復後に精度要件が満たされ、誤差曲線が下の図に示されます。
ここに画像の説明を挿入

(2) n=400 の場合、
200 回の反復後に精度要件が満たされ、誤差曲線が下の図に示されます。

ここに画像の説明を挿入
(1) 結果の信頼性は
n=100、反復は 50 回、誤差は急速に減少し、1.07 10-12 に達し、最終結果 x=(1 1 ... 1)T が式に取り込まれます。 、これは質問の意味に準拠しています。
n=200、100 回の繰り返し、エラーは急速に減少し、6.23
10-12 に達し、最終結果 x=(1 1 ... 1)T が式に取り込まれ、質問の意味に一致します。
n=400, 200 回の繰り返しで、誤差は急速に減少し、2.14*10-11 に達し、最終結果 x=(1 1 ... 1)T が式に取り込まれ、質問の意味に一致します。
(2) 利点
構造が単純で、一貫性が高く、次数が大きい対称行列演算に適しています。
(3) 制限
このアルゴリズムは、A の一貫した対角要素を持つ疎な対称配列にのみ適用でき、矛盾した対角要素には適用できません。同様に、結果の b ベクトルは、個々の要素が非ゼロで他の要素がゼロの場合に適しています。

第二に、最急降下法

(1) n=100 の場合、
精度が 1*10-6 の場合、精度要件を満たすには 19465 回の反復が必要です。

ここに画像の説明を挿入

(2) n=200 の場合、
精度が 1*10-6 の場合、精度要件を満たすには 68688 回の反復が必要です。
ここに画像の説明を挿入

(3) n=400 の場合、
精度が 1*10-6 の場合、精度要件を満たすには 239671 回の反復が必要です。
ここに画像の説明を挿入

上記の結果から、同じ精度が満たされる場合、最急降下法の反復回数は共役勾配法の反復回数よりもはるかに多いことがわかります。

3つ目は、両者の比較

n=200 を例に、共役勾配法と最急降下法の反復回数による誤差曲線を下図のように描きます。ここに画像の説明を挿入
分析の結果、共役勾配法の反復回数が n 回に達すると、誤差が急速に減少するのに対し、最急降下法の誤差はよりゆっくりと減少し、収束速度が遅くなることを示しています。

おすすめ

転載: blog.csdn.net/qq_43517528/article/details/123510123