第六章 计算方法简介.docVIP

  • 2
  • 0
  • 约7.17千字
  • 约 15页
  • 2017-10-06 发布于重庆
  • 举报
第六章 计算方法简介

第六章 计算方法简介 §1 数值逼近 插值 许多实际问题都要用函数来表示某种内在规律的数量关系,其中相当一部分函数虽然可能在某个区间上具有很好的性质(连续、光滑等),但没有函数的表达式信息,我们只能通过实验或者观测得到函数在一些点上的函数值,这是一张函数表.有些函数虽然有解析式,但由于计算复杂,使用不方便,我们通常也造一个函数表,例如三角函数表、平方根表等. 为了研究函数的性质,往往还需要求出不在函数表上的函数值,因此我们希望根据给定的函数表构造一个既能反映函数的性质、又便于计算的简单函数,用来近似.这就是插值所要研究的问题. 称为的插值函数.常用的插值函数是代数多项式或分段代数多项式. Lagrange插值 1.1.1 方法介绍 Lagrange插值方法即,给定个插值节点以及对应的函数值信息,,利用次Lagrange插值多项式公式,则对插值区间内任意的函数值可通过下式近似求得: . 其中称为插值基函数.可见,在Lagrange插值中,对应个节点的插值基函数一共有个,每个基函数是一个次多项式. 1.1.2 MATLAB实现 Lagrange.m % y=lagrange(x0,y0,x),表示对x0,y0的节点信息使用Lagrange插值所得的多项式在x点的取值. function y=lagrange(x0,y0,x) n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0; for j=1:n if j~=k p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end x=[0.4:0.1:0.8]; clear x=[0.4:0.1:0.8]; y=[-0.9 -0.6 -0.5 -0.35 -0.22]; lagrange(x,y,0.54) ans = -0.5572 分段低次插值 1.2.1 方法介绍 利用给出的节点信息使用多项式插值,一般认为插值多项式的次数越高,对原函数的近似越好,但事实并非如此.19世纪Runge给出了一个反例,说明了插值多项式次数高并不意味着近似程度好. 为了避免误差大的缺点,通常采用分段低次插值的做法.所谓分段低次插值,就是先把插值区间分成若干段,在每一段上进行低次多项式插值. 1.2.2 MATLAB实现 MATLAB自身提供了用于插值的内部函数interp1.该命令的使用方法为y=interp1(x,y,xi,’method’),其中(x,y)是已知的一组节点信息,xi表示插值函数在xi点取值,method表示所使用的插值方法,可选的方法有: ● nearest 线性最近项插值; ● linear 线性插值; ● spline 三次样条插值; ● cubic 三次插值. 例:正弦函数的插值. x=[0:0.1:10]; y=sin(x); xi=0:.25:10; yi=interp1(x,y,xi); plot(x,y,o,xi,yi) Hermite插值 1.3.1 方法介绍 不少实际问题中不但要求在节点上函数值相等,还要求导数值也相等,甚至要求高阶导数值也相等,满足这一要求的插值多项式是Hermite插值多项式.以下只给出函数值与一阶导数值个数相等且已知的情形. 已知个插值节点及其对应的函数值和一阶导数值.则计算插值区域内任意的函数值的Hermite插值公式为 , 其中 . 1.3.2 MATLAB实现 hermite.m % 使用方法 y=hermite(x0,y0,y1,x),其中x0表示已知节点, % y0表示已知节点上的函数值信息,y1表示已知节点上的函数导数值信息, % x表示插值多项式在x上取值. function y=hermite(x0,y0,y1,x) n=length(x0),m=length(x); for k=1:m yy=0.0; for i=1:n h=1.0; a=0.0; for j=1:n if j~=i h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2; a=1/(x0(i)-x0(j))+a; end end yy=yy+h*((

文档评论(0)

1亿VIP精品文档

相关文档