線形方程式の反復解法 - ヤコビの反復法

  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

  

おすすめ

転載: www.cnblogs.com/guliangt/p/12119352.html