怎样用matlab解多元高次方程?只有一个方程,我要多组解的那种
来源:学生作业帮助网 编辑:六六作业网 时间:2025/02/04 10:40:05
怎样用matlab解多元高次方程?只有一个方程,我要多组解的那种
怎样用matlab解多元高次方程?只有一个方程,我要多组解的那种
怎样用matlab解多元高次方程?只有一个方程,我要多组解的那种
给出方程看看吧.如果方程没有什么特殊性的话,那就基本等于靠猜了;
而且一般都是无穷多解,不知道你要的“多组解”有什么要求没有.
这个可以借助矩阵来解,利用自动控制理论的系统矩阵转换到约旦标准型的过程,即是对s求根的过程,因此可以如下作:
设方程为s^n+(An-1)*s^(n-1)+.....+A1*s+A0=0
其中,A0,A1...An-1为各个系数,最高次项的系数要化为1
写为如下n*n阶友矩阵
0 1 0 ..........0
0 0 ...
全部展开
这个可以借助矩阵来解,利用自动控制理论的系统矩阵转换到约旦标准型的过程,即是对s求根的过程,因此可以如下作:
设方程为s^n+(An-1)*s^(n-1)+.....+A1*s+A0=0
其中,A0,A1...An-1为各个系数,最高次项的系数要化为1
写为如下n*n阶友矩阵
0 1 0 ..........0
0 0 1 ..........0
..................
0 0 0 ..........1
-A0 -A1 -A2.....-An-1
也就是最下面一行的元素是方程各项系数的负值,上面对角线以上部分为1,其他为0
设以上矩阵为A
在matlab利用:
[T Λ]=eig(A);
T和Λ都是矩阵;
T是归一化以后的变换矩阵,对于你目前的这个方程,是没有什么用处的;
Λ矩阵对角线上的数值,就是你需要的解了,对角线上的数值若有相同的表示方程有重根,几个相同表示几重根
如果是多元的,先把个同元的放到一起,设一个等式,令这个等式为一个变量,对每一个自变量都这么作,最后可以得到这些自变量和这个设定值的关系
例如f(x)+g(y)+h(z)=0
令f(x)=A, g(y)=B; h(z)=C,利用上面的友矩阵求根法,求出的x,y,z对应的矩阵Λ分别为Λ1,Λ2,Λ3
他们分别是A,B,C的表达式,由于A+B+C=0,因此还可以把C用A,B表示,即第三个矩阵Λ3,即z可用A,B表示出来,
而A B就是最小的变量了,这个值可以任意取(当然了,要在函数值域之内)
这样x,y,z就可以用A,B表示出来,如果要研究x,y,z的根的变化情况,只用让A,B取一些值就可以了
收起