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的值并不是最优解,还可以进一步优化。