如何用matlab用列主元Gauss消去法求解方程?

img


如何用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]]
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^