列主元高斯消去法

2025-10-28 01:12:33

1、一、题目:

2、解法:

1、程序

A=[2,1,-3,-1;3,1,0,7;-1,2,4,-2;1,0,-1,5]

b=[1;2;-1;5]

n=4 ;

A1=[A,b];

for i = 1:n-1

[XX,r] = max(abs(A1(i:n,i)));

r = r + i - 1;

if r>i

temp=A1(i,:);

A1(i,:)=A1(r,:);

A1(r,:)=temp;

end

if A1(i,i)==0 end

for p = i+1:n

A1(p,:)=A1(p,:)-A1(i,:)*A1(p,i)/A1(i,i);

end

end

A = A1(:,1:n); b = A1(:,n+1);

x(n) = b(n)/A(n,n);

for i = n-1:-1:1

x(i)=b(i);

for p=n:-1:i+1

x(i) = x(i)-A(i,p)*x(p);

end

x(i)=x(i)/A(i,i);

end

x

3、运行结果:

X=

-3.30588235294118  3.02352941176471  -1.95294117647059  1.27058823529412

4、

程序

a=input('请输入线性方程组的系数矩阵a=');

b=input('请输入b=');

[m,n]=size(a);

if m~=n

    error('此矩阵非方阵,运行截止')

end

for t=1:n-1

    i=t;h=a(t,t);

    for s=t+1:n

        if abs(h)<abs(a(s,t))

            h=a(s,t);i=s;

        end

    end

    if i~=t

        for j=1:n

            c=a(i,j);a(i,j)=a(t,j);a(t,j)=c;

        end

        c=b(i);b(i)=b(t);b(t)=c;

    end

    for i=t+1:n

        k=a(i,t)/a(t,t);

        for j=1:n

            a(i,j)=a(i,j)-k*a(t,j);

        end

        b(i)=b(i)-k*b(t);

    end

end

fprintf('经%1d次消元后的增广矩阵为\n',(n-1));

disp([a,b])

x(n)=b(n)/a(n,n);

for i=n-1:-1:1

    x(i)=b(i);

    for j=i+1:n

        x(i)=x(i)-x(j)*a(i,j);

    end

    x(i)=x(i)/a(i,i);

end

fprintf('线性方程组的解向量是');

x

5、运行结果:

经3次消元后的增广矩阵为

    3.0000    1.0000         0    7.0000    2.0000

         0    2.3333    4.0000    0.3333   -0.3333

         0   -0.0000   -3.5714   -5.7143   -0.2857

         0    0.0000         0    3.4000    4.3200

线性方程组的解向量是

x =

   -3.3059    3.0235   -1.9529    1.2706

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢