首页 > 代码库 > Matlab基础学习--------多项式及其操作

Matlab基础学习--------多项式及其操作

直接上代码(其中包含详细的实例和注释)

%% 多项式及其操作


% 使用poly2sym()函数来构造多项式
% 实例 构造多项式:2*x^6+3*x^5+4*x^4+8*x+1
A=[2 3 4 0 0 8 1];
poly2sym(A)
% 结果
ans =
2*x^6+3*x^5+4*x^4+8*x+1


%多项式的根(即多项式表达式=0对应的x的值)
% 实例
A=[2 3 4 0 0 8 1];
poly2sym(A)  %构造多项式
x=roots(A) % 求多项式的根
% 结果
ans =
    2*x^6+3*x^5+4*x^4+8*x+1

x =
  -0.7708 + 1.4984i
  -0.7708 - 1.4984i
  -1.2805          
   0.7237 + 0.7586i
   0.7237 - 0.7586i
  -0.1251 
  
%求出结果之后验证表达式的结果是不是为0
polyval(A,x)
% 结果  
ans =
  1.0e-013 *
  -0.0111 - 0.0833i
  -0.0111 + 0.0833i
   0.3453          
   0.0022 + 0.1271i
   0.0022 - 0.1271i
   0.0111  
% 从结果可以看出,求出的根只是一个近似值而不是精确值


% 多项式求导  polyder(h)
% 实例
A=[2 3 4 0 0 8 1];
poly2sym(A)  %构造多项式
x=polyder(A)   %对多项式求导
poly2sym(x)    %显示求导后的多项式
%结果:
ans =
    2*x^6+3*x^5+4*x^4+8*x+1
x =
    12    15    16     0     0     8
ans =
    12*x^5+15*x^4+16*x^3+8
  
  
%多项式估值  polyval(p,x)
% 其中p代表多项式的系数,x代表要求值的点
% 如果x是矩阵,则需要使用polyvalm(p,x)来实现
% 实例
A=[2 3 4 0 0 8 1];
poly2sym(A)  %构造多项式
polyval(A,[1 2 3 4])  %计算多项式在x=1 2 3 4时的值
% 结果
ans =
    2*x^6+3*x^5+4*x^4+8*x+1
ans =
          18         305        2536       12321
% 当x为矩阵时求解
A=[1 0 1];  % x^2+1
B=[1 2 3;4 5 6;7 8 9]
polyvalm(A,B)  % 其实相当于把B这个二维矩阵直接替换变量x,即求 B^2+E 这个矩阵多项式
% 结果
x =
     1     2     3
     4     5     6
     7     8     9
ans =
    31    36    42
    66    82    96
   102   126   151
   
   
% 有理多项式 用residue()函数来计算有理多项式
% 有理多项式的表示分别用分子分母多项式来表示
% [r,p,k]=residue(b,a) 其中b代表分子多项式的系数,a代表分母多项式的系数
% 实例
b=[3 5 3 8];
poly2sym(b) % 分子多项式
a=[4 6 0 -5];
poly2sym(a) % 分母多项式
[r,p,k]=residue(b,a) % 计算有理多项式
% 结果
r =
  -0.3939 + 0.7790i
  -0.3939 - 0.7790i
   0.9127          
p =
  -1.1230 + 0.6438i
  -1.1230 - 0.6438i
   0.7460          
k =
    0.7500
% 结果说明
B(s)       R(1)       R(2)             R(n)
----  =  -------- + -------- + .... + -------- + K(s)
A(s)     s - P(1)   s - P(2)         s - P(n)


Matlab基础学习--------多项式及其操作