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')
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
这个代码显示错误是参数不足,改怎么改?
- 写回答
- 好问题 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; end
fun2.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无用
悬赏问题
- ¥15 计算个体的IBS遗传距离
- ¥15 有什么好的直流步进减速电机42的厂家推荐,保持力矩达到0.3N.M
- ¥15 一道蓝桥杯的题,请问我错在哪里
- ¥15 关于#android问题,xposed模块找不到so
- ¥15 UE5.4.2创建C++项目成功,但是编译失败
- ¥15 华为手机备份nas,airdisk,遇到的空间不足问题。求个详细的解决方案。
- ¥20 Cknife无法使用
- ¥15 这个结构体为什么会出错呢?
- ¥15 ROH绘图及近交系数的计算
- ¥15 手动下载基因拼接数据库的渠道