- 1、本文档共109页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四章 多项式与插值7
二、 多项式计算 1. 多项式求根 求多项式 p(x)的根的函数是roots(P),这里,P是 p(x)的系数向量,该函数返回方程 p(x)=0 的全部根 (含重根,复根)。 2. 多项式求值 求多项式 p(x)在某点或某些点的函数值的函数是 polyval(P, x)。若x为一数值,则求多项式在该点的 值;若x为向量或矩阵,则对向量或矩阵中的每个元 素求其多项式的值。 例1 已知一个多项式 (1)计算f (x)=0 的全部根。 (2)由方程f (x)=0的根构造一个多项式 g(x),并与 f (x) 进行对比。 (3)计算f (5)、f (7.8)、f (9.6)、f (12.3)的值。 3. 多项式的四则运算 (1)多项式的加减法 例2 设有两个多项式,计算: (1)求f(x)+g(x)、f(x)-g(x)。 (2)求f(x)·g(x)、f(x)/g(x)。 4. 多项式的微分与积分 (1)对多项式求导数的函数是: p=polyder(P) 求多项式P的导函数 p=polyder(P,Q) 求P*Q的导函数 [p,q]=polyder(P,Q) 求P/Q的导函数,导函数的 分子存入p,分母存入q。 (2)对多项式的积分函数: d=poly_itg(c) d是多项式c积分后的系数,但 不包括积分常数 例3 求有理分式的导数。 可见,误差峰值出现在端点附近的区间里,这是由于 的局部峰值在端点附近。 另外一个程序: x=[-2 -1 0 1 3]; y=[-56 -16 -2 -2 4]; n=length(x); A=zeros(n,n); A(:,1)=y; for j=2:n for i=j:n A(i,j)=(A(i,j-1)- A(i-1,j-1))/(x(i)-x(i-j+1)); end end A 在编写牛顿插值多项式程序之前,复习几个命令: 例 6.1.2 求三个一次多项式积。它们的零点分别依 次为0.4、0.8、1.2。 解:X1=[0.4,0.8,1.2]; l1=poly(X1), L1=poly2sym (l1) 运行后输出结果为 l1 = 1.0000 -2.4000 1.7600 -0.3840 L1 = x^3-12/5*x^2+44/25*x-48/125 P1=poly(0.4);P2=poly(0.8);P3=poly(1.2); C =conv (conv (P1, P2), P3) , L1=poly2sym (C) 运行后输出的结果与方法1相同. 牛顿插值多项式的函数文件: function [A,C,L]= newploy(X,Y) n=length(X); A=zeros(n,n); A(:,1)=Y; for j=2:n for i=j:n A(i,j)=(A(i,j-1)- A(i-1,j-1))/(X(i)-X(i-j+1)); end end C=A(n,n); for k=(n-1):-1:1 C=conv(C,poly(X(k))); d=length(C); C(d)=C(d)+A(k,k); end L(k,:)=poly2sym(C); 例:给出节点X=[-2.15 -1.00 0.01 1.02 2.03 3.25],Y=[17.03 7.24 1.05 2.03 17.06 23.05],作五阶牛顿插值多项式和差商 。 解:X=[-2.15 -1.00 0.01 1.02 2.03 3.25]; Y=[17.03 7.24 1.05 2.03 17.06 23.05]; [A,C,L]= newploy (X,Y) 分段插值法可以克服在大范围内使用高次插值带来的误差 放大的问题。所谓的分段插值法就是首先在插值区间[a,b]上插 入节点 然后在每个小的子区间[xi-1,xi]上构造低次插值多项式。再将每 个子区间上的多项式连接,作为插值区间的插值函数。 1. 分段线性插值:区间[a,b]上的分段线性插值函数为 分段线性插值在MATLAB中的函数调用: yi = interp1(x
文档评论(0)