|
小弟在做0.618的程序,想封装起来,用二次函数的系数作为接口,返回最大值的坐标~
可是调用时出现问题!请看:
function [x0,y0]=my618(c) %输入一个二次函数的系数
function [y]=f(x)
y=c(3)*x.^2+c(2)*x+c(1);
end
a=-100;b=100;e=0.01;p=0;
while(p==0) %flag p==0执行循环,否则退出
t1=b-.618*(b-a);t2=a+.618*(b-a);
if (f(t1)<=f(t2))
if((t2-a)<e)
p=1; %flag p=1 退出循环
x0=t1,y0=f(x0)
else b=t2;t2=t1;t1=a+.618*(b-a);
end
elseif(b-t1<e)
p=1;
x0=t2,y0=f(x0)
else a=t1;t1=t2;t2=b-.618*(b-a);
end
end
end
end
输入命令
my618((1,2,1))
??? my618((1,2,1))
|
Error: ")" expected, "," found.
请 指点,该如何实现????[em12] |
|