MATLAB实验一 解线性方程组的直接法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

附:高斯列主消去法源程序代码

function [x,det,index]=Gauss(A,b)

% ÇóÏßÐÔ·½³Ì×éµÄÁÐÖ÷ÔªGaussÏûÈ¥·¨£¬ÆäÖÐ

% A --- 方程组矩阵

% b --- 方程组右端

% x --- 方程组的解

% det ---方程组行列式

% index --- index=0表示求解失败,index=1表示求解成功¦

[n,m]=size(A); nb=length(b);

if n~=m

error('The rows and columns of matrix A must be equal!');

return;

end

if m~=nb

error('The columns of A must be equal the dimension of b!');

return;

end

index=1; det=1; x=zeros(n,1);

for k=1:n-1

% 选主元

a_max=0;

for i=k:n

if abs(A(i,k))>a_max

a_max=abs(A(i,k)); r=i;

end

end

if a_max<1e-20

index=0;

return;

end

% 交换两行

if r>k

for j=k:n

z=A(k,j); A(k,j)=A(r,j); A(r,j)=z;

end

z=b(k); b(k)=b(r); b(r)=z; det=-det;

end

% 消元过程

for i=k+1:n

m=A(i,k)/A(k,k);

for j=k+1:n

A(i,j)=A(i,j)-m*A(k,j);

end

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

end

det=det*A(k,k);

end

det=det*A(n,n);

% 回代过程

if abs(A(n,n))<1e-20

index=0;

return;

end

for k=n:-1:1

for j=k+1:n

b(k)=b(k)-A(k,j)*x(j);

end

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

end

相关文档
最新文档