
如何用matlab用列主元Gauss消去法求解方程?如何用matlab用列主元Gauss消去法求解方程?
import numpy as np
def bili(A,B,n):
for k in range(n-1):
s=[]
ls=[]
for i in range(n):
s.append(0)
ls.append(0)
for r in range(k,n):
for j in range(k,n):
if j==k:
s[r]=np.abs(A[r,k])
else:
if np.abs(A[r,j])>s[r]:
s[r]=np.abs(A[r,j])
ls[r] = (np.abs(A[r, k])) / s[r]
kmax=k
for l in range(k+1,n):
if ls[l]>ls[kmax]:
kmax=l
P=np.copy(A[k])
A[k]=A[kmax]
A[kmax]=P
Q=np.copy(B[k])
B[k]=B[kmax]
B[kmax]=Q
for j in range(k + 1, n):
Ljk = -A[j, k] / A[k, k]
for i in range(k + 1, n):
A[j, i] = A[j, i] + A[k, i] * Ljk
B[j] = B[j] + B[k] * Ljk
X = np.zeros((n, 1))
X[n - 1] = B[n - 1] / A[n - 1, n - 1]
for k in range(n - 2, -1, -1):
m = 0
for i in range(k + 1, n):
m = m + A[k, i] * X[i]
X[k] = (B[k] - m) / A[k, k]
return X
A=np.array([[3,-1,4],[-1,2,-2],[2,-3,-2]])
B=np.array([[7],[-1],[0]])
n=3
X=bili(A,B,n)
print(X)
[[2. ]
[1. ]
[0.5]]
不知道你这个问题是否已经解决, 如果还没有解决的话:
如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^