
用Matlab求解二元函数的最小值,一般可以用fminsearch()求解。例如
求二元函数f(x,y)=x^2+2y^2在[0;1]点附近的极小值。
fun=@(x)x(1)^2 + 2x(2)^2;
[x,fval,exitflag]=fminsearch(fun,[0;1])
运行结果
解:先对方程求偏导数,即首先将X2看作常数,将X1看作自变量求导数得:
Y'(X1)=693569-225646X1(1)
然后将X1看作常数,将X2看作自变量求导数得:
Y'(X2)=155-2017X2(2)
当Y'(X1)=0时,代入(1)解得:X1=13522;
当Y'(X1)=0时,代入(2)解得:X2=45588
显然两个自变量的数值都在规定范围内,且Y'(X1)的值随X1增大而减小,Y'(X2)的值X2增大而减小,故原方程有最大值。将两值代入原方程得最大值:
Ymax=-3856444+9378440+706614-4689230+353305
=1892685
显然长宽相等,否则可使用更少的材料制造出相同容积的箱盒
记边长为x,高y
则x^2 y=100, y>=5;
材料 f(x,y)=4xy+x^2=400/x+x^2
因x不大于根号20,上述值在x取根号20时 最小 ,此时y等于5
求极值问题,首先,必须编写有函数表达式或目标函数的m文件;其次,还要编写有有约束函数(条件)和非约束函数(条件)的m文件;再次,编写求函数极值的m文件。求解方法: 1、求f1(X)=(x(1)3200+x(2)4045+x(3)5900-x(4)5800的最优解; 2、求f2(X)=(x(1)+x(2)+x(3)-x(4)的最优解; 3、构造统一的目标函数f(X)=(f1(X)-fval1)/fval1)2+(f2(X)-fval2)/fval2)2,利用fmincon()求解。 4、得到f1(X)、f2(X)
你是不是把这段代码写在一个M文件里了?
应该是前两行存为文件funm,后两句
x0=[5,275,6,27,60] %起始点
[x,fval]=fminunc(@fun,x0)
在命令窗口里调用。
从你的表达式看,五个变元之间没有耦合,可以分开来求,很容易可以判断,函数最小值应该发生在x1、x2、x3=inf,x4、x5=-inf处。
1某工厂要制作一个容积为100立方米的无盖长方体容器,问:怎样制作材料最省?
function f=fun0618(x);
f=x(1)x(2)+200/x(1)/x(2)(x(1)+x(2));
>> x0=[5,10];
>> x=fminunc('fun0618',x0)
x =
58480 58480
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)