6-1 多项式的运算
6-1-1 多项式的生成和表达
1. 多项式的表达
例如多项式表示为:[5 0 3 2 1]。
2. 多项式的生成
matlab求导语法:
P=ploy(MA)
说明:
1. 若MA为方阵,则生成的多项式P为方阵MA的特征多项式。
2. 若MA为向量,则向量和多项式满足这样一种关系:,生成的多项式为:
3. 直接输入的方式生成多项式。
例6-1
利用方阵M=[5 6 7;8 9 1;11 12 13]生成一个多项式(为方阵M的特征多项式)。
程序设计:
>>clear
M=[5 6 7;8 9 1;11 12 13];
P=poly(M); %产生多项式的向量表达式
Px=poly2str(P, 'x'); %生成常见的多项式表示形式
P,Px
运行结果:
P =
1.0000 -27.0000 90.0000 54.0000
Px =
x^3 - 27 x^2 + 90 x + 54
例6-2
利用向量A=[2 3 4 5]生成一个多项式。
程序设计:
>>clear
A=[2 3 4 5];
P=poly(A); %产生多项式的向量表达式
Px=poly2str(P, 'x'); %生成常见的多项式表示形式
P,Px
运行结果:
P =
1 -14 71 -154 120
Px =
x^4 - 14 x^3 + 71 x^2 - 154 x + 120
6-1-2 多项式的乘除
语法:
A. c=conv(a,b)
B. [q,r]=decony(c,a)
说明:
1. a、b和c分别是多项式的向量表示形式。A表示两个多项式的乘积运算,B表示两个多项式的除法运算。
2. q表示除运算的商,r表示除运算的余数。
例6-3
求多项式和的乘积M(x)。
程序设计:
>>clear
a=[1 5 0]; %第一个多项式F(x)
b=[2 1]; %第二个多项式G(x)
c=conv(a,b); %求两个多项式的乘积
Mx=poly2str(c, 'x'); %用常用的方式表示多项式的积
c,Mx
%end
运行结果:
c =
2 11 5 0
Mx =
2 x^3 + 11 x^2 + 5 x
例6-4
求多项式和的除运算D(x)。
程序设计:
>>clear
c=[1 5 0]; %第一个多项式F(x)
a=[2 1]; %第二个多项式G(x)
[q,r]=deconv(c,a); %求F(x)/ G(x)
Dx=poly2str(q, 'x'); %用常用的方式表示多项式的积
q,r,Dx
%end
运行结果:
q =
0.5000 2.2500
r =
0 0 -2.2500
Dx =
0.5 x + 2.25
程序说明:
1. 在运行结果中变量q是F(x)除以G(x)的商,而r则是除不尽的余数。
2. 运行结果变量Dx表示的商没有加上余数。
6-1-3多项式的求导
语法:
Dp=polyder(p)
说明:
p为向量表示的多项式。
例6-5
求多项式和的一阶导数。
我们容易知道以上两个方程的导数手工验算结果为:F ' (x) =2x+5和G ' (x)=2
我们看MATLAB的计算结果。
程序设计:
>>clear
f=[1 5 0]; %第一个多项式F(x)
g=[2 1]; %第二个多项式G(x)
Df=polyder(f); %求F(x)的导数
Dg= polyder(g); %求G (x)的导数
Dfx=poly2str(Df, 'x');
Dgx=poly2str(Dg, 'x');
Df,Dg,Dfx,Dgx
%end
运行结果:
Df =
2 5
Dg =
2
Dfx =
2 x + 5
Dgx =
2
6-1-4 多项式的求根
语法:
A.r=roots(p)
说明:
另外还有一种通过先求多项式的伴随矩阵,然后再求特征值的方法也可以求得多项式的根。
例6-6
求多项式和的根。
我们容易知道方程的根为:
F(x)为:x1=0;x2=-5
G(x)为: x2=-1/2
我们看MATLAB的计算结果。
程序设计:
>>clear
f=[1 5 0]; %第一个多项式F(x)
g=[2 1]; %第二个多项式G(x)
rf=roots(f); %求F(x)的根
rg= roots (g); %求G (x)的根
rf, rg,
%end
运行结果:
rf =
0
-5
rg =
-0.5000
程序说明:
从运行结果我们可以看到F(x)的根为0和-5,G(x)的根为-0.50,这和我们手工验算的结果完全一致。
例6-7
求多项式和的根。
程序设计:
>>clear
f=[1 5 -3]; %第一个多项式F(x)
g=[2 1 0 1]; %第二个多项式G(x)
rf=roots(f); %求F(x)的根
rg= roots (g); %求G (x)的根
rf, rg,
%end
运行结果:
rf =
-5.5414
0.5414
rg =
-1.0000
0.2500 + 0.6614i
0.2500 - 0.6614i
程序说明:
1. 我们可以看到例6-6和例6-7求得的根和我们手工计算的结果是一致的,其中例6-7多项式的根出现了虚根。
2. 我们用求伴随矩阵的方法对例6-7再做一次求根运算:
>>clear
f=[1 5 -3]; %第一个多项式F(x)
g=[2 1 0 1]; %第二个多项式G(x)
cf=compan(f); %求F(x)的伴随矩阵
cg=compan(g); %求G (x)的伴随矩阵
cf, cg,
%end
运行结果:
cf =
-5 3
1 0
cg =
-0.5000 0 -0.5000
1.0000 0 0
0 1.0000 0
ccf=eig(cf) %求特征根
ccg=eig(cg) %求特征根
运行结果:
ccf =
-5.5414
0.5414
ccg =
-1.0000
0.2500 + 0.6614i
0.2500 - 0.6614i
我们看到两种方法的结果是一致的。
6-2 数据分析
6-1-1 极值、均值、标准差和中位值的计算
语法:
A. Pmax=max(X)
B. Pmin=min(X)
C. Pmean=mean(X)
D. Pstd=std(X)
E. Pmedian=median (X)
说明:
1. max(X) 、min(X)、mean(X)、std(X)、median (X)分别是用来求数组或矩阵的最大值、最小值、均值、标准差、中位值。 注意std(X)的定义是,std(X,1)的定义是。
2. 这里X可以是数组也可以是矩阵。如果是数组则对整个数组进行计算,如果是矩阵则是分别对矩阵的每个列向量进行运算。
例6-8
对一组随机数组进行均值、方差和中位值的计算。
程序设计:
>>clear
x=randn(1,10); %生成一个10元素的数组
Pmax=max(x); %计算数组x的最大值
Pmin=min(x); %计算数组x的最小值
Pmean=mean(x); %计算数组x的平均值
Pstd=std(x); %计算数组x的标准差
Psqu= Pstd^2; %计算数组x的方差
发布评论