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

function[x,minf]=minFD(f,x0,var,eps)formatlong;ifnargin==3eps=1.0e-6;endsyms1;tol=1;k... 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; 怎么办
展开
 我来答
很_多_年_前
2013-11-04
知道答主
回答量:1
采纳率:0%
帮助的人:1446
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bacgmfu46
2012-02-27
知道答主
回答量:12
采纳率:0%
帮助的人:2万
展开全部
==3
eps=1.0e-6;
end
syms 1;
tol=1;
追问
不行,还是出现同样的错误,我用的是2008ra版本
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式