作业帮 > 综合 > 作业

刚接触matlab 调用M文件问题

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/16 23:22:50
刚接触matlab 调用M文件问题
首先在Matlab优化工具箱中编写目标函数的M文件 myfun.m,返回x处的函数值f:
function f = myfun(x)
f=0.785398*(4.75*x(1)*x(2)^2*x(3)^2+85*x(1)*x(2)*x(3)^2-85*x(1)*x(3)^2+0.92*x(1)*x(6)^2-x(1)*x(5)^2+0.8*x(1)*x(2)*x(3)*x(6)-1.6*x(1)*x(3)*x(6)+x(4)*x(5)^2+x(4)*x(6)^2+28*x(5)^2+32*x(6)^2)
由于约束条件中有非线性约束,故需要编写一个描述非线性约束条件的M文件myobj.m:
function[c,ceq]=myobj(x)
c=[17-x(2);0.9-x(1)/(x(2)*x(3));x(1)/(x(2)*x(3))-1.4;2-x(3);x(2)*x(3)-300;100-x(5);x(5)-150;130-x(6);x(6)-200;x(1)+0.5*x(6)-x(4)-40;1486250/(x(2)*x(3)*sqrt(x(1)))-550;7098/(x(1)*x(2)*x(3)^2*(0.169+0.006666*x(2)-0.0000854*x(2)^2))-400;7098/(x(1)*x(2)*x(3)^2*(0.2824+0.00177*x(2)-0.0000394*x(2)^2))-400;117.04*x(4)^4/(x(2)*x(3)*x(5)^4)-0.003*x(4);(1/(x(5)^3))*sqrt((2850000*x(4)/(x(2)*x(3)))^2+2.4*10^12)-5.5;(1/(x(6)^3))*sqrt((2850000*x(4)/(x(2)*x(3)))^2+6*10^13)-5.5];
ceq=[];
最后在command window里输入:
x0=[230;21;8;420;120;160];%给定初始值
 
[x,fval,exitflag,output]=fmincon(@myfun,x0,[],[],[],[],[],[],@myobj,output)  
刚接触matlab 调用M文件问题
output不用在输入参数中输入
再问: 能说说怎么改吗
再答: [x,fval,exitflag,output] = fmincon(@myfun,x0,[],[],[],[],[],[],@myobj)