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);
谢谢! 展开
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);
谢谢! 展开
3个回答
展开全部
你的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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
大型算法不能解决此问题,换中型算法,在optionset中设置,medium-scale(中型算法要给出x0,即初值)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
f=0
function f = myfun(x)
for i=1:3
f = f + x(i) -11*x(i)*a(i) ;%%这个表达式出现了问题
end
循环外面加上f=0试试
function f = myfun(x)
for i=1:3
f = f + x(i) -11*x(i)*a(i) ;%%这个表达式出现了问题
end
循环外面加上f=0试试
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询