- 积分
- 9
- 注册时间
- 2008-12-23
- 仿真币
-
- 最后登录
- 1970-1-1
|
楼主 |
发表于 2009-4-23 15:33:42
|
显示全部楼层
来自 上海
本帖最后由 hawking2006 于 2009-4-23 15:36 编辑
其实我只是一个MATLAB初学者,现在也就只能写些小的脚本和函数文件。
刚刚写的一个自己认为很大的文件就是这个高斯消去法的程序了。
function b=xcf(A,b)
%这是一个使用高斯消去法解线性方程组的程序
%copyright_hawking 2009-04-15
n = size(A,1);
for p = 1:n-1
%去除A(p,p)==0的补丁
[tem,t] = max(abs(A(p:n,p)));
t = t+p-1;
A([t,p],: ) = A([p,t],: );
b([t,p]) = b([p,t]);
if A(p,p) == 0
error('A is singular .det A == 0!!');
end
for k = p+1:n %去除循环的补丁——使用矩阵操作
t = -A(k,p) / A(p,p); %c = p+1:n;
A(k,: ) = A(k,: ) + t*A(p,: ); %A(c,c) = A(c,c) - A(c,p)*(A(p,c)/A(p,p));
b(k) = b(k) + t*b(p); %b(c) = b(c) -b(1:p)*(A(p,c)/A(p,p));
end
end
for k = n:-1:1
b(k) = (b(k)-A(k,k+1:n)*b(k+1:n))/A(k,k);
end
%测试软件的程序
%for Z = 1:1000
%n = ceil(rand*1000) + 1;
%B = rand(1000);
%b = rand(1000,1);
%x = xcf(B,b);
%if norm(A*x-b)>10e-5
%A*x-b pause
%end
%end
来发帖只是因为那个困惑,很感谢这么多人来关注我的提问,同时也觉得这个论坛的水的确很深。
学习了!!! |
|