第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里面存的就是答案