Matlab 求函数最小值
求函数:f(X)=0.589x(2)^3(x(3)+2)[(60x(1)+2+6/(x(1)+2))^2-(60x(1)-6.4)^2]的最小值
约束条件:
<1> x(1)-2大于等于0;<2>80-60x(1)大于等于0;<3>18-x(2)大于等于0;<4>x(2)-2大于等于0;<5>16-x(3)大于等于0;<6>x(3)-8大于等于0;<7>x(2)^3x(3)-38066/(x(1)^2)大于等于0;<8>5390x(2)^5(x(3)-2.4)^4-1514300乘以根号(2.3889((x(1)/x(3))^2)+0.132474)大于等于0;<9>4-x(1)大于等于0;<10>60x(1)-30大于等于0
初始点X0=[1,5,10]
请大伙帮忙啊 要写出详细的操作方法啊, 展开
function z = my_fun(x)
z=0.589*x(2)^3*(x(3)+2)*((60*x(1)+2+6/(x(1)+2))^2-(60*x(1)-6.4)^2);
非线性约束:
function [c,ceq] = mycon2(x)
c =[-x(2)^3*x(3)+38066/(x(1)^2);
-5390*x(2)^5*(x(3)-2.4)^4+1514300*sqrt(2.3889*((x(1)/x(3))^2)+0.132474)];
ceq =[];
保存!
>> x0 = [1;5;10]; % Starting guess at the solution
lb=[1;2;8;];ub=[4/3;18;16;];
options=optimset('LargeScale','off');
[x,fval] = fmincon(@my_fun,x0,[],[],[],[],lb,ub,@mycon2,options)
Optimization terminated: magnitude of search direction less than 2*options.TolX
and maximum constraint violation is less than options.TolCon.
Active inequalities (to within options.TolCon = 1e-006):
lower upper ineqlin ineqnonlin
3 1
x =
1.3333
11.0200
16.0000
fval =
2.2779e+007
%%%%%%%%%%%%%
楼主的x(1)的范围失效,第一条件x(1)>2,第二个条件x(1)<4/3,第9个条件x(1)<4,第10个条件x(1)>1/2,同大取大,同小取小,所以2<x(1)<4/3这区间没值,所以我随便给了x(1)一个范围,1<x(1)<4/3
2024-08-07 广告
>> [x,fval] = fminbnd('x*sin(2*x-1)',0,2)
x =
0.2601
fval =
-0.1201
当x取0.2601时,函数有最小值-0.1201
当然答案是近似值
扩展资料:
一个函数是一组在一起执行任务的语句。 在MATLAB中,函数在单独的文件中定义。文件的名称和函数的名称应该是一样的。
函数在自己的工作空间内的变量上运行,这个变量也称为本地工作空间,与在MATLAB命令提示符下访问的工作区(称为基本工作区)不同。
函数可以接受多个输入参数,并可能返回多个输出参数。
匿名函数就像传统编程语言中的内联函数,在单个MATLAB语句中定义。 它由单个MATLAB表达式和任意数量的输入和输出参数组成。
可以在MATLAB命令行或函数或脚本中定义一个匿名函数。
这样就可以创建简单的函数,而无需为它们创建一个文件。
matalab 中的zeros()函数和ones()函数
zeros()函数用来生成全0矩阵
ones()函数用来生成全1矩阵
zeros()函数的具体用法如下:
zeros(n):n*n 全零矩阵
zeros(m,n):m*n全零矩阵
zeros(d1,d2,d3……dn):生成 d1*d2*d3*……*dn 全零矩阵或数组。
zeros(size(A)):生成与矩阵A大小相同的全零矩阵。
ones()函数的具体用法如下:
ones(n):n*n 全1矩阵
ones(m,n):m*n全1矩阵
ones(d1,d2,d3……dn):生成 d1*d2*d3*……*dn 全1矩阵或数组。
ones(size(A)):生成与矩阵A大小相同的全1矩阵。
参考资料:百度百科-MATLAB