终于结束了关于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)