超鬆弛迭代法求方法組的解(Python實現)

2021-09-23 01:59:35 字數 1206 閱讀 2339

求方程組

5x_1+2x_2 + x_3 = -12 \\ -x_1 + 4x_2+2x_3 = 20 \\ 2x_1+-3x_2+10x_3=2 \end \right.

⎩⎨⎧​5x

1​+2

x2​+

x3​=

−12−

x1​+

4x2​

+2x3

​=20

2x1​

+−3x

2​+1

0x3​

=2​

超鬆弛迭代其實基於高斯-塞德爾迭代的

可以對比著之前的高斯迭代法對比一下效果

高斯–塞德爾迭代法求方程組的解(python實現)

import numpy as np

a = np.array([[

5.0,2,

1],[

-1,4

,2],

[2,-

3,10]

])b = np.array([-

12.0,20

,3])

x0 = np.array(

[1.0,1

,1])

x = np.array(

[0.0,0

,0])

w =1.5

times, mt =0,

1000

while times < mt:

tempx = x0.copy(

)for i in

range(3

):temp =

0for j in

range(3

):if i != j:

temp += x0[j]

* a[i]

[j] x[i]

=(b[i]

- temp)

/ a[i]

[i] x0[i]

= x[i]

x = w * x +(1

-w)* tempx

caltemp =

max(

abs(x - tempx)

) times +=

1if caltemp <1e-

4:break

print

(times)

print

(x)

逐次超鬆弛迭代法SOR

sor 逐次超鬆弛迭代法 本函式只能求解當a為n n的矩陣 2010 10 21 function x sor a,b,w tic if nargin 2 w 1.23 預設鬆弛因子w 1.23 endif w 0 error matlab sor argument w should be larg...

牛頓迭代法求方程解

牛頓迭代法 newton s method 又稱為牛頓 拉夫遜方法 newton raphson method 它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。方法使用函式f x 的泰勒級...

雅克比迭代法求方程組的解(Python實現)

求方程組 5 x1 2 x2 x 3 12 x1 4x2 2x3 202x1 3x 2 10x 3 2 5x 1 2x 2 x3 12 x1 4 x2 2 x3 20 2x1 3x2 10x3 2 上面方程當然是非常容易求解的,但是方程規模變大的時候 比如係數矩陣是100w 100w的時候,這時候,...