用MATLAB求一个二元函数极小值的问题,需编写MATLAB程序。

用MATLAB求一个二元函数极小值的问题,需求出极小值与对应的坐标点,函数为:
z=7.2*sqrt(25+(15-x).^2)+(7.2+(107./(20-x))).*sqrt((8-y).^2+(20-x).^2)+7.2.*y
x和y的取值范围是:x<15,y<8.
在线等~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~急!!!!!!!

可以使用matlab的多元约束优化函数fmincon来求解。写成向量形式,约束A*x<=b,初始值x0附近可以搜出出局部极小值。输入:
z=@(x)7.2*sqrt(25+(15-x(1))^2)+(7.2+(107/(20-x(1))))*sqrt((8-x(2))^2+(20-x(1))^2)+7.2*x(2);
A=[1,0;0,1];
b=[15;8];
x0=[1;1];
[x,feval]=fmincon(z,x0,A,b)
得到局部极小值的坐标和函数值:
x
=
15.0000
6.6994
feval
=
231.9944
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-09-12
可以使用matlab的多元约束优化函数fmincon来求解。写成向量形式,约束A*x<=b,初始值x0附近可以搜出出局部极小值。输入:
z=@(x)7.2*sqrt(25+(15-x(1))^2)+(7.2+(107/(20-x(1))))*sqrt((8-x(2))^2+(20-x(1))^2)+7.2*x(2);
A=[1,0;0,1];
b=[15;8];
x0=[1;1];
[x,feval]=fmincon(z,x0,A,b)
得到局部极小值的坐标和函数值:
x =
15.0000
6.6994
feval =
231.9944本回答被提问者采纳
第2个回答  2019-03-22
可以使用matlab的多元约束优化函数fmincon来求解。写成向量形式,约束A*x<=b,初始值x0附近可以搜出出局部极小值。输入:
z=@(x)7.2*sqrt(25+(15-x(1))^2)+(7.2+(107/(20-x(1))))*sqrt((8-x(2))^2+(20-x(1))^2)+7.2*x(2);
A=[1,0;0,1];
b=[15;8];
x0=[1;1];
[x,feval]=fmincon(z,x0,A,b)
得到局部极小值的坐标和函数值:
x
=
15.0000
6.6994
feval
=
231.9944
第3个回答  2010-09-12
MATLAB程序我不会,写个伪代码给你吧
#define max 999999 //这里根据自己的需求,设置一个非常大的数,越大越好(求的越准)。但是数越大,程序运行的就越慢
int min=max;
for(x=-max;x<15;x+=(1/max))
{for(y=-max;y<8;y+=(1/max))
{if(z(x,y)<min)
min=z(x,y);
}
}
//最后min里面存的就是答案
相似回答