MATLAB 之 数据统计分析和多项式计算

这篇具有很好参考价值的文章主要介绍了MATLAB 之 数据统计分析和多项式计算。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、数据统计分析

  • 在实际应用中,经常需要对各种数据进行统计处理,以便为科学决策提供依据。这些统计处理包括求数据序列的最大值和最小值、和与积、平均值和中值、累加和与累乘积、标准差和相关系数、排序等,MATLAB 提供了相关的函数来实现。

1. 最大值和最小值

  • MATLAB提供了求数据序列最大值的函数max和求最小值的函数min,它们的调用格式和
    操作过程类似。

1.1 求向量的最大值和最小值

  • 求向量 X X X 的最大值的函数有两种调用格式,分别如下。
  • (1) y=max(X):返回向量 X X X 的最大值,并存入 y y y。如果 X X X 中包含复数元素,则按模取最大值。
  • (2) [y,k]=max(X):返回向量 X X X 的最大值,并存入 y y y,最大值的序号存入 k k k。如果 X X X 中包含复数元素,则按模取最大值。
  • 求向量 X X X 的最小值的函数是 min(X),用法和 max(X) 相同。
  • 例如,我们求向量 x x x 的最大值。
  • 程序如下:
>> x=[-43,72,9,16,23,47];
>> y=max(x)  %求向量x中的最大值

y =

    72

>> [y,k]=max(x)  %求向量x中的最大值及该元素的位置

y =

    72


k =

     2

  • 以上是对行向量进行操作,事实上对列向量的操作与对行向量的操作结果是一样的。例如,我们对上述 x x x 进行转置,有相同的结果。
>> [y,k]=max(x')

y =

    72


k =

     2

1.2 求矩阵的最大值和最小值

  • 求矩阵 A A A 的最大值的函数有 3 种调用格式,分别如下。
  • (1) max(A):返回一个行向量,向量的第 i i i 个元素是矩阵 A A A 的第 i i i 列上的最大值(返回的是每列的最大值)。
  • (2) [Y,U]=max(A):返回行向量 Y Y Y U U U Y Y Y 向量记录 A A A 的每列的最大值, U U U 向量记录每列最大值的行号(返回的是每列的最大值)。
  • (3) max(A,[],dim):dim 取 1 或 2。dim 取 1 时,该函数和 max(A) 等价;dim 取 2 时,该函数返回一个列向量,其第 i i i 个元素是 A A A 矩阵的第 i i i 行上的最大值(返回的是每行的最大值)。
  • 求矩阵最小值的函数是 min,其用法和 max 函数相同。
  • 例如,我们求矩阵 A A A 每行及每列的最大值,并求整个矩阵的最大值。 A = [ 13 − 56 78 25 63 − 235 78 25 563 1 0 − 1 ] A=\begin{bmatrix} 13 &-56 &78 \\ 25& 63& -235\\ 78& 25& 563\\ 1& 0 &-1 \end{bmatrix} A= 13257815663250782355631
  • 程序如下:
>> A=[13,-56,78;25,63,-235;78,25,563;1,0,-1];
>> max(A,[],2)  %求每行最大值

ans =

    78
    63
   563
     1

>> max(A)  %求每列的最大值

ans =

    78    63   563

>> max(max(A))  %求整个矩阵的最大值,也可使用max(A(:))

ans =

   563

1.3 两个向量或矩阵对于元素的比较

  • 函数 maxmin 还能对两个同型的向量或矩阵进行比较,调用格式如下。
  • (1) U=max(A,B) A 、 B A、B AB 是两个同型的向量或矩阵,结果 U U U 是与 A 、 B A、B AB 同型的向量或矩阵, U U U 的每个元素等于 A 、 B A、B AB 对应元素的较大者。
  • (2) U=max(A,n) n n n 是一个标量,结果 U U U 是与 A A A 同型的向量或矩阵, U U U 的每个元素等于 A A A 对应元素和 n n n 中的较大者。
  • min 函数的用法和 max 函数相同。
  • 例如,我们求两个 2 × 3 2×3 2×3 矩阵 x 、 y x、y xy 所有同一位置上的较大元素构成的新矩阵 p p p
  • 程序如下:
>> x=[4,5,6;1,4,8];
>> y=[1,7,5;4,5,7];
>> p=max(x,y)  %在x、y同一位置上的两个元素中找出较大值

p =

     4     7     6
     4     5     8

  • 上例是对两个同样大小的矩阵操作,MATLAB 还允许对一个矩阵和一个常数或单变量操作。例如:
>> x=[4,5,6;1,4,8];
>> p=max(x,4.5)  

p =

     4.5000     5.0000     6.0000
     4.5000     4.5000     8.0000

2. 求和与求积

  • 数据序列求和用 sum 函数。设 X X X 是一个向量, A A A 是一一个矩阵,sum 函数的调用格式如下。
  • (1) sum(X):返回向量 X X X 各元素的和。
  • (2) sum(A):返回一个行向量,其第 i i i 个元素是 A A A 的第 i i i 列的元素和。
  • (3) sum(A,dim):当 dim 为 1 时,该函数等同于 sum(A);当 dim 为 2 时,返回一个列向量,其第 i i i 个元素是 A A A 的第 i i i 行的各元素之和。
  • 数据序列求积用 prod 函数,其使用方法与 sum 函数相同。
  • 例如,我们求矩阵 A A A 的每行元素之和和全部元素之和。
  • 程序如下:
>> A=[1,2,3,4;5,6,7,8;9,10,11,12];
>> S=sum(A,2)

S =

    10
    26
    42

>> sum(S)

ans =

    78

>> 

3. 平均值和中值

  • 数据序列的平均值指的是算术平均值。中值,是指在数据序列中其值的大小恰好处在中间的元素。
  • 例如,数据序列 -2,5,7,9,12 的中值为 7,即它的大小恰好处于数据序列各个值的中间,这是数据序列为奇数个数的情况。如果数据序列为偶数个数,则中值等于中间的两数的平均值。例如,数据序列 -2,5,6,7,9,12 中, 处于中间的数是 6 和 7,故其中值为 6.5。
  • 求矩阵和向量元素的平均值的函数是 mean。设 X X X 是一个向量, A A A 是一个矩阵,mean 函数的调用格式如下。
  • (1) mean(X):返回向量 X X X 的算术平均值。
  • (2) mean(A):返回一个行向量,其第 i i i 个元素是 A A A 的第 i i i 列的算术平均值。
  • (3) mean(A,dim):当 dim 为 1 时,该函数等同于 mean(A);当 dim 为 2 时,返回一个列向量,其第 i i i 个元素是 A A A 的第 i i i 行的算术平均值。
  • 求中值的函数是 median,其调用方法和 mean 函数相同。
  • 例如,我们向量 x x x 的平均值。
  • 程序如下:
>> x=[9,-2,5,6,7,12];
>> mean(x)

ans =

    6.1667

4. 累加和与累乘积

  • U = ( u 1 , u 2 , u 3 , … , u n ) U=(u_{1},u_{2},u_{3},\dots ,u_{n}) U=(u1,u2,u3,,un) 是一个向量, V 、 W V、W VW 是与 U U U 等长的另外两个向量,并且 V = ( ∑ i = 1 1 u i , ∑ i = 1 2 u i , … , ∑ i = 1 n u i ) V=(\sum_{i=1}^{1} u_{i},\sum_{i=1}^{2} u_{i},\dots ,\sum_{i=1}^{n} u_{i}) V=(i=11ui,i=12ui,,i=1nui) W = ( ∏ i = 1 1 u i , ∏ i = 1 2 u i , … , ∏ i = 1 n u i ) W=(\prod_{i=1}^{1} u_{i},\prod_{i=1}^{2} u_{i},\dots ,\prod_{i=1}^{n} u_{i}) W=(i=11ui,i=12ui,,i=1nui)
  • V V V U U U 的累加和向量, W W W U U U 的累积乘向量。在 MATLAB 中,使用 cumsumcumprod 函数能方便地求得向量和矩阵元素地累加和与累乘积向量,它们地调用格式相同,其中 cumsum 函数地调用格式如下。
  • (1) cumsum(X):返回向量 X X X 累加和向量。
  • (2) cumsum(A):返回一个矩阵,其第 i i i 列是 A A A 的第 i i i 列的累加和向量。
  • (3) cumsum(A,dim):当 dim 为 1 时,该函数等同于 cumsum(A);当 dim 为 2 时,返回一个矩阵,其第 i i i 行是 A A A 的第 i i i 行的累加和向量。
  • 例如,我们求 s = 1 ! + 2 ! + ⋯ + 6 ! s=1!+2!+\dots +6! s=1+2++6
  • 程序如下:
>> x=cumprod(1:6)

x =

     1     2     6    24   120   720

>> s=sum(x)

s =

   873

5. 标准差与相关系数

5.1 求标准差

  • 对于具有 n n n 个元素的数据序列 x 1 , x 2 , x 3 , … , x n x_{1},x_{2},x_{3},…,x_{n} x1x2x3xn,标准差的计算公式如下: S 1 = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) 2 S_{1}=\sqrt{\frac{1}{n-1} \sum_{i=1}^{n}(x_{i}-\bar{x})^{2}} S1=n11i=1n(xixˉ)2
  • S 2 = 1 n ∑ i = 1 n ( x i − x ˉ ) 2 S_{2}=\sqrt{\frac{1}{n} \sum_{i=1}^{n}(x_{i}-\bar{x})^{2}} S2=n1i=1n(xixˉ)2
  • 其中 x ˉ = 1 n ∑ i = 1 n x i \bar{x}=\frac{1}{n}\sum_{i=1}^{n} x_{i} xˉ=n1i=1nxi
  • MATLAB 提供了计算数据序列的标准差的函数 std
  • 对于向量 X X Xstd(X) 返回一个标准差。对于矩阵 A A Astd(A) 返回一个行向量,它的各个元素便是矩阵 A A A 各列或各行的标准差。
  • std 函数的一般调用格式如下:
    Y=std(A,flag,dim)
  • 其中,dim 取 1 或 2。当 dim=1 时,求各列元素的标准差;当 dim=2 时,则求各行元素的标准差
  • 其中,flag 取 0 或 1,当 flag=0 时,按 S 1 S_{1} S1 所列公式计算标准差;当 flag=1 时,按 S 2 S_{2} S2 所列公式计算标准差。默认取 flag=0,dim=1。
  • 方差是和标准差相关的概念,其值是标准差的平方。MATLAB 提供了 var 函数来计算方差,其使用方法与 std 函数类似。
  • 例如,对于二维矩阵 x x x,我们从不同维方向求出其标准差和方差。
  • 程序如下:
>> x=[4,5,6;1,4,8];
>> y1=std(x,0,1)  %求标准差

y1 =

    2.1213    0.7071    1.4142

>> v1=var(x,0,1)  %求方差

v1 =

    4.5000    0.5000    2.0000

>> y2=std(x,1,1)

y2 =

    1.5000    0.5000    1.0000

>> v2=var(x,1,1)

v2 =

    2.2500    0.2500    1.0000

>> y3=std(x,0,2)

y3 =

    1.0000
    3.5119

>> v3=var(x,0,2)

v3 =

    1.0000
   12.3333

>> y4=std(x,1,2)

y4 =

    0.8165
    2.8674

>> v4=var(x,1,2)

v4 =

    0.6667
    8.2222

5.2 相关系数

  • 对于两组数据序列 x i , y i ( i = 1 , 2 , … , n ) x_{i},y_{i}(i=1,2,…,n) xiyi(i=12n),可以由下式计算出两组数据的相关系数: r = ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) ∑ i = 1 n ( x i − x ˉ ) 2 ∑ i = 1 n ( y i − y ˉ ) 2 r=\frac{\sum_{i=1}^{n}(x_{i}-\bar x)(y_{i}-\bar y)}{\sqrt{\sum_{i=1}^{n}(x_{i}-\bar x)^{2}\sum_{i=1}^{n}(y_{i}-\bar y)^{2}}} r=i=1n(xixˉ)2i=1n(yiyˉ)2 i=1n(xixˉ)(yiyˉ)
  • MATLAB 提供了 corrcoef 函数,可以求出数据的相关系数矩阵,函数的调用格式如下。
  • (1) corrcoef(X,Y):其中, X 、 Y X、Y XY 是向量。corrcoef(X,Y) 返回序列 X X X 和序列 Y Y Y 的相关系数,导到的结果是一个 2 × 2 2×2 2×2 矩阵,其中对角线上的元素分别表示 X X X Y Y Y 的自相关系数,非对角线上的元素分别表示 X X X Y Y Y 的相关系数和 Y Y Y X X X 的相关系数,两个是相等的。
  • (2) corrcoef(X):返回从矩阵 X X X 形成的一个相关系数矩阵,其中第 i i i 行第 j j j 列的元素代表原矩阵 X X X 中第 i i i 个列向量和第 j j j 个列向量的相关系数,即 X ( : , i ) X(:, i) X(:,i) X ( : , j ) X(:, j) X(:,j)的相关系数。
  • 例如,我们生成满足正态分布的 10000 × 5 10000×5 10000×5 随机矩阵,然后求各列元素的均值和标准差,再求这 5 5 5 列随机数据的相关系数矩阵。
  • 程序如下:
>> X=randn(10000,5);
>> M=mean(X)

M =

    0.0017   -0.0020   -0.0038   -0.0001   -0.0106

>> D=std(X)

D =

    0.9915    0.9899    0.9995    0.9862    1.0118

>> R=corrcoef(X)

R =

    1.0000    0.0060   -0.0001    0.0111    0.0005
    0.0060    1.0000   -0.0030   -0.0131   -0.0050
   -0.0001   -0.0030    1.0000   -0.0203   -0.0024
    0.0111   -0.0131   -0.0203    1.0000    0.0122
    0.0005   -0.0050   -0.0024    0.0122    1.0000

>> R=corrcoef(X(:,1),X(:,2))  %求X前两列的相关系数

R =

    1.0000    0.0060
    0.0060    1.0000

  • 求得的均值接近于 0,标准差接近于 1,由标准正态分布的随机数的性质可以看出,这个结构式正确的。此外,由于其相关系数矩阵趋于单位矩阵,故由函数 randn 产生的随机数是独立的。
  • 相关系数是反映两组数据序列之间的相互关系的指标,类似的指标还有协方差,计算公式如下: c = 1 n − 1 ∑ i = 1 n ( x i − x ˉ ) ( y i − y ˉ ) c=\frac{1}{n-1}\sum_{i=1}^{n}(x_{i}-\bar x)(y_{i}-\bar y) c=n11i=1n(xixˉ)(yiyˉ)
  • MATLAB 提供了 cov 函数来求两组数据的协方差矩阵,使用方法与 corrcoef 函数类似。例如:
>> A=[3,6,4];
>> B=[7,12,-9];
>> C1=cov(A,B)

C1 =

    2.3333    6.8333
    6.8333  120.3333

  • A,B 两个向量的协方差,将产生一个 2 × 2 2×2 2×2 矩阵,其中 C ( 1 , 1 ) C(1,1) C(1,1) 代表向量 A A A 的自协方差, C ( 1 , 2 ) C(1,2) C(1,2) 代表向量 A A A 与向量 B B B 的协方差, C ( 2 , 1 ) C(2,1) C(2,1) 代表向量 B B B 与向量 A A A 的协方差, C ( 2 , 2 ) C(2,2) C(2,2) 代表向量 B B B 的自协方差。
  • 又如:
>> A=[5,0,3,7;1,-5,7,3;4,9,8,10]

A =

     5     0     3     7
     1    -5     7     3
     4     9     8    10

>> C2=cov(A)

C2 =

    4.3333    8.8333   -3.0000    5.6667
    8.8333   50.3333    6.5000   24.1667
   -3.0000    6.5000    7.0000    1.0000
    5.6667   24.1667    1.0000   12.3333
    
  • 因为矩阵 A A A 有 4 列,所以协方差矩阵是 4 × 4 4×4 4×4 矩阵,其中 C ( i , j ) C(i,j) C(i,j) 代表向量 A ( : . i ) A(:.i) A(:.i) 与向量 A ( : , j ) A(:,j) A(:,j) 的协方差。

6. 排序

  • 对向量元素进行排序是一个经常性的操作,MATLAB 中对向量 X X X 进行排序的函数时 sort(X),函数返回一个对 X X X 中的元素按升序排列的向量。
  • sort 函数也可以对矩阵 A A A 的各列或各行重新进行排序,其调用格式如下:
    [Y,I]=sort(A,dim,mode)
  • 其中, Y Y Y 是排序后的矩阵,而 I I I 记录 Y Y Y 中的元素在 A A A 中的位置。
  • dim 指明对 A A A 的列还是行进行排序,若 dim=1,则按列排;若 dim=2,则按行排。dim 默认取 1。
  • mode 指明按升序还是按降序排序,‘ascend’ 按升序,‘descend’ 按降序。mode 默认取 ‘ascend’。
  • 例如,我们对下列矩阵做各种排序。 A = [ 1 − 8 5 4 12 6 13 7 − 13 ] A=\begin{bmatrix} 1& -8& 5\\ 4& 12& 6\\ 13&7 &-13 \end{bmatrix} A= 141381275613
  • 程序如下:
>> A=[1,-8,5;4,12,6;13,7,-13];
>> sort(A)  %对A的每列按升序排序

ans =

     1    -8   -13
     4     7     5
    13    12     6

>> sort(A,2,'descend')  %对A的每行按降序排序

ans =

     5     1    -8
    12     6     4
    13     7   -13

>> [X,I]=sort(A)  %对A的按列排序,并将每个元素所在行号送矩阵I

X =

     1    -8   -13
     4     7     5
    13    12     6


I =

     1     1     3
     2     3     1
     3     2     2

二、多项式计算

  • 在 MATLAB 中, n n n 次多项式用一个长度为 n + 1 n+1 n+1 的行向量表示,缺少的幂次项系数为 0。如果 n n n 次多项式表示为 P ( x ) = a n x n + a n − 1 x n − 1 + a n − 2 x n − 2 + ⋯ + a 1 x + a 0 P(x)=a_{n}x^{n}+a_{n-1}x^{n-1}+a_{n-2}x^{n-2}+\dots +a_{1}x+a_{0} P(x)=anxn+an1xn1+an2xn2++a1x+a0
  • 则在 MATLAB 中, P ( x ) P(x) P(x) 表达为向量形式: [ a n , a n − 1 , a n − 2 , … , a 1 , a 0 ] [a_{n},a_{n-1},a_{n-2},\dots,a_{1},a_{0}] [anan1an2a1a0]

1. 多项式的四则运算

  • 多项式之间可以进行四则运算,其运算结果仍为多项式。

1.1 多项式的加减运算

  • MATLAB 没有提供专门进行多项式加减运算的函数。事实上,多项式的加减运算就是其所对应的系数向量的加减运算。对于次数相同的两个多项式,可直接对多项式系数向量进行加减运算。
  • 如果多项式的次数不同,则应该把低次的多项式系数不足的高次项用 0 补足,使同式中的各多项式具有相同的次数。
  • 例如计算 ( x 3 − 2 x 2 + 5 x + 3 ) + ( 6 x − 1 ) (x^{3}-2x^{2}+5x+3)+(6x-1) (x32x2+5x+3)+(6x1),对于和式的后一个多项式 6 x − 1 6x-1 6x1,它仅为 1 次多项式,而前面的是 3 次。为确保两者次数相同,应把后者的系数向量处理成 [ 0 , 0 , 6 , − 1 ] [0,0,6,-1] [0,0,6,1]
  • 程序如下:
>> a=[1,-2,5,3];
>> b=[0,0,6,-1];
>> c=a+b

c =

     1    -2    11     2

1.2 多项式乘法运算

  • 函数 conv(P1,P2) 用于求多项式 P1 和 P2 的乘积。其中,P1、P2 是两个多项式系数向量。
  • 例如,我们求多项式 x 4 + 8 x 3 − 10 x^{4}+8x^{3}-10 x4+8x310 与多项式 2 x 2 − x + 3 2x^{2}-x+3 2x2x+3 的乘积。
  • 程序如下:
>> A=[1,8,0,0,-10];
>> B=[2,-1,3];
>> C=conv(A,B)

C =

     2    15    -5    24   -20    10   -30

  • 本例的执行结果是求得一个 6 次多项式: 2 x 6 + 15 x 5 − 5 x 4 + 24 x 3 − 20 x 2 + 10 x − 30 2x^{6}+15x^{5}-5x^{4}+24x^{3}-20x^{2}+10x-30 2x6+15x55x4+24x320x2+10x30

1.3 多项式除法

  • 函数 [Q,r]=deconv(P1,P2) 用于对多项式 P1 和 P2 做除法运算。其中 Q Q Q 返回多项式 P1 除以 P2 的商式, r r r 返回 P1 除以 P2 的余式。这里, Q Q Q r r r 仍是多项式系数向量。
  • deconvconv 的逆函数,即有 P1=conv(P2,Q)+r
  • 例如,我们求多项式 x 4 + 8 x 3 − 10 x^{4}+8x^{3}-10 x4+8x310 除以多项式 2 x 2 − x + 3 2x^{2}-x+3 2x2x+3 的结果。
  • 程序如下:
>> A=[1,8,0,0,-10];
>> B=[2,-1,3];
>> [P,r]=deconv(A,B)

P =

    0.5000    4.2500    1.3750


r =

         0         0         0  -11.3750  -14.1250

  • 从上面的运行结果可知,多项式 A A A 除以多项式 B B B 获得商多项式 P P P 0.5 x 2 + 4.25 x 1.375 0.5x^{2}+4.25x1.375 0.5x2+4.25x1.375,余项多项式 r r r − 11.375 x − 14.125 -11.375x-14.125 11.375x14.125。以下则用本例来验证 deconvconv 是互逆的。
>> conv(B,P)+r

ans =

     1     8     0     0   -10

2. 多项式的导函数

  • 求多项式的导函数用 polyder 函数,其调用格式如下。
  • (1) p=polyder(P):求多项式 P P P 的导函数。
  • (2) p=polyder(P,Q):求 P ● Q P●Q PQ 的导函数。
  • (3) [p,q]=polyder(P,Q):求 P / Q P/Q P/Q 的导函数,导函数的分子存入 p p p,分母存入 q q q
  • 上述函数调用中,参数 P 、 Q P、Q PQ 是多项式的向量表示,结果 p 、 q p、q pq 也是多项式的向量表示。
  • 例如,我们求有理分式的导数。 f ( x ) = 1 x 2 + 5 f(x)=\frac{1}{x^{2}+5} f(x)=x2+51
  • 程序如下:
>> P=1;
>> Q=[1,0,5];
>> [p,q]=polyder(P,Q)

p =

    -2     0


q =

     1     0    10     0    25

  • 结果表明 f ′ ( x ) = 2 x x 4 + 10 x 2 + 25 f'(x)=\frac{2x}{x^{4}+10x^{2}+25} f(x)=x4+10x2+252x

3. 多项式的求值

  • MATLAB 提供了两种求多项式值的函数:polyvalpolyvalm,它们的输入参数均为多项式系数向量 P P P 和自变量 x x x。两者的区别在于前者是代数多项式求值,而后者是矩阵多项式求值。

3.1 代数多项式求值

  • polyval 函数用来求代数多项式的值,其调用格式如下:
    Y=polyval(P,x)
  • x x x 为一数值,则求多项式在该点的值;若 x x x 为向量或矩阵,则对向量或矩阵中的每个元素求其多项式的值。
  • 例如,已知多项式 x 4 + 8 x 3 − 10 x^{4}+8x^{3}-10 x4+8x310,分别取 x = 1.2 x=1.2 x=1.2 和一个 2 × 3 2×3 2×3 矩阵为自变量,计算该多项式的值。
  • 程序如下:
>> A=[1,8,0,0,-10];  %4次多项式系数
>> x=1.2;  %取自变量为一数值
>> y1=polyval(A,x)

y1 =

    5.8976

>> x=[-1,1.2,-1.4;2,-1.8,1.6];  %给出一个矩阵x
>> y2=polyval(A,x)  %分别计算矩阵x中各元素为自变量的多项式的值

y2 =

  -17.0000    5.8976  -28.1104
   70.0000  -46.1584   29.3216

3.2 矩阵多项式求值

  • polyvalm 函数用来求矩阵多项式的值,其调用格式与 polyval 相同,但含义不同。
  • polyvalm 函数要求 x x x 为方阵,它以方阵为自变量求多项式的值。设 A A A 为方阵, P P P 代表多项式 x 3 − 5 x 2 + 8 x^{3}-5x^{2}+8 x35x2+8,那么 polyvalm(P,A) 的含义是 A ∗ A ∗ A − 5 ∗ A ∗ A + 8 e y e ( s i z e ( A ) ) A*A*A-5*A*A+8eye(size(A)) AAA5AA+8eye(size(A))
  • polyval(P,A) 的含义是 A . ∗ A . ∗ A − 5. ∗ A . ∗ A + 8 o n e s ( s i z e ( A ) ) A.*A.*A-5.*A.*A+8ones(size(A)) A.A.A5.A.A+8ones(size(A))
  • 例如,已知多项式 x 4 + 8 x 3 − 10 x^{4}+8x^{3}-10 x4+8x310 为例,我们以 2 × 2 2×2 2×2 矩阵为自变量分别用 polyvalpolyvalm 计算该多项式的值。
  • 程序如下:
>> A=[1,8,0,0,-10];
>> x=[-1,1.2;2,-1.8];
>> y1=polyval(A,x)

y1 =

  -17.0000    5.8976
   70.0000  -46.1584

>> y2=polyvalm(A,x)

y2 =

  -60.5840   50.6496
   84.4160  -94.3504

4. 多项式求根

  • n n n 次多项式具有 n n n 个根,当然这些根可能是实根,也可能含有若干对共轭复根。MATLAB 提供的 roots 函数用于求多项式的全部根,其调用格式如下:
    x=roots(P)
  • 其中, P P P 为多项式的系数向量,求得的根赋给向量 x x x,即 x ( 1 ) 、 x ( 2 ) 、 … 、 x ( n ) x(1)、x(2)、\dots 、x(n) x(1)x(2)x(n) 分别代表多项式的 n n n 个根。
  • 例如,我们求多项式 x 4 + 8 x 3 − 10 x^{4}+8x^{3}-10 x4+8x310 的根。
  • 程序如下:
>> A=[1,8,0,0,-10];
>> x=roots(A)

x =

  -8.0194 + 0.0000i
   1.0344 + 0.0000i
  -0.5075 + 0.9736i
  -0.5075 - 0.9736i

  • 若已知多项式的全部根,则可以用 ploy 函数建立起该多项式,其调用格式如下:
    P=poly(x)
  • x x x 为具有 n n n 个元素的向量,则 poly(x) 建立以 x x x 为其根的多项式,且将该多项式的系数赋给向量 P P P
  • 例如,已知: f ( x ) = 3 x 5 + 4 x 3 − 5 x 2 − 7.2 x + 5 f(x)=3x^{5}+4x^{3}-5x^{2}-7.2x+5 f(x)=3x5+4x35x27.2x+5
  • (1) 计算 f ( x ) = 0 f(x)=0 f(x)=0 的全部根。
  • (2) 由方程 f ( x ) = 0 f(x)=0 f(x)=0 的根构造一个多项式 g ( x ) g(x) g(x),并与 f ( x ) f(x) f(x) 进行对比。
  • 程序如下:
>> P=[3,0,4,-5,0,-7.2,5];
>> X=roots(P)  %求方程f(x)=0的根

X =

  -0.7669 + 0.9299i
  -0.7669 - 0.9299i
  -0.0582 + 1.3331i
  -0.0582 - 1.3331i
   1.0158 + 0.0000i
   0.6343 + 0.0000i

>> G=poly(X)  %求多项式g(x)

G =

    1.0000   -0.0000    1.3333   -1.6667    0.0000   -2.4000    1.6667

  • 这是多项式 f(x) 除以首项系数 3 的结果,两者的零点相同。

文章来源地址https://www.toymoban.com/news/detail-473867.html

到了这里,关于MATLAB 之 数据统计分析和多项式计算的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于MATLAB的矩阵性质:行列式,秩,迹,范数,特征多项式与矩阵多项式

    本节主要讨论矩阵的基本概念和性质,结合MATLAB的基础代码,适合新手。 矩阵的 行列式 的数学定义如下: MATLAB调用的格式如下: 求以下矩阵的行列式: 解: MATLAB代码如下: 运行结果: ans =    5.1337e-13 利用解析解的方法计算20✖️20的Hilbert矩阵的行列式,并分析其代码运

    2024年02月05日
    浏览(64)
  • 机器学习:多项式拟合分析中国温度变化与温室气体排放量的时序数据

    ​ 当分析数据时,如果我们找的不是直线或者超平面,而是一条曲线,那么就可以用多项式回归来分析和预测。 ​ 多项式回归可以写成: Y i = β 0 + β 1 X i + β 2 X i 2 + . . . + β k X i k Y_{i} = beta_{0} +beta_{1}X_{i}+beta_{2}X_{i}^2+...+beta_{k}X_{i}^k Y i ​ = β 0 ​ + β 1 ​ X i ​ + β 2 ​

    2023年04月21日
    浏览(43)
  • 【Matlab】最小二乘法拟合多项式

    在最近的电机项目中,有遇到有传感器数据并不线性的问题,然后想要用最小二乘法做个曲线拟合,反过来去校准不线性的传感器的数据,因此记录一下使用最小二乘法来拟合多项式的曲线的步骤。本篇从最小二乘法的原始公式入手编写M文件,目的是方便使用单片机实现,或

    2023年04月22日
    浏览(46)
  • 回归预测模型:MATLAB多项式回归

    1. 多项式回归模型的基本原理   多项式回归是线性回归的一种扩展,用于分析自变量 X X X 与因变量 Y Y Y 之间的非线性关系。与简单的线性回归模型不同,多项式回归模型通过引入自变量的高次项来增加模型的复杂度,从而能够拟合数据中的非线性模式。多项式回归模型可

    2024年02月19日
    浏览(41)
  • MATLAB polyfit函数——多项式拟合

        此函数用一个n次多项式来拟合一组数据点(x,y),并且将多项式系数以数组p的形式输出,p中的系数按降幂排列,数组长度为 n+1。     如果要将拟合好的多项式系数绘制出来,可以使用polyval函数:     此函数的作用是对给定的x1的值,通过多项式系数数组p计算对应的y1值

    2024年02月16日
    浏览(47)
  • matlab RANSAC拟合多项式曲线

    本文由CSDN点云侠原创,原文链接。爬虫网站自重,把自己当个人。爬些不完整的误导别人有意思吗????

    2024年02月12日
    浏览(49)
  • MATLAB 利用RANSAC对多项式进行点拟合 (32)

    通过对给定的一小组点进行抽样并生成多项式拟合,得到多项式系数 P。返回 maxRange 中具有最多 inlier 值的拟合。如果找不到匹配,则返回空的 P。该函数使用 M 估计量样本一致性(MSAC)算法,一种随机样本一致性(RANSAC)算法的变体来拟合数据。 主要使用的函数和内部的参数含义

    2024年02月15日
    浏览(55)
  • Matlab 线性拟合、一维、多维度非线性拟合、多项式拟合

      线性拟合 我随便设定一个函数然后通过解方程计算出对应的系数 假设我的函数原型是 y=a*sin(0.1*x.^2+x)+b* squre(x+1)+c*x+d  拟合系数:   利用matlab实现非线性拟合(三维、高维、参数方程)_matlab多元非线性拟合_hyhhyh21的博客-CSDN博客 简单的一维的拟合: 思路: 将非线性-》线

    2024年02月12日
    浏览(48)
  • 基于Matlab的插值问题(Lagrange插值法、三次插值多项式)

    要求 1、 利用Lagrange插值公式 L n ( x ) = ∑ k = 0 n ( ∏ i = 0 , i ≠ k n x − x i x k − x i ) y k {L_n}(x) = sumlimits_{k = 0}^n {left( {prodlimits_{i = 0,i ne k}^n {frac{{x - {x_i}}}{{{x_k} - {x_i}}}} } right)} {y_k} L n ​ ( x ) = k = 0 ∑ n ​ ( i = 0 , i  = k ∏ n ​ x k ​ − x i ​ x − x i ​ ​ ) y k ​ 编写出

    2024年02月07日
    浏览(49)
  • 【C 数据结构】 用单链表存储一元多项式,并实现两个多项式相加运算。

    本次代码纯c语言,可以支持输入两个多项式的项式、系数、指数。 实验目的: 1 掌握单链表的基本工作原理; 2 实现链式存储下的两个多项式的相加。 实验步骤 1 定义链式存储的数据结构 2 完成多项式的初始化,即给多项式赋初值 3 完成多项式的输出 4 实现多项式的相加及结

    2024年02月06日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包