matlab如何解非线性超标定方程我有一个三个未知数,九个方程的非线性方程组,cos(x3)*sin

发布时间:2021-02-26 00:55:24

matlab如何解非线性超标定方程我有一个三个未知数,九个方程的非线性方程组,cos(x3)*sin(x2)*sin(x1)-sin(x3)*cos(x1)=-0.9944 ;sin(x3)*sin(x2)*sin(x1)+cos(x3)*cos(x1)=-0.0870;cos(x2)*sin(x1)=-0.0606;cos(x3)*sin(x2)*cos(x1)+sin(x3)*sin(x1)=

网友回答

首先说明,非线性超标定方程没有准确解,即满足所有方程的解,而只有最优解,即,综合考虑,使9个方程都近似满足,这里存在一个目标函数的问题,一般来说,目标函数取为:
T(x1,x2,x3)=a1*f1^2+a2*f2^2+…+a9*f9^2.
这里记9个方程为:
f1(x1,x2,x3)=0;
f2(x1,x2,x3)=0;
f3(x1,x2,x3)=0;
f4(x1,x2,x3)=0;
f5(x1,x2,x3)=0;
f6(x1,x2,x3)=0;
f7(x1,x2,x3)=0;
f8(x1,x2,x3)=0;
f9(x1,x2,x3)=0;
a1~a9为正的权重系数,如果这9个方程没有侧重点,则它们可取相同的值,如果对某个方程要求“更加逼近”,则对应的权系数取的大些,例如,如对f2要求的优先级高,可使a2=5,其它的全为1.
以下就是具体的求解了~
不知道你是否了解搜索算法,因为我以前搞过算法研究,所以比较清楚,典型实用的主要有,梯度搜索算法、牛顿搜索算法和盲搜索算法.
在你这个具体的问题中,盲搜索算法比较合适,盲搜索算法又有两种典型的分类:遗传算法和粒子群算法.
我个人比较喜欢遗传算法,但它相对于粒子群算法来说,复杂,对没搞过这个的来说,可能会浪费很多时间,这里还是建议你用粒子群搜索吧,可以网上自己看下资料,自己写一下matlab程序,实在不行就找我吧
以上问题属网友观点,不代表本站立场,仅供参考!