您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页高斯消去法,及列主元消去法解线性方程组MATLAB代码

高斯消去法,及列主元消去法解线性方程组MATLAB代码

来源:爱问旅游网


高斯列主元消去法解线性方程

function x=gaussLinearEquation(A,b)

%¸ 用Gauss列主主元消去法解线性方程组Ax=b

disp('Ô­·½³ÌΪAX=b£º')

A

b

disp('------------------------')

n=length(b);

eps=10^-2;

for k=1:n-1

%ÕÒÁÐÖ÷Ôª

[mainElement,index]=max(abs(A(k:n,k)));

index=index+k-1;%indexÔÚA(k:n,k)ÖеÄÐкÅת»»ÎªÔÚAÖеÄÐкÅ

if abs(mainElement)disp('ÁÐÔªËØÌ«Ð¡£¡£¡');

break;

elseif index>k

%ÁÐÖ÷ÔªËùÔÚÐв»Êǵ±Ç°ÐУ¬½«µ±Ç°ÐÐÓëÁÐÖ÷ÔªËùÔÚÐн»»»

temp=A(k,:);

A(k,:)=A(index,:);

A(index,:)=temp;

end

%ÏûÔª

for i=k+1:n

m(i,k)=A(i,k)/A(k,k);%A(k,k)½«A(i,k)ÏûΪ0Ëù³ËϵÊý

A(i,k:n)=A(i,k:n)-m(i,k)*A(k,k:n);%µÚiÐÐÏûÔª´¦Àí

b(i)=b(i)-m(i,k)*b(k);%»¹ÓÐbÒ²ÐèÒª´¦Àí£¡£¡

end

end

disp('ÏûÔªºóËùµÃµ½µÄÉÏÈý½ÇÕóÊÇ')

A

%»Ø´ú

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

for i=n-1:-1:1

%sum(A(i,i+1:n).*b(i+1:n)')±íʾÒÑÖª

b(i)=(b(i)-sum(A(i,i+1:n).*b(i+1:n)'))/A(i,i);

end

clear x;

x=b;

disp('AX=bµÄ½âxÊÇ')

x

在控制台输入:

>> A=[1.003 0.333 1.504 -0.333;

-2.011 1.455 0.506 2.956;

4.329 -1.952 0.006 2.087;

5.113 -4.004 3.332 -1.112];

b=[ 3.005,5.407,0.136,3.772 ]';

>> gaussLinearEquation(A,b)

原方程为AX=b:

A =

1.0030 0.3330 1.5040 -0.3330

-2.0110 1.4550 0.5060 2.9560

4.3290 -1.9520 0.0060 2.0870

5.1130 -4.0040 3.3320 -1.1120

b =

3.0050

5.4070

0.1360

3.7720

------------------------

消元后所得到的上三角阵是

A =

5.1130 -4.0040 3.3320 0 1.4380 -2.8151 0 0 3.0398 -1.1120

3.0285

-2.4703

0 0.0000 0 4.0565

AX=b的解x是

x =

3.8086

3.5083

-0.8068

-0.2402

ans =

3.8086

3.5083

-0.8068

-0.2402

高斯消去法解方程

function x = gauss(A, b)

n = length(b);

for k = 1 : n-1

if A(k,k)==0

fprintf('Error: the %dth pivot element equal to zero!\\n',k);

return;

end

index = [k+1:n];

m = -A(index,k)/A(k,k);

A(index,index) = A(index,index) + m*A(k,index);

b(index) = b(index) + m*b(k);

end

x = zeros(n,1);

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

for i = n-1:-1:1

x(i) = ( b(i) - A(i,[i+1:n])*x([i+1:n]) )/A(i,i);

end

>> A=[1 1.355 1.4 2;

3 3.5 0.22 1;

0.5 2 2.1 3;

0.3 0.1 -0.55 2];

b=[2.00,1.00,0.55,3.00]'

b =

2.0000

1.0000

0.5500

3.0000

>> gauss(A,b)

ans =

2.5225

-2.2313

0.0177

1.2381

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务