求助:如何在matlab中调用fminsearch函数

求助:如何在matlab中调用fminsearch函数
wa=[0,1;1,5;,2,4;3,4]
wb=[4,1;5,2]
p=[10,11,8,15]
p1=[8,22]
f(x1,y1,x2,y2)=sqrt(abs(x1-wa(1,1))^2+abs(y1-wa(1,2))^2)*p(1)+sqrt(abs(x1-wa(2,1))^2+abs(y1-wa(2,2))^2)*p(2)+sqrt(abs(x1-wa(3,1))^2+abs(y1-wa(3,2))^2)*p(3)+sqrt(abs(x1-wa(4,1))^2+abs(y1-wa(4,2))^2)*p(4)+sqrt(abs(x2-wb(1,1))^2+abs(y2-wb(1,2))^2)*p1(1)+sqrt(abs(x2-wb(2,1))^2+abs(y2-wb(2,2))^2)*p1(2);

要求函数f在 0<x1<6; 0<x2<6; 0<y1<6; 0<y2<6;的范围内的最小值,要怎么调用fminsearch函数
请问你在调用中的[3 3 3 3]是什么意思,还有最优值是多少呢?
麻烦请补充。谢谢
而取值范围是怎么在函数中的 变量是哪个?

fminsearch函数是用于求解多变量无约束函数的最小值。
fminsearch函数基本调用格式有,
[x,fval,exitflag] = fminsearch(fun,x0)
式中:fun——多元函数表达式,y=f(x),x=x1,x2。。。;
x0——初始值;
x——返回多元函数y=f(x)在初始值x0附近的局部极小值(局部极大值)点;
fval——返回局部极小值(局部极大值);
exitflag——返回函数输出条件值,exitflag=1说明函数收敛到一个解x;exitflag=0说明函数达到最大迭代次数;exitflag=-1说明输出函数终止算法。
fminsearch函数调用实例:求二元函数f(x,y)=5-x^4-y^4+4xy在原点附近的极大值。
解 问题等价于求-f(x,y)的极小值
>>fun=inline('x(1)^4+x(2)^4-4*x(1)*x(2)-5') %x,y要合写向量变量x(1),x(2)
>>[x,fval,exitflag] = fminsearch(fun,[0 0])
x=1.0000 1.0000 %极大值点x=1,y=1
fval=-7.0000 %极大值f=7
exitflag=1
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-04
[3 3 3 3]是初值
fminsearch的用法
[最小值点,最小值]=fminsearch(函数,初值)
fminsearch是不能设定约束范围的

以下令x=[x1 x2 y1 y2]

wa=[0,1;1,5;,2,4;3,4];
wb=[4,1;5,2];
p=[10,11,8,15];
p1=[8,22];

f=@(x)(sqrt(abs(x(1)-wa(1,1))^2+abs(x(3)-wa(1,2))^2)*p(1)+sqrt(abs(x(1)-wa(2,1))^2+abs(x(3)-wa(2,2))^2)*p(2)+sqrt(abs(x(1)-wa(3,1))^2+abs(x(3)-wa(3,2))^2)*p(3)+sqrt(abs(x(1)-wa(4,1))^2+abs(x(3)-wa(4,2))^2)*p(4)+sqrt(abs(x(2)-wb(1,1))^2+abs(x(4)-wb(1,2))^2)*p1(1)+sqrt(abs(x(2)-wb(2,1))^2+abs(x(4)-wb(2,2))^2)*p1(2));

[x,y]=fminsearch(f,[3,3,3,3])

得到的结果:
x =

2.0000 5.0000 4.0000 2.0000

y =

77.9259
即x1=2 x2=5 y1=4 y2=2 最小值为77.9259本回答被提问者采纳
相似回答