发布网友 发布时间:2022-04-29 14:42
共2个回答
热心网友 时间:2023-11-01 10:30
root() 根的多项式函数。
matlab里面roots和root
roots:求多项式的根。
例:求P(x)=5x^4+4x^3+3x^2+2x+1的零点。
程序如下:
P=[5 4 3 2 1]; %多项式各项的系数
roots(p) %求零点,也就是多项式的解
运行后得结果:
ans =
0.1378 + 0.6782i
0.1378 - 0.6782i
-0.5378 + 0.3583i
-0.5378 - 0.3583i
root() 根的多项式函数,可以在Matlab 2016a运行。
syms b
subs(root(x^2 + b*x, x, 1), b, 5)
ans =
root(x^2 + 5*x, x, 1)
热心网友 时间:2023-11-01 10:30
在matlab里root函数是根的多项式函数。函数root(X, n)最早出现于Matlab7(R14)中,用以计算X的n次方根(实数)。因为只给出实数结果,所以当X中包含负数而n不是奇数的时候,会报错:
>> nthroot(-1, 2)
??? Error using ==> nthroot at 32
If X is negative, N must be an odd integer.
一、在Matlab中roots函数用来求多项式的根。一个N阶多项式可以表示成:
p(x) = aNxN + aN-1xN-1 + ... + a1x + a0;
二、对于低阶的多项式方程p(x)==0,有一些求根公式可用。但是对于高阶的多项式方程,问题就复杂得多。Concise Encyclopedia of Mathematics里的Polynomial词条给出了任意阶多项式方程的求根方法,也就是root.m中使用的方法:
构造矩阵A:
A =
-aN-1/aN -aN-2/aN ... -a1/aN -a0/aN
1 0 ... 0 0
0 1 ... 0 0
... ... ... ... ...
0 0 1 0
对矩阵A作特征值分解,得到的特征值就是多项式方程的根。
三、Matlab中使用向量表示多项式。向量的各个元素就是多项式的系数,例如:
p = [4 5 1];
代表了多项式:
p(1)*x^2 + p(2)*x + p(3) == 4x2 + 5x + 1
四、由于Matlab是专为矩阵操作设计的语言,所以我们可以很轻松地用Matlab语言实现上面求根的方法:
>> N = 2;
>> p = [4 5 1];
>> A = [-p(2:end)/p(1); eye(N-1) zeros(N-1, 1)];
>> eig(A)
ans =
-1.0000
-0.2500