第六章  MATLAB 数值计算
6-1 多项式的运算
6-1-1 多项式的生成和表达
1. 多项式的表达
MATLAB环境下多项式是用向量的形式表达的. 向量最右边的元素表示多项式的0阶,向左数依次表示多项式的第1阶、第2阶、第3
例如多项式表示为:[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. abc分别是多项式的向量表示形式。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. 在运行结果中变量qF(x)除以G(x)的商,而r则是除不尽的余数。
2. 运行结果变量Dx表示的商没有加上余数。
6-1-3多项式的求导
语法
Dp=polyder(p)
说明
p为向量表示的多项式。
6-5
求多项式的一阶导数。
我们容易知道以上两个方程的导数手工验算结果为:F ' (x) =2x+5G ' (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=0x2=-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-5G(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的方差