似乎无法弄清楚发生了什么,我将所有矩阵都转换为float并仍然给我一个错误。
我正在尝试根据我的教授给出的“伪代码”来实现用于线性方程组求解的高斯-赛德尔(无松弛)方法
a=((-5.0,3.0,0.0,0.0,0.0),
(3.0,-6.0,3.0,0.0,0.0),
(0.0,3.0,-6.0,3.0,0.0),
(0.0,0.0,3.0,-6.0,3.0),
(0.0,0.0,0.0,3.0,-5.0))
b=(-80.0,0.0,0.0,60.0,0.0)
def norelax(a,b,k_max,precisao):
n=5
erro_max=200.0
k=0
x=[0.0,0.0,0.0,0.0,0.0]
while abs(erro_max)>precisao and k<k_max:
for i in range(0,n):
soma_antes=0
for j in range(0,i):
soma_antes+=a[i][j]*x[j]
soma_depois=0
for j in range(i+1,n):
soma_depois+=a[i][j]*x[j]
x[i]=(b[i]-soma_antes-soma_depois)/a[i][i]
print(x)
x_anterior=x[i]
erro_max=max(x[i]-x_anterior[i]/x[i])
print(x)
k+=1
return x
print(norelax(a,b,300,0.0001))