精通matlab最优化计算 中最速下降法 syms 1;问题 function [x,minf]=minFD(f,x0,var,eps)

function [x,minf]=minFD(f,x0,var,eps)
format long;
if nargin==3
eps=1.0e-6;
end
syms 1;
tol=1;
k=0;
while tol>eps
gradf=-jacobian(f,var);
v=Funval(gradf,var,x0);
tol=norm(v);
y=x0+1*v;
yf=Funval(f,var,y);
[a,b]=minJT(yf,0,0.1);
xm=minHJ(yf,a,b);
x1=x0+xm*v;
x0=x1;
k=k+1;
end
x=x1;
minf=Funval(f,var,x);
format short;
运行程序,出现??? Error using ==> syms at 58
Not a valid variable name.

Error in ==> minFD at 6
syms 1; 怎么办

第1个回答  2013-11-04
Funval未定义
function fv = Funval(f,varvec,varval)
var = findsym(f);%找出表达式 即f函数包含的变量,对于f=t^2+s+1 即s,t
varc = findsym(varvec);%找出传递参数的变量,即[t s]中的t,s
s1 = length(var);%函数的个数,例子中即s t 2个
s2 = length(varc);%变量个数,即[t s]两个
m =floor((s1-1)/3+1);%floor(3.6)=3,即最靠近左边的整数
varv = zeros(1,m);
if s1 ~= s2
for i=0: ((s1-1)/3)
k = findstr(varc,var(3*i+1));
index = ceil((k-1)/3);
varv(i+1) = varval(index+1);
end
fv = subs(f,var,varv);
else
fv = subs(f,varvec,varval); %如果原来函数变量个数和传递的参数中变量个数一致 这调用subs函数即计算在给点点处的函数值
end
第2个回答  2012-02-27
==3
eps=1.0e-6;
end
syms 1;
tol=1;追问

不行,还是出现同样的错误,我用的是2008ra版本

大家正在搜