数值分析MATLAB算法程序附录
<2017.03.29> 刘春蕾 于发呆中。。。
Chapter 1
以下是本人粗浅做法,由于能力视野有限,不妥当之处,还希望诸位不吝提出宝贵建议与意见。谢谢。
- %算法1-1 高斯顺序消元法
%程序1.1 顺序高斯消元法 xmyguass.m
function [x]=xmygauss(A,b,flag) %输入系数矩阵A,右端项b,是否显示中间过程的参数flag,取值为0,1;输出解x
n=length(b);
for k=1:(n-1)
m=A(k+1:n,k)/A(k,k);
A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-m*A(k,k+1:n);
b(k+1:n)=b(k+1:n)-m*b(k);
A(k+1:n,k)=zeros(n-k,1);
if flag~=0
C=horzcat(A,b) %horzcat函数
end
end
x=zeros(n,1);
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=(b(k)-A(k,k+1:n)*x(k+1:n))/A(k,k);
end
- 高斯列主元素法
function [x]=xmylguass(A,b,flag)
if nargin<3,flag=0;end
n=length(b);
for k=1:(n-1)
[ufo,ind]=max(abs(A(k:n,k)));
ind=ind+k-1;
if ind>k
A([k,ind],:)=A([ind,k],:);
b([k,ind],:)=b([ind,k],:);
end
a=A(k+1:n,k)/A(k,k);
A(k+1:n,k+1:n)=A(k+1:n,k+1:n)-a*A(k,k+1:n);
b(k+1:n)=b(k+1:n)-a*b(k);
A(k+1:n,k)=zeros(n-k,1);
if flag~=0
C=horzcat(A,b);