找回密码
 注册
查看: 2828|回复: 1

共轭梯度法,请帮我分析一下那里出错了!

[复制链接]
发表于 2003-10-29 10:23:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
clear
x0=[1:1];
A=[2 0;0 200]
[M,x,k]=FR(x0,A)
________________________________________________________________________
function [M,x,k]=FR(x0,A)
x=x0;
g=A*x;
s=g(1)^2+g(2)^2;
k=0;
while s~=0
    if k==0
        p=-g;
    else
        bats=s/t;
        p=-g+bats*p;
    end
    alpha=-(p.')*A*x/((p.')*A*p);
    x=x+alpha*p;
    g=A*x;
    t=s;
    s=g(1)^2+g(2)^2;
    k=k+1;
    M(:,k)=x;
end
发表于 2003-12-6 16:02:51 | 显示全部楼层

共轭梯度法,请帮我分析一下那里出错了!

try cgs/pcg
分别为共轭梯度方法以及预处理的CG方法
edit cgs可以看到他的源码
你的算法。。。
有点乱的感觉,推荐你看看数值计算原理里相关的章节
使用CG方法,存储量p_k(搜索方向),A*p_k(A共轭向量),r_k(剩余向量),x_k(对应的结果)。另外,用内积函数dot比较简洁明
虽然CG方法可以是直接方法,但是在一般应用里,大多当作迭代方法,用norm(residual,2)2-范数判断收敛比较常用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表