China-pub.com 下载 第10章 函数、插值和曲线拟合分析 MATLAB可以处理有估值和没有估值的多项式,还有一些强大的数值分析命令,如求零 值和最小值。MATLAB中还有数据集合的插值、曲线拟合的命令和函数,还提到了经典的贝 赛尔(Bessel)函数。 10.1 MATLAB中的多项式 MATLAB将阶为n的多项式px)存储在长度为n+I的行向量p中。元素为多项式的系数,并 按x的幂降序排列,表示为: p=(an an-1...al ao) 代表的多项式为: p(x)=anx"an-1x-I+...+aix+ao 令A是一个稀疏矩阵,向量p和q的长度分别为n+1和m+1,它们分别表示次数为n和m的多 项式。MATLAB中处理多项式的命令如下: 命令集99 多项式 polyval(p,x) 计算多项式P。如果x是一个标量,则计算出多项式在x点 的值:如果x是一个向量或者一个矩阵,则计算出多项式 在x中所有元素上的值。 [y,err]= 计算向量x的多项式p的值。同上,计算结果在y中,同时 polyval(p,x,E) 还根据polyfit命令给出的矩阵E返回一个误差估计向量 err。见help polyvaf和nelp polyfit参见10.4节。 polyvalm(p,A) 直接对矩阵A进行多项式计算。不是象上个命令一样对每个 元素进行多项式计算,而是计算p(A)=pA+BA-++pl。 poly(A) 计算矩阵A的特征多项式向量。 poly(x) 给出一个长度为+1的向量,其中的元素是次数为n的多项 式的系数。这个多项式的根是长度为n的向量x中元素。 compan (p) 计算带有系数P的多项式的友矩阵A,这个矩阵的特征多 项式为p。 roots(p) 计算特征多项式即的根,是一个长度为m的向量,也就是方程 0的解。表达式oly(roots(p)p为真。结果可以是复数。 conv(p,q) 计算多项式p和q的乘积,也可以认为是p和q的卷积。 [k,r]=deconv (p,q) 计算多项式p除q。k是商多项式,r是残数多项式。这个 计算等价于p和q的逆卷积
下载 第1 0章 函数、插值和曲线拟合分析 M AT L A B可以处理有估值和没有估值的多项式,还有一些强大的数值分析命令,如求零 值和最小值。M AT L A B中还有数据集合的插值、曲线拟合的命令和函数,还提到了经典的贝 赛尔( B e s s e l )函数。 10.1 MAT L A B中的多项式 M AT L A B将阶为n的多项式p ( x )存储在长度为n+ 1的行向量p中。元素为多项式的系数,并 按x的幂降序排列,表示为: 代表的多项式为: 令A是一个稀疏矩阵,向量 p和q的长度分别为n+ 1和m+ 1,它们分别表示次数为 n和m的多 项式。M AT L A B中处理多项式的命令如下: 命令集9 9 多项式 p o l y v a l ( p , x ) 计算多项式 p。如果x是一个标量,则计算出多项式在 x点 的值;如果 x是一个向量或者一个矩阵,则计算出多项式 在x中所有元素上的值。 [ y , e r r ] = 计算向量x的多项式p的值。同上,计算结果在y中,同时 p o l y v a l ( p , x , E ) 还根据p o l y f i t命令给出的矩阵E返回一个误差估计向量 e r r。见help polyval和help polyfit,参见1 0 . 4节。 p o l y v a l m ( p , A ) 直接对矩阵A进行多项式计算。不是象上个命令一样对每个 元素进行多项式计算,而是计算p(A) =p1An+p2An-1+…+pn + 1I。 p o l y ( A ) 计算矩阵A的特征多项式向量。 p o l y ( x ) 给出一个长度为n+ 1的向量,其中的元素是次数为 n的多项 式的系数。这个多项式的根是长度为 n的向量x中元素。 c o m p a n ( p ) 计算带有系数 p的多项式的友矩阵 A,这个矩阵的特征多 项式为p。 r o o t s ( p ) 计算特征多项式p的根,是一个长度为n的向量,也就是方程 p(x) = 0的解。表达式p o l y ( r o o t s ( p ) ) = p为真。结果可以是复数。 c o n v ( p , q ) 计算多项式p和q的乘积,也可以认为是p和q的卷积。 [ k , r ] = d e c o n v ( p , q ) 计算多项式 p除q。k是商多项式, r是残数多项式。这个 计算等价于p和q的逆卷积
136 China-pub.com MATLAB5手册 下载 [u v kF 计算px)/gx的部分展开式: residue(p,q) py-u四 ,u2) u) +k) q(x)x-n(1)x-n(2) x-n(i) 向量p和q分别是多项式px)和gx)的系数。得到的余数在 向量u中,极点在列向量v中,商多项式在向量k中。 [pg]=residue(u,v,x从同上的部分展开式u、v和x计算得到多项式p和qe mpoles 给出极点多样性的相关信息,见help mpo1es polyder(p) 计算得到长度为的微分多项式向量,多项式的系数在向量中。 polyder(p,q) 返回一个向量,它表示由conv(p,q)定义的多项式微分。 [u,v]=polyder(p,q)返回两个向量,它们表示由deconv(p,q)定义的多项式 微分,表达形式为uN。 ■例10.1 将一些多项式命令应用在下列的多项式上: p2(x)=3x2+2x-4p3x)=2x3-2 MATLAB用下列向量来表示这两个多项式: p2=[32-4]; p3=[200-2]; (a)计算多项式在x=l处的值,输入: value2 polyval(p2,1),... value3=polyval(p3,1) 结果为: value2 1 value3 0 (b)很容易对向量或者矩阵计算多项式的值,输入: x=[123]'; values2 polyval(p2,x),values3 polyval(p3,x) 结果为: values2 1 12 29 values3 0 14 52
[u v k]= 计算p ( x ) / q ( x )的部分展开式: r e s i d u e ( p , q ) 向量p和q分别是多项式 p ( x )和q ( x )的系数。得到的余数在 向量u中,极点在列向量v中,商多项式在向量k中。 [p q]=residue(u,v,x)从同上的部分展开式u、v和x计算得到多项式p和q。 m p o l e s 给出极点多样性的相关信息,见 help mpoles。 p o l y d e r ( p ) 计算得到长度为n的微分多项式向量,多项式的系数在向量p中。 p o l y d e r ( p , q ) 返回一个向量,它表示由c o n v ( p , q )定义的多项式微分。 [ u , v ] = p o l y d e r ( p , q ) 返回两个向量,它们表示由 d e c o n v ( p , q )定义的多项式 微分,表达形式为u/v。 ■ 例1 0 . 1 将一些多项式命令应用在下列的多项式上: M AT L A B用下列向量来表示这两个多项式: (a) 计算多项式在x= 1处的值,输入: 结果为: (b) 很容易对向量或者矩阵计算多项式的值,输入: 结果为: p(x) q(x) = u(1) x - n(1) + u(2) x - n(2) + ×××+ u(j) x - n(j) + k(x). 1 3 6 M ATLAB 5 手册 下载
China-pub.com 第10章函数、插值和曲线拟合分析 137 下载 (©)两个多项式相乘,得到一个新的多项式: p5=conv(p2,p3) 给出: p5= 6 4 -8 -6 -4 (d)用rootst命令求多项式的根: roots2=roots(p2),roots3=roots(p3) 给出: roots2 -1.5352 0.8685 roots3= -0.5000+0.86601 -0.5000-0.86601 1.0000 图10-1中显示出两个多项式的图形。 15 一 0.5 1.5 图10-1多项式p2(x)=3x2+2x-4和p3(x)=2x3-2 (e)多项式p(x)的牛顿-拉普森迭代,多项式的系数在向量p中: q=polyder(p); xnext x -polyval(p,x)/polyval(q,x); ()命令roots(poly(A)求得矩阵A的特征值。假设矩阵A为: 运行命令: usedRoots=roots(poly(A)) 结果为: usedRoots 10.0000 4.0000 -6.0000
(c) 两个多项式相乘,得到一个新的多项式: p5=conv(p2, p3) 给出: (d) 用r o o t s命令求多项式的根: r o o t s 2 = r o o t s ( p 2 ),r o o t s 3 = r o o t s ( p 3 ) 给出: 图1 0 - 1中显示出两个多项式的图形。 图10-1 多项式p2 (x) = 3x 2+ 2x-4和p3 (x) = 2 x3-2 (e) 多项式p(x)的牛顿-拉普森迭代,多项式的系数在向量 p中: (f) 命令r o o t s ( p o l y ( A ) )求得矩阵A的特征值。假设矩阵A为: 运行命令: u s e d R o o t s = r o o t s ( p o l y ( A ) ) 结果为: 第1 0章 函数、插值和曲线拟合分析 1 3 7 下载
138 ATLAB5手册 China-pub.com 下载 然而这样得到的特征值没有用MATLAB命令eig(A)得到的特征值的精度高,而且有效 性也差些: usedEig=eig(A) 给出: usedEig -6.0000 10.0000 4.0000 结果是一样的,但是顺序正好相反。 (g)对于所有的矩阵A都有:po1yva1m(po1y(A),A)。=0 这是Cayley-Hamilton法则。这个法则对于秩为5的方阵来说: Magical magic(5); AlmostZero polyvalm(poly(Magical),Magical) AlmostZero 1.0e-07* 0.2794 0.3551 0.1723 0.1770 0.2654 0.2765 0.2887 0.2049 0.2142 0.2561 0.1775 0.2468 0.2701 0.3073 0.2375 0.1942 0.2744 0.2759 0.2608 0.2282 0.2082 0.3120 0.2608 0.2515 0.2049 ■ 10.2 函数的零值 MATLAB的M文件可以表示数学函数:参见2.9节。函数: 5x-6.4 9x x-0.4 g(x)= x-1.3)2+0.002+x3+0.03-x-0.922+0.005 如果输入下面的M文件g.m,这个函数就可以在MATLAB中调用: function y =g(x) y=(5.*x-6.4)./((x-1.3).2+0.002)+.. (9.*x)./(x.3+0.03)-,., (x-0.4)./((x-0.92).2+0.005); 使用元素运算符*、人、A、+和一定义MATLAB函数g。结果是如果这个函数被一个向量调用, 那么得到的结果也是一个向量。本章中提到的所MATLAB函数需要以这种方式来定义数学函数。 用plot命令可以画出函数的图形: x=linspace(0,2); 号生成向量x plot(x,g(x)); 号画g(x)图形 grid; 冬画格栅 title('The g(x)function 告给出图标题 或者使用fplot命令: p1ot(g,【02]): 号画g(x)图形 grid; 号画格栅 title('The g(x)functidn 号给出图标题
然而这样得到的特征值没有用 M AT L A B命令e i g ( A )得到的特征值的精度高,而且有效 性也差些: u s e d E i g = e i g ( A ) 给出: 结果是一样的,但是顺序正好相反。 (g) 对于所有的矩阵A都有:polyvalm(poly(A), A)=0 。 这是C a y l e y - H a m i l t o n法则。这个法则对于秩为5的方阵来说: ■ 10.2 函数的零值 M AT L A B的M文件可以表示数学函数;参见 2 . 9节。函数: 如果输入下面的M文件g . m,这个函数就可以在M AT L A B中调用: 使用元素运算符. *、. /、. ^、+和-定义M AT L A B函数g。结果是如果这个函数被一个向量调用, 那么得到的结果也是一个向量。本章中提到的所有M AT L A B函数需要以这种方式来定义数学函数。 用p l o t命令可以画出函数的图形: x=linspace(0, 2); % 生成向量x p l o t ( x , g ( x ) ) ; % 画g ( x )图形 g r i d ; % 画格栅 t i t l e ('The g(x) function') % 给出图标题 或者使用f p l o t命令: f p l o t ('g', [0 2]); % 画g ( x )图形 g r i d ; % 画格栅 t i t l e ('The g(x) function') % 给出图标题 1 3 8 M ATLAB 5 手册 下载
China-pub.com 第10章函数、插值和曲线拟合分析 139 下载 结果如图10-2所示。命令p1ot和fp1ot都定义在13.1节中。 求函数fx)的零值就等于求方程fx)=0的解。单变量函数的零值可以用MATLAB命令 fzero来求。对于多项式可以用roots命令来求,参见10.1节。fzero用迭代法来求解,使 得初始的估计值接近理想的零值。 g(x)函数 100 50 0.2 0.4 0.6 0.8 1 12 1.4 1.6 1.8 图10-2用p1ot画的gx)图形 命令集100 函数的零值 fzero(fcn,x0) 求函数的一个零值,fcn为函数的名字。要求给出一 个初始值x0,近似值的相对误差为eps。 fzero(fcn,x0,tol) 求函数的一个零值,fcn为函数的名字。要求给出一 个初始值x0,由用户定义近似值的相对误差tol。 fzero(fcn,x0,tol,pic) 求函数的一个零值,同上。如果pic不为零,则给出迭 代过程。 fzero(fcn,x0,tol, 求多变量函数的零值,fcn=fcn(x0,pl,p2,-)。如果ol和pic p1cp1p2,···) 没有给出,则令它们为空矩阵,如fzero(fcn,x0, [],[],p1)。 zerodemo命令给出了一个演示实列。 ■例10.2 (a)求本节开头定义的函数g(x)的零值:
结果如图1 0 - 2所示。命令p l o t和f p l o t都定义在13.1 节中。 求函数 f ( x )的零值就等于求方程 f ( x )= 0的解。单变量函数的零值可以用 M AT L A B命令 f z e r o来求。对于多项式可以用 r o o t s命令来求,参见 1 0 . 1节。f z e r o用迭代法来求解,使 得初始的估计值接近理想的零值。 图10-2 用f p l o t 画的g ( x )图形 命令集1 0 0 函数的零值 f z e r o ( f c n , x 0 ) 求函数的一个零值, f c n为函数的名字。要求给出一 个初始值x0,近似值的相对误差为e p s。 f z e r o ( f c n , x 0 , t o l ) 求函数的一个零值, f c n为函数的名字。要求给出一 个初始值x 0,由用户定义近似值的相对误差 t o l。 f z e r o ( f c n , x 0 , t o l , p i c ) 求函数的一个零值,同上。如果p i c不为零,则给出迭 代过程。 f z e r o ( f c n , x 0 , t o l , 求多变量函数的零值,f c n=f c n(x0, p1, p2,. . .)。如果t o l和p i c pic p1 p2,...) 没有给出,则令它们为空矩阵,如 f z e r o ( f c n , x 0 , [ ] , [ ] , p 1 )。 z e r o d e m o命令给出了一个演示实列。 ■ 例1 0 . 2 (a) 求本节开头定义的函数g(x)的零值: 第1 0章 函数、插值和曲线拟合分析 1 3 9 下载 g(x)函数