多项式与插值培训教案.pptVIP

  • 3
  • 0
  • 约8.45千字
  • 约 60页
  • 2017-02-08 发布于江苏
  • 举报
多项式与插值培训教案

二、 多项式的运算 1.、求根运算 roots(P) P是多项式 p(x)的系数向量,该函数返回 p(x)=0 的全部根(含重根,复根) 例 已知一个多项式 (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)多项式的加减法 例 设有两个多项式,计算: (1)求f(x)+g(x)、f(x)-g(x)。 (2)求f(x)·g(x)、f(x)/g(x)。 例 求有理分式的导数 程序: 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 定义中的一阶导数连续意味着曲线没有急弯,二 阶导数连续意味着曲线每一点的曲率半径有意义。 三、Lagrange插值多项式 1、给定 n+1 个数据点: 插值基函数: 满足插值条件: 的次数不超过n的lagrange多项式 g(x) 为: function y = lagrange1(x0,y0,x) np=length(x0); y=zeros(size(x)); for i=1:np z=ones(size(x)); for j=1:np if j~=i z=z.*(x-x0(j))/(x0(i)-x0(j)); end end y= y+y0(i)*z end 2、MATLAB程序(法1): 调用格式: y = lagrange1(x0,y0,x) clear x0 = [1.1, 2.3, 3.9, 5.1]; y0=[3.887, 4.276, 4.651, 2.117]; x = [2.101, 4.234]; y = lagrange1(x0,y0,x) 例:写出拟合下面四个数据点的Lagrange插值公式,并计算 x=2.101、4.234时 y 的值。 4.651 3.9 2.117 5.1 4.276 2.3 3.887 1.1 y0 x0 结果为 y = 4.1457 4.3007 由于lagrange插值基函数li(x)在节点xk(k=1,2,…,n)处满足 又由于过 n+1个数据点的 n 次插值多项式是唯一的,故 li(x)也可看做是拟合下列数据点的n次多项式 可编写程序求出 2、MATLAB程序实现(法2): 进而求出lagrange插值公式 function p = lag_base(x) np = length(x); for j=1:np y = zeros(1,np); y(j) = 1; p(j,:)=polyfit(x,y,np-1); end 其调用格式为: p=lag_base(x) 其中: x 是数据点的横坐标数组, p 是一个矩阵,它的第 i 行 为li(x) 的幂系数。 先编写程序求出 如前例也可求解如下: x = [1.1, 2.3, 3.9, 5.1]; y = [3.887, 4.276, 4.651, 2.117]; xi = [2.101 ,4.234]; p=lag_base(x); np = length(x); s=0; for i=1:np s = s+p(i,:) .*y(i); end s yi=polyval(s,xi) 结果为: yi= 4.1457 4.3007 3、 Lagrange 插值公式的微分 插值公式 微分 为计算Lagrange插值多项式的一阶导数,可用polyder 函数将 p 的每一行转换为一阶导数的系数数组。 例:求出拟合下面四个数据点的Lagrange插值多项式在x=2.101、4.234处的一阶导数值。 4.651 3.9 2.117 5.1 4.276 2.3 3.887 1.1 y0 x0 x = [1.1, 2.3, 3.9, 5.1]; y = [3.887, 4.276, 4.651, 2.117]; xi = [2.101 ,4.23

文档评论(0)

1亿VIP精品文档

相关文档