用matlab解线性方程组
2008-04-12 17:00
一。高斯消去法
1.顺序高斯消去法
直接编写命令文件
a=[]
d=[]'
[n,n]=size(a);
c=n+1
a(:,c)=d;
for k=1:n-1
a(k+1:n, k:c)=a(k+1:n, k:c)-(a(k+1:n,k)/ a(k,k))*a(k, k:c); %消去
end
x=[0 0 0 0]' %回带
x(n)=a(n,c)/a(n,n);
for g=n-1:-1:1
x(g)=(a(g,c)-a(g,g+1:n)*x(g+1:n))/a(g,g)
end
2.列主高斯消去法
*由于“[r,m]=max(abs(a(k:n,k)))”返回的行是“k:n,k”内的第几行,所以要通过修正来把m 改成真正的行的值。该程序只是演示程序,真正机器计算不需要算主元素所在列以下各行应为零的值。
直接编写命令文件
a=[]
d=[] '
[n,n]=size(a);
c=n+1
a(:,c)=d; %(增广)
for k=1:n-1
[r,m]=max(abs(a(k:n,k))); %选主
m=m+k-1; %(修正操作行的值)
if(a(m,k)~=0)
if(m~=k)
a([k m],:)=a([m k],:); %换行
end
a(k+1:n, k:c)=a(k+1:n, k:c)-(a(k+1:n,k)/ a(k,k))*a(k, k:c); %消去end
end
x=[0 0 0 0]' %回带
x(n)=a(n,c)/a(n,n);
for g=n-1:-1:1
x(g)=(a(g,c)-a(g,g+1:n)*x(g+1:n))/a(g,g)
end