matlab求三元方程极值,麻烦大神帮忙,小弟着急!多谢!方程如下:
y=((cos(x(1))-17*sin(x(1)))/(sin(x(1))+17cos(x(1))))*(x(3)-x(2)*cos(x(1)))-x(2)*(sin(...
y=((cos(x(1))-17*sin(x(1)))/(sin(x(1))+17cos(x(1))))*(x(3)-x(2)*cos(x(1)))-x(2)*(sin(x(1))) 条件:x(1)范围0°~17.5° 0<x(2)<x(3)<25 求y的极小值。谢谢!
展开
1个回答
展开全部
楼主的表达式有点问题。
x(1)换成实数表达,范围为(0,17.5/360*2*pi)
0<x(2)<x(3)<25 可等价于x(2)-x(3)<0,且0<x(2)<25,0<x(3)<25,
用遗传算法计算:
建立m文件:
function y=fun(x)
x1=x(1);
x2=x(2);
x3=x(3);
y=(cos(x1)-17*sin(x1))/(sin(x1)+17*cos(x1))*(x3-x2*cos(x1)-x2*sin(x1));
然后可在命令窗输入optimtool('ga')设置约束条件,也可以直接在命令窗使用,格式如
[x,fval] = ga(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON)
本例即输入:
>> A=[0 1 -1];
>> b=[0];
>> Aeq=[];
>> beq=[];
>> lb=[0 0 0];
>> ub=[17.5/360*2*pi 25 25];
>> [x,fval] = ga(@fun,3,A,b,Aeq,beq,lb,ub)
Optimization terminated: average change in the fitness value less than options.TolFun.
x =
0.3054 0 25.0000
fval =
-6.2951
由题可知,f(x)的极值为-6.2951,
需要注意的是,此时x(2)=0,x(3)=25
而例子中给定的是开区间,故f(x)的值只能说是趋近于-6.2951
x(1)换成实数表达,范围为(0,17.5/360*2*pi)
0<x(2)<x(3)<25 可等价于x(2)-x(3)<0,且0<x(2)<25,0<x(3)<25,
用遗传算法计算:
建立m文件:
function y=fun(x)
x1=x(1);
x2=x(2);
x3=x(3);
y=(cos(x1)-17*sin(x1))/(sin(x1)+17*cos(x1))*(x3-x2*cos(x1)-x2*sin(x1));
然后可在命令窗输入optimtool('ga')设置约束条件,也可以直接在命令窗使用,格式如
[x,fval] = ga(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON)
本例即输入:
>> A=[0 1 -1];
>> b=[0];
>> Aeq=[];
>> beq=[];
>> lb=[0 0 0];
>> ub=[17.5/360*2*pi 25 25];
>> [x,fval] = ga(@fun,3,A,b,Aeq,beq,lb,ub)
Optimization terminated: average change in the fitness value less than options.TolFun.
x =
0.3054 0 25.0000
fval =
-6.2951
由题可知,f(x)的极值为-6.2951,
需要注意的是,此时x(2)=0,x(3)=25
而例子中给定的是开区间,故f(x)的值只能说是趋近于-6.2951
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询