MatLab中多项式
程序员文章站
2022-04-01 09:55:26
...
多项式在MatLab中的表达
MatLab中的多项式是通过一维的向量去表示的
比如多项式:y=x^2+x+1
在MatLab中的表示即为p=[1 1 1]
注意这种表示方法和y为x的函数的表示方法之间的不同
在进行创建的时候要注意一维向量当中的第k个元素只是代表的多项式当中的第n-k+1次项的系数,因此当多项式的缺少某一项的系数时不能省略输入,要将这个系数输入为0
多项式的求根方法
对于多项式求根时使用roots函数
函数描述为:
roots - 多项式根
此 MATLAB 函数 以列向量的形式返回 p 表示的多项式的根。输入 p 是一个包含 n+1 多项式系数的向量,以 xn 系数开头。0 系数表示方程中不存在的中间幂。
比如如下代码:
syms x;
y=x^2+x+1;
roots(y)
结果为:
ans =
Empty sym: 0-by-1
而换一种输入方式时:
p=[1 1 1]
roots(p);
结果为:
ans =
-0.5000 + 0.8660i
-0.5000 - 0.8660i
及roots函数对这种是不适用的
当然我们也可以根据多项式的根去创建一个多项式
这种方式使用了poly函数
例如:
r=[5,4,3,1]
poly(r)
结果为:
ans =
1 -13 59 -107 60
多项式的加减乘除运算
多项式在MatLab中的是以一维向量的形式表示的,因此对于多项式的加减乘除的运算也是基于一维向量的加减乘除运算上进行的
注意多项式的乘法和除法时利用函数conv和函数deconv进行的
比如:
c=[1 5 15 35 69 100 118 110 72];
b=[1 2 4 6 8];
d=conv(c,b);
[a,r]=deconv(c,b);
结果为:
d =
1 至 5 列
1 7 29 91 237
6 至 10 列
508 924 1440 1916 2092
11 至 13 列
1892 1312 576
a =
1 3 5 7 9
r =
0 0 0 0 0 0 0 0 0
可以看出conv是返回的一个向量,deconv是返回的两个向量,分别表示商和余项
多项式的导数和积分
对多项式的求导的函数polyder
比如:
a=[1 5 15 35 69 100 118 110 72];
e=polyder(a);
结果为:
e =
8 35 90 175 276 300 236 110
对多项式求不定积分的函数polyint
q = polyint(p,k)//使用积分常量 k (就是不定积分当中的常数C)返回 p 中系数所表示的多项式积分。
q = polyint(p)//假定积分常量 k = 0。
比如:
//变量同上
f=polyint(a)
结果为:
f =
0.1111 0.6250 2.1429 5.8333 13.8000
25.0000 39.3333 55.0000 72.0000 0
多项式的估值函数
函数原型为polyval
y = polyval(p,x) 返回在 x 处计算的 n 次多项式的值。输入参数 p 是长度为 n+1 的向量,其元素是按要计算的多项式降幂排序的系数。
比如:
p = [3 2 1];
polyval(p,[5 7 9])
输出结果为:
ans =
86 162 262
polyval还有其他的用处,将来再详细说明
多项式运算函数的总结
多项式运算函数 | 函数作用 |
---|---|
conv(a,b) | 乘法 |
[q,r]=deconv(a,b) | 除法 |
ploy® | 用根构造多项式 |
polyder(a) | 对多项式或有理式求导 |
polyfit(x,y,n) | 多项式数据拟合 |
polyval(p,x) | 计算x点中多项式的值 |
[r,p,k]=residue(a,b) | 部分分式展开式 |
[a,b]=residue(r,p,k) | 部分分式组合 |
roots(a) | 求多项式的根 |
多项式的其他操作函数
操作指令 | 含义 |
---|---|
mmp2str(a) | 多项式向量到字符串变换,a(s) |
mmp2str(a,‘x’) | 多项式向量到字符串变换,a(x) |
mmp2str(a,‘x’,1) | 常数和符号多项式变换 |
mmpadd(a,b) | 多项式加法 |
mmpsim(a) | 多项式简化 |
上一篇: CSS层叠机制使用详解
下一篇: vue项目关闭eslint校验