計算機數值方法 雅可比迭代和高斯賽德爾迭代

2021-10-05 07:33:25 字數 2931 閱讀 3978

其實迭代法前面已經學習過啦,這裡的迭代是在前面迭代的基礎上的高階形式——即解決線性方程組的問題。

下面簡單介紹雅克比迭代的基本流程。

有一線性方程組,ax=

bax=b

ax=b

,其中:

我們可以將其化為以下形式:

x i=

bxj+

f,(i

=1,2

,3......n,

j=1,

2,3,

¬i..

...n

)x_i=bx_j+f,(i=1,2,3......n,j=1,2,3,\lnot i.....n)

xi​=bx

j​+f

,(i=

1,2,

3...

...n

,j=1

,2,3

,¬i.

....

n)則迭代形式可化為:

x i=

bxi+

1+fx^=bx^+f

xi=bxi

+1+f

j ac

obijacobi

jacobi

迭代法的流程是:

若係數矩陣a

aa是非奇異矩陣且aii

̸≠0a_\not\ne0

aii​​

​=0

,則可以將a

aa**成:

a =d

+l+u

a=d+l+u

a=d+l+

u其中d

dd為對角矩陣,l

ll為下三角矩陣,u

uu為上三角矩陣

則迭代公式可以轉換為:

x i=

−d−1

(l+u

)xi+

1+fx^=-d^(l+u)x^+f

xi=−d−

1(l+

u)xi

+1+f

整理得:

具此求解.

在雅可比迭代的流程中我們不難發現

前一步計算出來的xik

+1x^_i

xik+1​

在下一步中並沒有利用到,而新計算出來的值必定比前置更為精確,故為了使計算更為精確,我們將下一步中的xik

x^k_i

xik​

替換為上一步中計算出來的xik

+1x^_i

xik+1​

進行計算,這種演算法就叫做高斯-賽德爾迭代(gauss-seidel)

化簡得到:

雅可比迭代:

#include

using

namespace std;

typedef pair<

int,

int> pii;

#define int long long

const

int n =

1e3+10;

double a[n]

[n], b[n]

, x[n]

;int n;

void

jacobi()

x2[i]

=(b[i]

- cnt)

/ a[i]

[i];

}for

(int i=

0; i < n; i++

) x[i]

=x2[i];}

for(

int i =

0; i < n; i++

)printf

("x[%d]=%lf%c"

, i +

1, x2[i]

, i == n -1?

'\n'

:' ');

}signed

main()

高斯賽德爾迭代:

#include

using

namespace std;

typedef pair<

int,

int> pii;

#define int long long

const

int n =

1e3+10;

double a[n]

[n], b[n]

, x[n]

;int n;

void

gauss_seidel()

x[i]

=(b[i]

- cnt)

/ a[i]

[i];}}

for(

int i =

0; i < n; i++

)printf

("x[%d]=%lf%c"

, i +

1, x[i]

, i == n -1?

'\n'

:' ');

}signed

main()

雅可比迭代:

在這裡插入**片
高斯-賽德爾迭代:

在這裡插入**片

計算機數值方法之代數插值C語言

使用拉格朗日插值法或牛頓插值法求解 已知f x 在6個點的函式值如下表所示,運用插值方法,求f 0.596 的近似值。拉格朗日插值法比牛頓插值法易理解,但是運算速度慢,程式繁多,而且如果是不斷插如新資料,拉格朗日需要重新算一遍,而牛頓插值法則不需要,牛頓插值法唯一需要注意的是發現對角線元素為差商,用...

計算機運算方法和運算部件

整數十進位制轉二進位制有模2取餘法。小數轉二進位制有乘2取整法。二進位制轉十六進製制 二進位制從低位到高位四個為一組 高位不夠補0 轉換為十六進製制。反之為十六進製制轉換二進位制。十進位制轉十六進製制 第一種先把十六進製制轉換為二進位制,再把二進位制轉換為十六進製制。第二種模16取餘法,十六進製制即...

計算機檢查漏洞方法和相應處理

近來 事件頻頻發生,我們身邊的朋友可能有qq e mail和遊戲賬號被盜事件發生。現在的 技術有朝著大眾化方向發展的趨勢,能夠掌握 他人系統技術的人越來越多了,只要你的電腦稍微有點系統bug或者安裝了有問題的應用程式,就有可能成為他人的肉雞。如何給一台上網的機器查漏洞並做出相應的處理呢?一 要命的埠...