1.コード
%%ヤコビの反復法(この望ましくない病理学的マトリックスの溶液のための反復法) %%線形方程式M * X = B、Mは正方行列であり、X0は初期解ベクトルであり、εは、制御精度で 機能JIM = Jacobian_iteration_method(Mは、B、X0、イプシロン) [M、N - ] =サイズ(M); D = DIAG(M); L =ゼロ(M、N-); U- =ゼロ(M、N-); D =ゼロ(M、N- ); デルタ= 0; UB = 100; X- =ゼロ(M、UB); X - (:、1)= X0; x_end =ゼロ(M ,. 1); k_end = 0; K = 1; E X_DELTAの= X-です。。床=(ABS(ログ(イプシロン))); 私は= 1 :. 1:M。 J = 1 :. 1:N-。 IF I> J L(I、J)= -M(I、J); ELSEIF I < J U-(I、J)= -M(I、J); ELSEIF J == I D(I、J)= D(I); エンド エンド エンド B = INV(D)*(U-L +); F INV =(D)* B; X_real = INV(M)* B。 K = 1 :. 1:UB。 (:、K)でX_DELTAの= X-(:, K)-X_real; デルタ=(中X_DELTAの(:、K)、2)NORM; IFデルタ<イプシロン BREAK エンド X - (:、1 + K)* = X-B(: 、K)+ F; エンド DISP( '反復回数:'); K DISP( '反復解法である:'); JIM VPA =([X-(:, K)]、E); 終了
2.例
全てクリア CLCを 8:I = 1のため 、J = 1:8 I == jの場合は M(i、j)は2.1 =。 J == 1 - I ELSEIF ; M(I、J)= 1 J ELSEIF - I == 1 M(i、j)は= -1。 他の M(i、j)は= 0; エンド エンド エンド B = [1 2 3 4 4 3 2 1] '。 X0 = [1 1 1 1 1 1 1 1] '。 イプシロン= 1E-4。 S = Jacobian_iteration_method(M、B、X0、イプシロン) M \ B
結果
反復数: K = 73である 反復解である: S = 1.07162282 1.25046562 1.69755831 1.81519199 1.50952631 0.985363364 0.57873237 0.200592913 ANS = 1.0716 1.2504 1.6975 1.8152 1.5096 0.9853 0.5787 0.2006