MATLAB为什么总是提示输入的参数数目不足

请各位大神帮忙解答,不胜感激function[y1,y2]=funcn1(x1,x2)if(0<x1&x1<=4)y1=5000*x1;elseif(x1<=10)y1=... 请各位大神帮忙解答,不胜感激
function [y1,y2]=funcn1(x1,x2)
if (0<x1&x1<=4)
y1=5000*x1;
else
if(x1<=10)
y1=4000+4000*x1;
else
y1=9000+3500*x1;
end
end
s=0;
for i=1:1:x1-x2./50
s=10.*i+5.*i.*i+s;
end
y2=5000./x1+x2.*x2./(50*x1)+y1./x1+s./x1;
然后在命令窗口输入
x1=0:1:20;
>> x2=0:1:200;
>> [x,fval]=fminsearch('funcn1',[1,1])
为什么总是显示
错误使用 funcn1 (line 12)
输入参数的数目不足。
出错 fminsearch (line 190)
fv(:,1) = funfcn(x,varargin{:});
展开
 我来答
漆颖0gE
推荐于2017-10-05 · TA获得超过374个赞
知道小有建树答主
回答量:207
采纳率:75%
帮助的人:140万
展开全部

有点乱七八糟,你要优化得到x1,x2,你这样输入是没用的。首先你应该把函数的输入写成向量

y = funcn1(x),在函数里令x1 = x(1),x2=x(2),然后继续计算;其次要优化的函数只能有一个值,不能有y1,y2,看起来y2是个向量,你要确定使y1最小还是y2最小。最后,你的y2为什么是个向量呢,向量的值没法最小化。

命令窗口直接 

[x,fval]=fminsearch(@(x) funcn1(x),[1,1]),其它的不要。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式