matlab的fmincon函数使用问题 10

在matlab使用fmincon求最小值。因为我需要求的x(i)未知数有一万个,不可能在目标函数中一个一个直接写出来,所以想用一个for循环,把目标函数写出来,如下,但是... 在matlab使用fmincon求最小值。因为我需要求的x(i)未知数有一万个,不可能在目标函数中一个一个直接写出来,所以想用一个for循环,把目标函数写出来,如下,但是报错了 Failure in initial user-supplied objective function evaluation.。想问一下,如何才能把这个循环正确的写出来?另外可以用load导入参数吗?比如说该程序里的a(i).
load initial.mat%;%导入参数a(i)数组
function f = myfun(x)
for i=1:3
f = f + x(i) -11*x(i)*a(i) ;%%这个表达式出现了问题
end
运行的文件:
[x,fval] = fmincon(@myfun,x0,[],[],[],[],0,1);
谢谢!
展开
 我来答
PeriShare
2016-05-08 · 分享PD理论最新研究成果和进展
PeriShare
采纳数:2408 获赞数:36827

向TA提问 私信TA
展开全部
你的a变量从哪里来的?x是向量无所谓的。
追问
a是load进去的参数,不是变量,我不知道参数可不可以直接这么load进去?
您的意思是x(i)可以用循环加起来吗?
追答
首先
load initial.mat加载出来的变量是initial不是a;
其次你的函数可以直接这样写:
function f = myfun(x)
oad initial.mat%;%导入参数a(i)数组
f=sum(x)-11*sum(x.*initial);
end
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
钊乾锁斯乔
2019-01-13 · TA获得超过3634个赞
知道大有可为答主
回答量:3038
采纳率:33%
帮助的人:408万
展开全部
大型算法不能解决此问题,换中型算法,在optionset中设置,medium-scale(中型算法要给出x0,即初值)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chendequan610
2016-05-22 · TA获得超过1904个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:158万
展开全部
f=0
function f = myfun(x)
for i=1:3
f = f + x(i) -11*x(i)*a(i) ;%%这个表达式出现了问题
end

循环外面加上f=0试试
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式