function f=fun1(x);
f=x.^2+8;
function [g,h]=fun2(x);
g=[-x(1)^2+x(2)-x(3)^2
x(1)+x(2)^2+x(3)^3-20];
h=[-x(1)-x(2)^2+2
x(2)+2*x(3)^-3];
[x,y]=fmincon('fun1',rand(3,1),[],[],[],[],zeros(3,1),[],'fun2')
这个代码显示错误是参数不足,改怎么改?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
2条回答 默认 最新
技术专家团-Joel 2022-02-17 18:24关注你好,这个有两种方法解决,第一种是写成多个文件,即
fun1.m文件里面有function f=fun1(x); f=x(1)^2+x(2)^2+x(3)^2+8; endfun2.m文件里面有
function [g,h]=fun2(x); g=[-x(1)^2+x(2)-x(3)^2 x(1)+x(2)^2+x(3)^3-20]; h=[-x(1)-x(2)^2+2 x(2)+2*x(3)^-3]; end然后main.m文件里面有
[x,y]=fmincon(@fun1,rand(3,1),[],[],[],[],zeros(3,1),[],@fun2)第二种方法是直接写成一个文件,保存为main.m:
function main [x,y]=fmincon(@fun1,rand(3,1),[],[],[],[],zeros(3,1),[],@fun2) end function f=fun1(x); f=x(1)^2+x(2)^2+x(3)^2+8; end function [g,h]=fun2(x) g=[-x(1)^2+x(2)-x(3)^2 x(1)+x(2)^2+x(3)^3-20]; h=[-x(1)-x(2)^2+2 x(2)+2*x(3)^-3]; end然后关键是目标函数应该写成我给出的fun1
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 1无用