用高斯消元法解线性方程组 的MATLAB程序

用高斯消元法解线性方程组 的MATLAB程序,第1张

1、下图是需要求解的线性方程组

2、打开MATLAB,利用左除法(\)求解上述线性方程组。输入如下代码:close allclear allclc% MATLAB左除法(\)求解线性方程组,A = [1 2 3-1 3 79 0 3]b = [1 4 7]'x = A\b。

3、保存和运行上述代码,利用左除法(\)得到线性方程组的解。

4、用求逆法(inv)求解线性方程组,输入如下代码:close allclear allclc,% MATLAB求逆法(inv)求解线性方程组,% A是线性方程组等号左边系数构成的矩阵。

5、保存和运行上述代码,利用求逆法(inv)得到线性方程组的解如下。

6、最后,可以看到左除法(\)和求逆法(inv)求得的线性方程组解是一样的。

function [x,XA]= Gauss (A,b) 

N = size(A)

n = N(1)

index = 0

pos = zeros(n,1)

B = A

for i=1:n

    me = max(abs(B(1:n,i)))         %选取列主元

    for k=1:n

        if(abs(A(k,i))==me)

            index = k

            pos(i,1) = k            %保存列主元所在的行号

            break

        end

    end

    m = A(index,i)

    for j=1:n

        if(j ~= index)

            l = A(j,i)          

            A(j,1:n)=A(j,1:n)-l*A(index,1:n)/m

            b(j)=b(j)-l*b(index)/m   %消元

        end

    end

    B = A

    for k=1:n

        if(pos(k,1)~=0)

            B(pos(k,1),1:n)=0        %避免列主元在同一行

        end

    end

end

XA = A

for i=1:n

    x(i,1)=b(pos(i,1))/A(pos(i,1),i)  %求解

end

测试用例:

>>A=magic(3)x=ones(3,1)b=A*x

b =

    15

    15

    15

>>xx=Gauss(A,b)

xx =

     1

     1

     1

>>xx-x

ans =

     0

     0

     0

>>


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/7780691.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存