C 解方程組之Jacobi迭代法

2021-08-19 17:15:26 字數 1493 閱讀 5919

迭代過程

首先將 方程組中的

係數矩陣

a分解成三部分,即:

a = l+d+u,如圖1所示,其中

d為對角陣,

l為下三角矩陣,

u為上三角矩陣。

之後確定迭代格式,x^(k+1) =

b*x^(k) +

f ,(這裡^表示的是上標,括號內數字即迭代次數),如圖2所示,其中

b稱為迭代矩陣,雅克比迭代法中一般記為

j。(k = 0,1,......)

再選取初始迭代

向量x^(0),開始逐次迭代。

核心部分,迭代實現:

public void calcu5()

if(count2==n)

", count2);break; }

for(int i=0;i

完整:using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

namespace jacobi迭代

set

}double[,] a;

public double[,] a

set

}double x;

public double x

set

}double e = 0.00001;

public double e

set

}private double x2;

public double x2

set

}public void input()

console.writeline("請輸入各行係數(','或' '隔開):");

for (int i = 0; i < n; i++)}}

public void calcu5()

if(count2==n)

", count2);break; }

for(int i=0;i

執行結果:

請輸入階數: 4

請輸入各行係數(','或' '隔開):

10 -1 2 0 6

-1 11 -1 3 25

2 -1 10 -1 -11

0 3 -1 8 15

方程係數為:

10.00   -1.00    2.00    0.00    6.00

-1.00   11.00   -1.00    3.00   25.00

2.00   -1.00   10.00   -1.00  -11.00

0.00    3.00   -1.00    8.00   15.00

迭代發散!!!

方程組的解是:

x1=1

x2=2

x3=-1

x4=1

請按任意鍵繼續. . .

數值計算(迭代法解方程組)

ax b經過一定的變換成x bx f 然後從初始向量出發,計算xk 1 b xk f 經過一定的次數後得到xk 1會收斂於真正的值。問題來了?如何得到x bx f這種形式?如何證明收斂?接下來的幾個演算法都是圍繞這個問題。coding utf 8 import numpy as np a packa...

求解線性方程組 Jacobi迭代法

求解線性方程組 jacobi迭代法 求解線性方程組 jacobi迭代法 include include using namespace std 二維陣列動態分配模板 template t allocation2d int m,int n return a 一維陣列動態分配模板 template t ...

jacobi迭代法求解線性方程組

首先將 方程組中的 係數矩陣 a分解成三部分,即 a l d u,如圖1所示,其中 d為對角陣,l為下三角矩陣,u為上三角矩陣。之後確定迭代格式,x k 1 b x k f 這裡 表示的是上標,括號內數字即迭代次數 如圖2所示,其中 b稱為迭代矩陣,雅克比迭代法中一般記為 j。k 0,1,再選取初始...