matlab求解非线性超越方程

如题所述

题主给出的非线性超越方程,如用matlab的vpasolve函数求解得到的结果,并不符合0<α1<α2<α3<α4<α5<π/2的条件。但可以通过fmincon函数,得到接近值。求解思路:

1、创建目标函数,即使得eq1+eq2+eq3+eq4+eq5为最小并接近于0。

eq1=cos(a1)-cos(a2)+cos(a3)-cos(a4)+cos(a5)-m*pi/4;

eq2=cos(5*a1)-cos(5*a2)+cos(5*a3)-cos(5*a4)+cos(5*a5);

eq3=cos(7*a1)-cos(7*a2)+cos(7*a3)-cos(7*a4)+cos(7*a5);

eq4=cos(11*a1)-cos(11*a2)+cos(11*a3)-cos(11*a4)+cos(11*a5);

eq5=cos(13*a1)-cos(13*a2)+cos(13*a3)-cos(13*a4)+cos(13*a5);

2、创建约束条件函数,即使得

eq1+eq2+eq3+eq4+eq5=0

cos(a1)-cos(a2)+cos(a3)-cos(a4)+cos(a5)=m*pi/4

α1<α2,α2<α3,α3<α4,α4<α5

3、设定α的上下限,即lb=[0,0,0,0,0];ub=[pi/2,pi/2,pi/2,pi/2,pi/2];

4、使用fmincon函数,求出满足条件的α1、α2、α3、α4、α5近似值

5、验证约束条件是否成立

6、从执行结果,我们可以看到,使用fmincon函数可以得到我们想要的值。


7、用vpasolve函数,得到α1、α2、α3、α4、α5的值。

当然,α1、α2、α3、α4、α5的值并不是最优解,还可以进一步优化。

温馨提示:答案为网友推荐,仅供参考
相似回答