注册 登录
编程论坛 Matlab

请教高手:我这个程序错在哪里?

bazn 发布于 2008-10-23 21:44, 951 次点击
syms x1 x2 ar;
f=x1^2+4*x2^2;
v=[x1,x2];
df=jacobian(f,v);
df=df.';
epson=2e-3;x0=[2,2]';g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});k=0;
while(norm(g1)>epson)
    p=-g1;
    y=subs(f,{x1,x2},{x0(1,1)+ar*p(1,1),x0(2,1)+ar*p(2,1)});
    dy=diff(y);
    arf=solve(dy);
    x0=x0+arf*p;
    g1=subs(df,{x1,x2},{x0(1,1),x0(2,1)});
    k=k+1;
    Y=subs(f,{x1,x2},{x0(1,1),x0(2,1)});
end;
k
x0
Y
2 回复
#2
meteora11062008-10-23 22:00
错误提示很明显,norm的的输入参数不能是sym型,你把这句改成这样就能运行了:
g1=double(subs(df,{x1,x2},{x0(1,1),x0(2,1)}));
用double把sym转一下
#3
bazn2008-10-24 11:33
谢谢版主大大!!
1