加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Gauss 消去 因子表法求解线性方程组 MATLAB代码

(2012-05-08 21:49:49)
标签:

gauss

消去

因子表法

求解线性方程组

matlab代码

杂谈

分类: MATLAB学习

%C.zhou,2012.5.8

%因子表法的优点是当系数矩阵不变时候,解不同的b对应的解向量时候,无需重复高斯消去,进行一次高斯消

%去后即可运用因子表进行回代。整个代码思路完全可以用C重写,但未考虑稀疏技术,值得用稀疏技术尝试。
clc;
clear;


a=[9 2 40 10 1;13 1 2 4 2 ;1 5 2 4 4;2 1  4 8 19;2 3 5 9 16 ];

 

aa=a;
[n,n]=size(a);

b=[7 3 10 5 1]';

bb=b;
%形成因子表
for k=1:n-1
    for i=k:n
        if i==k
            a(i,i)=1./a(i,i);
           
            for t=k+1:n
                a(i,t)=a(i,t)*a(i,i);
            end
        else
            for j=k+1:n
                a(i,j)=a(i,j)-a(k,j)*a(i,k);
            end
        end
    end
       
end

a(k+1,k+1)=1/a(k+1,k+1);
%因子表形成结束 前代过程

 


%回代过程
b(1)=b(1)*a(1,1);
for k=2:n
    for j=1:k-1
        b(k)=b(k)-b(j)*a(k,j);
    end
    b(k)=b(k)*a(k,k);
end

x(1)=b(n);

for i=2:n
    sum=0;
    for j=1:i-1
        sum=sum+x(j)*a(n-i+1,n-j+1);
    end
   
    x(i)=b(n-i+1)-sum;
end


%解向量重新调整顺序
for i=1:n
    xx(i)=x(n-i+1);
end

 valerror=inv(aa)*bb-xx';
 


 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有