作业帮 > 数学 > 作业

Matlab 共轭梯度法求解任意线性方程组!

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:数学作业 时间:2024/05/24 01:42:28
Matlab 共轭梯度法求解任意线性方程组!
function x = cg(A,b)
tol=1e-10;
r = b + A*b;
w = -r;
z = A*w;
s = w'*z;
t = (r'*w)/s;
x = -b + t*w;
for k = 1:numel(b);
r = r - t*z;
if( norm(r) < tol )
return;
end
B = (r'*z)/s;
w = -r + B*w;
z = A*w;
s = w'*z;
t = (r'*w)/s;
x = x + t*w;
end
Matlab 共轭梯度法求解任意线性方程组!
你这样问不解决问题的,共轭梯度法虽然是最简单的Krylov子空间方法,但是对一般的本科生而言仍然比较困难,你得找本教材来慢慢看,把整个推导过程自己算一遍,这样才能搞明白程序的原理.