matlab 多项式表达,MATLAB自学笔记(十七):多项式及其函数

终于结束了关于MATLAB的基础知识学习部分,开始了对数据的分析

1.多项式的表达与创建

MATLAB中用一维行向量来表示多项式,将多项式的系数按照降幂次序存放在向量中。

请注意上面一句话,这将是MATLAB中对多项式操作的关键

MATLAB中对多项式中缺少的幂次的系数应补充为0,不能空过去

例:输入多项式3x^4 + 23x^3 – 6x +8

Python

>> p = [3 23 0 -6 8]

p =

3 23 0 -6 8

1

2

3

4

5

>>p=[3230-68]

p=

3230-68

2.求根

多项式的根(roots)

例:求例1中多项式的根

Python

>> p = [3 23 0 -6 8]

p =

3 23 0 -6 8

>> r = roots(p)

r =

-7.6263 + 0.0000i

-0.8646 + 0.0000i

0.4121 + 0.4844i

0.4121 - 0.4844i

1

2

3

4

5

6

7

8

9

10

11

12

13

14

>>p=[3230-68]

p=

3230-68

>>r=roots(p)

r=

-7.6263+0.0000i

-0.8646+0.0000i

0.4121+0.4844i

0.4121-0.4844i

由根创建多项式(poly)

Python

>> r = [-7.6263 + 0.0000i; -0.8646 + 0.0000i; 0.4121 + 0.4844i; 0.4121 - 0.4844i];

>> p = poly(r)

p =

1.0000 7.6667 -0.0000 -2.0002 2.6670

1

2

3

4

5

6

>>r=[-7.6263+0.0000i;-0.8646+0.0000i;0.4121+0.4844i;0.4121-0.4844i];

>>p=poly(r)

p=

1.00007.6667-0.0000-2.00022.6670

在这里我们可以看出例子中反求的多项式与原多项式并不一致,其原因在于MATLAB无隙处理复数,当用根重组多项式时,如果一些根有虚部,由于截断误差,则ploy的结果有一些小的虚部。消除虚假的虚部,只要用函数real抽取实部即可

3.多项式的四则运算

加法:c = a+b

乘法:c = conv(a,b)

除法:c = deconv(a,b)

4.导数、积分与估值

导数:b = polyder(a)

积分:b = polyint(a)

估值:h = polyval(g,x)

Python

>> x = -1 : .01 : 1;

>> g = [1 3 5 7 9];

>> h = polyval(g,x);

>> plot(x,h)

1

2

3

4

>>x=-1:.01:1;

>>g=[13579];

>>h=polyval(g,x);

>>plot(x,h)

通过将估值函数与绘图函数结合使用,我们可以方便的看出多项式的值及其值的变化趋势

5.有理多项式

当运算时出现了两个多项式之比的情况时,大多数情况下需要我们将其拆开,即有理化

有理化函数:residue

注:residue函数可进行逆运算

Python

>> num = [5 3 -2 7];

>> den = [-4 0 8 3];

>> [r,p k] = residue(num,den) %num为分子,den为分母

r =

-1.4167

-0.6653

1.3320

p =

1.5737

-1.1644

-0.4093

k =

-1.2500

>> [n ,d] = residue(r,p,k)

n =

-1.2500 -0.7500 0.5000 -1.7500

d =

1.0000 -0.0000 -2.0000 -0.7500

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

>>num=[53-27];

>>den=[-4083];

>>[r,pk]=residue(num,den)%num为分子,den为分母

r=

-1.4167

-0.6653

1.3320

p=

1.5737

-1.1644

-0.4093

k=

-1.2500

>>[n,d]=residue(r,p,k)

n=

-1.2500-0.75000.5000-1.7500

d=

1.0000-0.0000-2.0000-0.7500

其中,有理化之后多项式的值为r / (x + p) + k。r、p都可为向量,k为常数

逆有理化之后n表示分母的系数,d表示分子的系数,且分子最高项系数为1

赞赏作者

喜欢 (2)or分享 (0)

你可能感兴趣的:(matlab,多项式表达)