以下是同学写的,好像有错,谁能帮忙修改下呀~~或者帮忙写个共轭梯度法编程实现的程序,c,fortran,matlab...都行~~ 共轭梯度法的matlab源程序 function g=conjugate_grad_2d(x0,t) %please input this:conjugate_grad_2d([2,2],0.05) x=x0; syms xi yi a f=xi^2-xi*yi+3*yi^2; fx=diff(f,xi); fy=diff(f,yi); fx=subs(fx,{xi,yi},x0); fy=subs(fy,{xi,yi},x0); fi=[fx,fy]; count=0; while double(sqrt(fx^2+fy^2))>t s=-fi; if count<=0 s=-fi; else s=s1; end x=x+a*s; f=subs(f,{xi,yi},x); f1=diff(f); f1=solve(f1); if f1~=0 ai=double(f1); else break x,f=subs(f,{xi,yi},x),count end x=subs(x,a,ai); f=xi^2-xi*yi+3*yi^2; fxi=diff(f,xi); fyi=diff(f,yi); fxi=subs(fxi,{xi,yi},x); fyi=subs(fyi,{xi,yi},x); fii=[fxi,fyi]; d=(fxi^2+fyi^2)/(fx^2+fy^2); s1=-fii+d*s; count=count+1; fx=fxi; fy=fyi; end x,f=subs(f,{xi,yi},x),count |