matlab多项式的表示以及运算
1.多项式的表示以及运算例如p(x)=x^3-3x+10表示为p=[1 0 -3 10];或者p=[1,0,-3,10];2.roots 函数roots函数求解其对应的方程式的根,例如:>>r=roots(p);接上式,即可得到方程的根3.poly函数已知方程的根,用poly函数还原该多项式方程,此时的方程的根写成列矩阵或是行矩阵都可以...
1.多项式的表示以及运算
例如p(x)=x^3-3x+10
表示为p=[1 0 -3 10];
或者p=[1,0,-3,10];
2.roots 函数
roots函数求解其对应的方程式的根,例如:
>>r=roots(p);
接上式,即可得到方程的根
3.poly函数
已知方程的根,用poly函数还原该多项式方程,此时的方程的根写成列矩阵或是行矩阵都可以
poly函数和roots函数互为反函数,受计算机数值的影响,会有微小的误差;

=>
poly函数还可以求矩阵的特征多项式(特征方程),例如:

即φ(λ)=λ^3-15λ^2-18λ
4.polyval与polyvalm函数
polyval用于计算多项式的值

polyvalm函数用于计算矩阵多项式;
p(x)=x^3-3x+10,相应的矩阵为p(X)=X^3-3X+10I,其中X为一n阶矩阵,I为一n阶单位矩阵,先输入矩阵X的内容,再调用函数
Y=polyvalm(p,X)计算得到矩阵结果
5.conv与deconv函数
多项式的乘法和出发相当于求卷积和去卷积,分别调用conv和deconv函数,即可实现应用于信号与系统中的
信号之间的卷积运算
(说得这么玄乎,其实就是两个多项式相乘,两个时域信号的卷积在频域里直接相乘)

反过来用deconv函数来求b:
>> [b,r]=deconv(c,a);%
上式中,r是多项式出发的余数多项式,即有c=conv(a,b)+r。
6.polyder函数
polyder函数用来求多项式的微分
(1)例如,求p(x)=x^3-3x+10的微分

(2)求两个多项式相乘或是相除的微分
>> a=[2 4 6];
>> b=[1 2 3];
>> c=polyder(a,b)%左边的输出变量只有一个,右边有两个参数,则是a×b的微分
c =
8 24 40 24
>> [q,d]=polyder(a,b)%输出变量有两个,则表示求a/b的微分
q =
0
d =
1 4 10 12 9
a/b 的微分即为q/d
7.residue函数
对一个多项式分式进行部分分式分解,
调用格式:
[r,p,k]=residue(b,a)
意思是b(x)/a(x)=r(1)/(x-p(1))+r(2)/(x-p(2))+…r(n)/(x-p(n))+k(x)
>> b=[4 -8];
>> a=[1 6 8];
>> [r,p,k]=residue(b,a)
r =
12
-8
p =
-4
-2
k =
[]
所以分解成了(4x-8)/(x^2+6x+8)=12/(x+4)+(-8)/(x+2)
反过来也可以成立:[b2,a2]=residue(r,p,k)获得b2和a2的表达式
8.polyfit函数
用来做数据的曲线拟合
p=polyfit(x,y,n)%x向量和y向量分别实测数据点的x坐标和y坐标,n为所欲拟合曲线的多项式次数。
>> x=[1 2 3 4 5];y=[5 43 128 280 500];
>> p=polyfit(x,y,3)
p =
1.7500 15.0357 -20.7143 9.2000
>> x2=[1:0.1:5];
>> y2=polyval(p,x2);
>> plot(x,y,'o',x2,y2);%画出了一个图,先画出了4个点,都是o表示的,后画出了x2,y2这一系列的点
>> grid on
更多推荐


所有评论(0)