文档库 最新最全的文档下载
当前位置:文档库 › 8第十章 关键帧插值33页

8第十章 关键帧插值33页

8第十章 关键帧插值33页
8第十章 关键帧插值33页

本教程特效综叙部分由潘飞编写,简介部分由高鹏飞编写,其余部分由王晓光编写,非常感谢好友郭聪的大力支持,还要感谢Chinadv 上的朋友们

第十章关键帧动画控制

在After Effects中,你可以通过关键帧插值运算,更加精确的控制关键帧和路径运动,

关键帧插值可以应用于任何层属性的所有关键帧,关键帧插值可以使图层运动产生突然的变化,或转换为平稳的变化,还可以控制关键帧间的加速、减速。利用不同的插值方法,我们可以更加精确的控制每个合成图像中每个层属性的关键帧间的相互作用。

10.1 插值法控制

After Effects由插值方法得到的一个变化值,是使用变化两端关键帧处的值计算而得

到的。After Effects提供了五种插值方法,这些方法能影响关键帧间如何发生变化。可以

对层的时间属性或空间属性上进行插值控制。

10.1.1 空间插值及运动路径

当对一个属性(如路径)应用或改变空间插值时,可以在合成图像窗口中调整运动路径,在运动路径上的不同关键帧提供了在任何时间点上的插值类型,如图(10-001)。

(图10-001)

A.线性插值 B. AUTO Bezier C. 连续Bezier D. Bezier E. Hold

10.1.2 时间插值及值图

After Effects在Timeline Windows时间线编辑窗口中使用Value Graph(值图),可以

精确的控制时间属性关键帧。值图提供了合成图像在任何时间点上的完整信息与值的控制。

图层中的属性施加关键帧动画后,在该属性左方会出现Value Graph(值图),如图(10-002)。

(图10-002)图标,单击该图标,即可打开

要查看不同的时间插值对层属性的影响的区别时,可以对一形态属性(如缩放),设置至少三个具有不同值的关键帧,对所有关键帧改变插值法,观察时间布局窗口中的Value

Graph(值图),可以发现它们的差别。

After Effects的时间插值类型都以特定的图标来显示,因此可以立即知道应用在关键

帧上的是何种插值。After Effects提供的所有插值法均基于Bezier插值法,该插值法提供

了方向句柄,因此可以精确控制从一个关键帧到另一个关键帧是如何过渡的。不使用方向句柄的插值法是Bezier插值法的一个子集,对于某些处理,这种插值法特别方便。

注意:按住Ctrl键,单击关键帧图标可以在线性或自动Bezier插值间进行转换。

(图10-003)

A.线性插值

B.线性进入

C.自动Bezier插值

D.Bezier或连续Bezier

E. 线性进入Bezier出

10.2 插值法的比较

After Effects提供的所有插值法均基于Bezier插值法,该插值法提供了方向句柄,因

此可以精确控制从一个关键帧到另一个关键帧是如何过渡的。不使用方向句柄的插值法是Bezier插值法的一个子集,对于某些处理,这种插值法特别方便。

要查看不同的时间插值对层属性的影响的区别时,可以对一时间属性(如透明度)设置至少三个具有不同值的关键帧,对所有关键帧改变插值法,观察时间布局窗口中的值图,可以发现它们的差别。

要查看不同的时间插值法对运动路径影响的区别时,可以在一运动路径上设置三个具有不同值的关键帧,在合成图像窗口观察运动路径时,改变插值方法。

本节在描述插值方法的效果时,是假设对一个层属性的全部关键帧应用该种方法,在实际应用中,可以对任何层属性的关键帧应用任何有效的插值方法。

10.2.1无插值法

无插值法实际上是一种状态,在这种状态下,层属性上无关键帧,记时器是关闭的,在时间布局窗口当前时间标记下显示I型图标。缺省情况下,没有插值法应用到层属性,如果

有任何关键帧出现在层属性中,就一定使用了某种插值法。从层属性上删除所有关键帧同时也删除了层属性上的所有插值法,无插值法表示当对层属性设置一个值时,在整个层的持续时间中,该属性一直保持着那个值。

10.2.2 Linear线性插值()

线性插值在关键帧上产生相同的变化率,插入的值只与下一个关键帧的值有关,而不考虑其它关键帧的值,在动画中,线性插值的变化节奏较强并且看起来比较机械。

如果对一个层属性的所有关键帧应用线性时间插值,在第一个关键帧开始以匀速持续到下一个关键帧,在第二个关键帧,变化率立即变为第二个帧到第三个帧的变化率,当到达最终关键帧时,变化立即停止。在Value Graph(值图)中,两个线性关键帧的连接线段显示

为一条直线。

(图10-004)

如果对一个路径的全部关键帧应用线性空间插值,After Effects在每个关键帧间产生

的线都为直线。例如,用线性空间插值产生一个飞船飞行的路径,沿路径的运动速度是由应用到每个关键帧的时间插值控制的。

(图10-005)

注意:After Effects使用自动Bezier作为缺省的空间插值。如果你想更改,可通

过Edit > Preferences > General菜单命令,将Default Spatial Interpolation to Linear option and click默认空间属性设置为线行插值的选项打开并按OK按钮,当再次启动After Effects程序时,所有空间属性关键帧插值法都默认为线性进入。

跟我学视频系列After effects 6.0 由入门到精通

(图10-006)

10.2.3 Auto Bezier插值()

Auto Bezier插值在可以在关键帧上产生平滑的变化率,当改变一个Bezier关键帧的值时,After Effects将自动改变另一个Bezier方向句柄的位置,以保持关键帧间的平滑过渡。自动调节改变了关键帧两边的值图或运动路径线段的形状,如果前一个和下一个关键帧也是使用自动Bezier插值,在前一个和下一个关键帧那边的线段形状也发生变化,如果以手动方式调节Bezier的方向句柄,该关键帧将转化为连续Bezier关键帧。

(图10-007)

如果对一个层属性的所有关键帧应用自动Bezier时间插值,After Effects在没个关键

帧的进入和离开变化率之间产生一平滑的过度,当修改一个关键帧值时,After Effects自

动在值图上通过移动方向句柄来保持平稳的过度。

跟我学视频系列After effects 6.0 由入门到精通

(图10-008)

10.2.4 Continuous Bezier插值()

与自动Bezier插值相同,Continuous Bezier插值在穿过一个关键帧时,可以产生一个平稳的变化率,同自动Bezier不同的是需要手动设置连续Bezier方向句柄的位置。After Effects不自动调节方向句柄的位置。我们所做的调节改变Value Graph(值图)的形状或关

键帧两边的运动路径线段。

(图10-009)

如果对层属性的所有关键帧应用连续Bezier时间插值,After Effects通过保证进入和

离开变化率一致来产生关键帧间的平稳过渡。

跟我学视频系列After effects 6.0 由入门到精通

(图10-010)

10.2.5 Bezier时间插值()

Bezier插值提供了最精确的插值,因为我们可以手动调节值图的形状或关键帧两边的运动路径线段,不象自动Bezier或连续Bezier插值,Bezier关键帧上的两个方向句柄是各自

独立的。

如果对一个层属性的全部关键帧应用Bezier时间插值,缺省情况下,After Effects在关

键帧间产生一个平稳的过渡,方向句柄的最初位置是用与自动Bezier插值相同的方法计算而得的,当改变Bezier关键帧的值时,After Effects保持存在的方向句柄位置。

(图10-011)

不象其它的插值方法,我们可以产生曲线的任意组合以及沿着运动路径的直线。因为两个Bezier方向句柄的操作是独立的,一个曲线运动路径可以在Bezier关键帧处突然变为一个角,Bezier空间插值特别适合沿复杂形状(如地图线路或一个标志的轮廓)画出运动路径。

当移动一个运动路径关键帧时,After Effects保持存在的方向句柄的位置,沿路径运动

的速度是由应用到每个关键帧的时间插值法控制的。

(图10-012)

10.2.6 Hold插值()

Hold插值仅用于时间插值法。可以使用Hold插值依时间改变层属性的值,但没有逐渐的过渡,这种插值使用于时间流逝或闪光灯效果或使一个层突然显示或突然消失。

如果对一个层属性的所有关键帧应用Hold时间插值,第一个关键帧的值保持不变直到下

一关键帧,在一关键帧,相应的值突然改变,在值图中,图形线段随着Hold关键帧显示为直线,不象线性插值,这里的直线总是水平的。

(图10-013)

即使Hold插值仅作为时间插值法有效,其效果在运动路径上是可见的,运动路径上的关

键帧是可见的,但不是由层位置点连接的。例如,如果用Hold插值动画层的位置属性,层在

前一个关键帧保持不动,直到当前时间标记到达下一个关键帧,在该关键帧处,层从旧的位置消失,又出现在新的位置。

只可以对离开时间插值关键帧后的帧使用Hold插值,然而,如果用关键帧导航器选项紧跟一Hold关键帧产生一个新的关键帧,新的关键帧将使用进入Hold插值。

(图10-014)

注意:Hold插值只适用于时间插值法。

10.3 编辑插值

你可以对任何属性关键帧应用和改变插值方法,可以用关键帧插值对话框来改变关键帧的插值方法,或者直接在值图或运动路径中改变。

在使用运动路径或值图前,应注意要改变的插值类型,在值图上编辑插值方法只影响层属性的时间插值,在运动路径上编辑插值方法只影响层属性的空间插值。

10.3.1 用关键帧插值对话框改变插值方法

1.在Timeline Windows时间线编辑窗口中,选择要改变的关键帧。使用

Animation>Keyframe

Interpolation菜单命令,弹出Keyframe Interpolation对话框。

(图10-015)

2.对于Temporal Interpolation时间插值,选择下述选项之一:

?Current Settings(当前设置):保留已应用在所选关键帧上的插值,当选择多个或手动调节的关键帧,并且不希望改变当前的设置时,选择该选项。

?Linear:线性插值。

?Bezier:贝赛尔曲线插值。

?Continuous Bezier:连续贝赛尔曲线插值。

?Auto Bezier:自动贝赛尔曲线插值。

?Hold:静止插值。

3.如果选择了空间层属性的关键帧,选择下述用于Spatial Interpolation空间插值的

选项之一(仅对位置、定位点和效果点关键帧有效):

?Current Set(当前设置):保留已应用在所选关键帧上的插值。

?Linear、Bezier、Continuous Bezier、Auto Bezier和Hold:使用缺省值应用空间插

值法。

4.如果选择了空间层属性的关键帧,使用Roving菜单选择一个关键帧如何在时间上决定其位置,然后单击OK。

?Current Settings:保留位置和所选关键帧当前应用的方法。

?Rove Across Tine:基于所选关键帧的前后关键帧,通过自动变化它们在时间上的位置对所选的关键帧平滑其变化率。

?Lock to Time:保持所选关键帧在时间上的当前位置,只能手动移动它们。

5.单击OK确认使设置生效。

10.3.2在窗口中直接改变插值方法

1.在时间布局窗口显示值图,或在合成图像窗口或层窗口中显示运动路径。

2.使用选择工具,按住Ctrl单击要改变的关键标记。插值方法的变化取决于关键帧上当前的插值方法:

?如果关键帧使用线性插值方法,变为自动Bezier插值法。

?如果关键帧使用Bezier,连续Bezier或自动Bezier插值,变为线性插值法。

(图10-016)跟我学视频系列After effects 6.0 由入门到精通

(图10-017)

线性插值(10-016)转变为自动Bezier插值(10-017)

10.3.3 以图形方法应用Bezier插值

应用Bezier插值的方法之一是使用关键帧插值对话框,当在值图或运动路径上使用鼠标时,可以图形化应用Bezier插值。

使用选择工具执行下述操作之一:

?如果当前关键帧的插值法是线性插值,按住Ctrl单击要改变的关键帧,插值法变为自动Bezier。

?如果当前插值法是自动Bezier,拖动方向句柄之一,出现方向线,方向线连接方向句柄到关键帧,这表明已将插值法变为连续Bezier插值。

(图10-018 (图10-019)

?按住Ctrl拖动方向句柄之一,插值法变为Bezier插值法。现在,每个方向线的移动是

独立的。

10.3.4 调节方向句柄产生曲线和边角

缺省情况下,Bezier插值在关键帧产生曲线过渡,用转换控制点工具()在关键帧产生一个边角。在Value Graph(值图)下,一个边角导致一个突然的过渡;在运动路径上,关键帧为路径上的一个边角。

也可以改变Bezier关键帧,使两个句柄一起移动,构成一穿过关键帧的曲线。

(图10-020)(图10-021)

连续Bezier方向句柄(左边)转换为两个方向不一致而分离的Bezier方向句柄(右边)Bezier从曲线变为边角的步骤:

1.从工具箱中选择笔工具( )。

2.在合成图象窗口中,向任意方向拖动一个关键帧的方向句柄。

10.3.5 收缩和扩展Bezier方向句柄

可以收缩和扩展缺省显示的方向句柄。当扩展方向句柄时,关键帧表示连续Bezier插值,当两个方向句柄都收缩时,插值方法是线性的,将产生一个角点取代曲线。

?收缩一个方向句柄的方法:

使用选择工具,在时间布局窗口的值图上或合成图像或层窗口的运动路径上拖动方向句柄到关键帧的中心。

?收缩两个Bezier方向句柄的步骤:

1.在Tools面板中选择转换控制点工具()。

2.在值图或运动路径上,单击关键帧。

?扩展两个Bezier方向句柄的步骤:

1.在Tools面板中选择转换控制点工具()。

2.在值图或运动路径上,单击关键帧并且向外拖动关键帧。

?在选择工具和笔工具之间的转换方法:

按住Ctrl键。

10.3.6 混合进入和离开插值方法

缺省状态下,一个关键帧图标使用一种插值方法,除此之外还可以在一个关键帧上应用两种插值方法:

进入方法是当当前时间进入一个关键帧时应用的插值方法;离开方法是当当前时间离开关键帧时应用的插值方法。当设置不同的进入和离开插值方法时,关键帧图标同时也发生变化,左半边显示进入插值方法图标,右半边显示离开插值方法图标。

(图10-022)

使用速率或速度图(见精调速度),可以自由混合线性和Bezier插值方法。由于自动Bezier插值,自动调节进入和离开方向句柄,一旦将自动Bezier与其他方法混合,关键帧原来的一半变为Bezier插值。

10.3.7 混合Bezier和线性插值方法:

1.在Timeline Windows时间线编辑窗口中,选择要改变的Bezier或线性关键帧。

2.展开层轮廓显示包含关键帧的层属性的速率或速度图。

注意:确保调节速率或速度图上的句柄,而不是值图上的句柄。

3.拖动进入或离开句柄调节关键帧的速率。

图(10-023)为Bezier,图(10-024)为线性

(图10-023)

(图10-024)

跟我学视频系列After effects 6.0 由入门到精通10.3.8应用或删除作为离开插值的Hold插

1.在时间布局窗口中,选择要改变的关键帧。

2.选择Animation>Toggle Hold Keyframe。

10.4 使用值图改变层属性

在时间布局窗口中显示每个关键帧的值以及关键帧间用插值法得到的值。当层属性的值图

是水平的,层属性的值在关键帧间未改变;当值图上升或下降时,层属性的值在关键帧间上升或下降。

(图10-025)

可以通过向上或向下移动值图上的点来改变层属性值。例如,可以拖动旋转属性的值图上的一个点来提升图线增加旋转关键帧的值。

注意:定位点、遮罩形状、效果点和位置的属性是空间的,值的图形化显示是在层

和合成图像窗口中,不在时间布局窗口中的值图中显示。

层属性值增加或减少的步骤:

1.在时间布局窗口中,显示至少两个关键帧的层属性。

2.单击属性名旁的小三角显示值图。

1.执行下述操作之一:

?要增加关键帧值,向上拖动关键帧的标记或双击关键帧图标输入一较大的值。

?要减少关键帧值,向下拖动关键帧的标记或双击关键帧图标输入一较小的值。

?要查看显示在属性名旁的新值,将当前时间标记定位在关键帧上。

跟我学视频系列After effects 6.0 由入门到精通

(图10-026)

10.5 在值图上增加关键帧

在值图或运动路径上,钢笔工具提供了最灵活的方式来修改时间属性。用钢笔工具进行编辑的方法类似于在Photoshop中修改路径的方法,要使用笔工具得到最好的效果,必须理解Bezier插值是如何影响Value Graph(值图)和运动路径的,当在Value Graph(值图)或

运动路径上使用Bezier插值时,可以控制边角的形状,使它们成为平滑的曲线或有角度的边

角。

使用笔工具在值图上增加关键帧的步骤:

1.在时间布局窗口中,显示至少包含两个关键帧的层属性。

2.单击属性名旁的小三角显示值图。

3.从Tools工具面板中选择笔工具()。

4.在Timeline Windows时间布局窗口中,在Value Graph(值图)上,移动钢笔笔工具

到要增加新关键帧的地方单击,增加新的关键帧。

(图10-027) (图10-028)

10.6 影响变化率的因素

在产生了关键帧和运动路径后,可通过关键帧更精确的调整层的空间坐标和移动速度,可通过时间布局窗口中的速率图和速度图在时间上精调所有的变化。速率图提供了所有空间值(如位置)在合成图像任何帧上的变化率的全部信息及值的控制。速度图则提供了所有非空间值(如旋转)在合成图像任何帧上的变化率的全部信息及值的控制。

A.当前时间标记下的速度

B.最小的速率

C.最大的速率

D.速率图

E.速率控制点

跟我学视频系列After effects 6.0 由入门到精通(图10-029)

在时间上的值或速率的变化受下述因素的影响:

时间差别:在时间布局窗口中关键帧间的时间差别。关键帧间的时间差别越短,层的变化越快;间隔越长,层到达下一关键帧值前的变化越慢,因为它需要在一个较长的时间周期

内完成变化。可以沿时间线向前或向后移动关键帧,通过关键帧间的距离来调节速度。

(图10-030)(图10-031)

值差别:相邻关键帧间的值的差别。关键帧间大的值差别(如不透明度为75%和20%)产生的变化要比小的值(如不透明度为30%和20%)产生的变化快。可以通过增加或减少一个关

键帧上层属性的值,利用值差别来调整变化率。

(图10-032)

跟我学视频系列 After effects 6.0 由入门到精通

(图10-033)

插值法类型:应用到关键帧的插值类型。当关键帧设置为线性插值时,很难使穿过关键

帧的值变化平缓,但在任何时间都可以转换为Bezier 插值,该插值能在穿过关键帧上产生平

稳变化。如果使用Bezier 插值,使用句柄可以精确的调整变化率。

(图10-034)

(图10-035)

当动画一空间属性时,如位置、定位点、效果点或遮罩形状,可以在时间布局窗口的速

率图上或合成图像或层窗口中的运动路径上观察和调节层的速度。当在一个窗口上调节速度 时,可以在另一窗口中观察其变化,在时间布局窗口的速率图上,改变图形高度意味着改变

速度,水平表示常速,高的值表示增加速度。

(图10-036)

在合成图像或层窗口中,运动路径上点间的间隔指明了速度,每个点代表合成图像的一

个帧,均匀的间隔表示常速,大的间隔表示速度较快。使用Hold 插值的关键帧没有点显示, 因为关键帧值之间无中间的过渡,层只是在下一位置关键帧值处显示。

在下图中

A :密集的点表示速度较慢

B :点间距离不一致表示变化了速度

C :相距较远的点表示速度较快

跟我学视频系列After effects 6.0 由入门到精通

(图10-037)

10.7 控制关键帧间的速度

在合成图像或层窗口中,可以在运动路径上调节两个关键帧间的空间距离。移动一个关键帧的位置远离另一个关键帧,则增加速度;移动一个关键帧的位置靠近另一个关键帧则降低速度。

(图10-038)(图10-039)

在时间布局窗口中,可以调节两个关键帧间的时间差别。移动一个关键帧远离另一个关键帧,则降低速度;移动一个关键帧靠近另一个关键帧则增加速度。

(图10-040)

跟我学视频系列 After effects 6.0 由入门到精通

(图10-041)

应用Easy Keyframe 关键帧助理。该助理当运动向前并放弃一个关键帧时,自动调节变 化速度(Easy Eade 关键帧助理章节)。

10.8 精调速度

After effects 可以使用速率图或速度图来调节运动路径或关键帧属性的变化。使你的

动画效果更加接近自然。在Timeline Windows 时间线编辑窗口中编辑关键帧,使其只在一个 关键帧前或一个关键帧后移动更缓慢,或者使层在某段距离内快速移动,然后有平稳的慢下

来。通过调节图形的上升和下降,可以控制从关键帧到关键帧值变化的快慢,每个时间插值

法对加速或减速的影响是不同的,如果没有得到满意的结果,可以试使用其它的插值法。

(图10-042)

在运动路径上调节速度时,首先设置运动路径的形状,然后在速率图中使用松弛句柄() 精调速度关系。松弛句柄在加速和减速方面提供了最直接的控制,也同时或分别控制临近或 离开关键帧的值,当想左边拖动进入句柄时,增加前一关键帧值的影响;向右边拖动时,降 低前一关键帧值的影响;向上或向下拖动时,增加或降低速度,离开句柄以相同方式影响下 一关键帧。

在下图中

A :进入松弛句柄

B :速度控制

C :离开松弛句柄

(图10-043)

注意:如果下一个句柄影响多个关键帧时,可以使用Roving 关键帧。

精调关键帧间的速度的步骤:

1.在Timeline Windows 时间线编辑窗口中,展开要调节的关键帧的速率或速度图,然 后单击属性名左边的小三角展开速率图或速度图。

2.在要调整的关键帧上,拖动两个松弛句柄,向上增加、向下减少进入或离开关键帧的 速度。

(图10-044)

分别精调进入和离开帧的速度的步骤:

(图10-045)

1.在Timeline Windows 时间线编辑窗口中,显示要调整的关键帧速率图或速度图。 2.在要调整的关键帧上,按住Ctrl 向上或向下拖动两个松弛句柄中的一个。

(图10-046)

重新连接分开的松弛句柄的步骤:

(图10-047)

1.在Timeline Windows时间线编辑窗口中,显示要调整的关键帧速率图或速度图。

2.在要调整的关键帧上,按住Ctrl向上或向下拖动两个松弛句柄中的一个,直到与另一个句柄相连。

10.8.1 调节速率图或速度图的边界

当拖动松弛句柄超过图形的上下边界时,After Effects基于拖动到边界外的最重新计

算的最小值或最大值,重画图形,这样,对层属性指定的所有值均显示在图中。当要对速度进行更大的变化时,可以手动调节速度图或速率图的边界尺寸。

调节速率图或速度图边界的方法:

将指针工具指定在图形的边界上,当鼠标变为双箭头光标时,向上或向下拖动。

(图10-048) (图10-049)

10.8.2 产生一个跳动或陡峰

可以使用松弛句柄模拟在蹦球中所见到的加速效果,当产生这种类型的效果时,速率图或速度图显示为一陡峭的峰形。

产生一个跳跃或陡峰的步骤:

1.Timeline Windwos时间线编辑窗口中,扩展要调整的关键帧的速率或速度图,单击属性名右边的小三角显示速度图或速率图。

2. 要的关键帧上,向上拖动松弛句柄直至靠近图形顶部。

(图10-050)(图10-051)

插值法和拟合实验报告(数值计算)

插值法和拟合实验报告 一、 实验目的 1.通过进行不同类型的插值,比较各种插值的效果,明确各种插值的优越性; 2.通过比较不同次数的多项式拟合效果,了解多项式拟合的原理; 3.利用matlab 编程,学会matlab 命令; 4.掌握拉格朗日插值法; 5.掌握多项式拟合的特点和方法。 二、 实验题目 1.、插值法实验 将区间[-5,5]10等分,对下列函数分别计算插值节点 k x 的值,进行不同类型 的插值,作出插值函数的图形并与)(x f y =的图形进行比较: ;11)(2x x f += ;a r c t a n )(x x f = .1)(42 x x x f += (1) 做拉格朗日插值; (2) 做分段线性插值; (3) 做三次样条插值. 2、拟合实验 给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数 ),(i i y x 和拟合函数的图形。 三、 实验原理 1.、插值法实验

∏∑∏∏∏∑∑≠==≠=≠=≠=+-==--= =-= ==-=-=----==++==j i j j i i i i i n i i n n j i j j n j i j j i i n j i j j n i i i n i i n n n o i n i i n x x x x x y x l x L x x c n i x x c x x x c x x x x x x x x c y x l x L y x l y x l y x l x L ,00 ,0,0,01100 00 )(l )()() (1 ,1,0, 1)()(l ) ()())(()()()()()()()(, 故, 得 再由,设 2、拟合实验

计算方法 课内实验 插值法与函数逼近

《计算方法》课内实验报告 学生姓名:张学阳1009300132 及学号: 学院: 理学院 班级: 数学101 课程名称:计算方法 实验题目:插值法与函数逼近 指导教师 宋云飞讲师 姓名及职称: 朱秀丽讲师 尚宝欣讲师 2012年10月15日

目录 一、实验题目.......................................................... 错误!未定义书签。 二、实验目的.......................................................... 错误!未定义书签。 三、实验内容.......................................................... 错误!未定义书签。 四、实现结果.......................................................... 错误!未定义书签。 五、实验体会或遇到问题 (6)

插值法与函数逼近 二、实验目的 1.熟悉matlab 编写及运行数值计算程序的方法。 2.进一步理解插值法及函数逼近方法的理论基础。 3.进一步掌握给定数据后应用插值法及函数逼近方法进行数据处理并给出图示结果的实际操作过程。 三、实验内容 1.已知函数在下列各点的值为 试用4次牛顿插值多项式)(4x P 及三次样条函数)(x S (自然边界条件)对数据进行插值。给出求解过程,并用图给出 (){},10,1,0),()(,08.02.0,,4 ===+=i x S y x P y i x y x i i i i i 及。 2.下列数据点的插值 可以得到平方根函数的近似。 (1)用这9个点作8次多项式插值)(8x L 。 (2)用三次样条(第一类边界条件)插值给出)(x S 。 给出求解过程,在区间[0,64]上作图,从得到的结果看,在区间[0,64]上哪种插值结果更精确?在区间[0,1]上两种插值哪个更精确? 3.由实验给出数据表 试求3次、4次多项式的曲线拟合,再根据数据曲线形状,求一个另外函数的拟合曲线。给出求解过程,用图表示实验数据曲线及三种拟合曲线。

插值法实验报告

实验二插值法 1、实验目的: 1、掌握直接利用拉格郎日插值多项式计算函数在已知点的函数值;观察拉格郎日插值的龙格现象。 2、了解Hermite插值法、三次样条插值法原理,结合计算公式,确定函数值。 2、实验要求: 1)认真分析题目的条件和要求,复习相关的理论知识,选择适当的解决方案和算法; 2)编写上机实验程序,作好上机前的准备工作; 3)上机调试程序,并试算各种方案,记录计算的结果(包括必要的中间结果); 4)分析和解释计算结果; 5)按照要求书写实验报告; 3、实验内容: 1) 用拉格郎日插值公式确定函数值;对函数f(x)进行拉格郎日插值,并对f(x)与插值多项式的曲线作比较。 已知函数表:(0.56160,0.82741)、(0.56280,0.82659)、(0.56401,0.82577)、(0.56521,0.82495)用三次拉格朗日插值多项式求x=0.5635时函数近似值。 2) 求满足插值条件的插值多项式及余项 1) 4、题目:插值法 5、原理: 拉格郎日插值原理: n次拉格朗日插值多项式为:L n (x)=y l (x)+y 1 l 1 (x)+y 2 l 2 (x)+…+y n l n (x)

n=1时,称为线性插值, L 1(x)=y (x-x 1 )/(x -x 1 )+y 1 (x-x )/(x 1 -x )=y +(y 1 -x )(x-x )/(x 1 -x ) n=2时,称为二次插值或抛物线插值, L 2(x)=y (x-x 1 )(x-x 2 )/(x -x 1 )/(x -x 2 )+y 1 (x-x )(x-x 2 )/(x 1 -x )/(x 1 -x 2 )+y 2 (x -x 0)(x-x 1 )/(x 2 -x )/(x 2 -x 1 ) n=i时, Li= (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) (X-X0)……(X-X i-1)(x-x i+1) ……(x-x n) 6、设计思想: 拉格朗日插值法是根据n + 1个点x0, x1, ... x n(x0 < x1 < ... x n)的函数值f (x0), f (x1) , ... , f (x n)推出n次多項式p(x),然后n次多項式p (x)求出任意的点x对应的函数值f (x)的算法。 7、对应程序: 1 ) 三次拉格朗日插值多项式求x=0.5635时函数近似值 #include"stdio.h" #define n 5 void main() { int i,j; float x[n],y[n]; float x1; float a=1; float b=1; float lx=0; printf("\n请输入想要求解的X:\n x="); scanf("%f",&x1); printf("请输入所有点的横纵坐标:\n"); for(i=1;i

实验四插值法

实验四、插值法 插值法是函数逼近的一种重要方法,它是数值积分、微分方程数值解等数值计算的基础与工具,其中多项式插值是最常用和最基本的方法。拉格朗日插值多项式的优点是表达式简单明确,形式对称,便于记忆,它的缺点是如果想要增加插值节点,公式必须整个改变,这就增加了计算工作量。而牛顿插值多项式对此做了改进,当增加一个节点时只需在原牛顿插值多项式基础上增加一项,此时原有的项无需改变,从而达到节省计算次数、节约存储单元、应用较少节点达到应有精度的目的。 一、实验目的 1、理解插值的基本概念,掌握各种插值方法,包括拉格朗日插值和牛顿插值等,注意其不同特点; 2、通过实验进一步理解并掌握各种插值的基本算法。 二、Matlab命令和程序 命令poly:创建一个向量,其分量为一个多项式的系数,该多项式具有给定的根。 命令polyval:求多项式的值, 命令 conv: 创建一个向量,其分量为一个多项式的系数,该多项式是另外两个多项式的积 polyval(C,2> >> P=poly(2> P=1 -2

Q=poly(3> Q=1 -3 >> conv(P,Q> ans= 1 -5 6 >> polyval(P,2> ans= 1、拉格朗日插值( 基于N+1个点,计算拉格朗日多项式> function [C,L]=lagran(X,Y> %input --X is a vector that contains a list of abscissasb5E2RGbCAP % Y is a vector that contains a list of ordinatesp1EanqFDPw %output--C is a matrix that contains the coefficient of the lagraneDXDiTa9E3d % interplatory polynomial % -- L is a matrix that contains the Lagrange coefficent polynomialsRTCrpUDGiT w=length(X>。 n=w-1。

MATLAB三次样条插值之三弯矩法

MATLAB三次样条插值之三弯矩法 首先说这个程序并不完善,为了实现通用(1,2,…,n)格式解题,以及为调用追赶法程序,没有针对节点数在三个以下的情况进行分类讨论。希望能有朋友给出更好的方法。 首先,通过函数 sanwanj得到方程的系数矩阵,即追赶法方程的四个向量参数,接下来调用 追赶法(在intersanwj函数中),得到三次样条分段函数系数因子,然后进行多项式合并得 到分段函数的解析式,程序最后部分通过判断输入值的区间自动选择对应的分段函数并计算改 点的值。附:追赶法程序 chase %%%%%%%%%%%%%% function [newv,w,newu,newd]=sanwj(x,y,x0,y0,y1a,y1b) % 三弯矩样条插值 % 将插值点分两次输入,x0 y0 单独输入 % 边值条件a的二阶导数 y1a 和b的二阶导数 y1b,这里建议将y1a和y1b换成y2a和 y2b,以便于和三转角代码相区别 n=length(x);m=length(y); if m~=n error('x or y 输入有误,再来'); end v=ones(n-1,1);u=ones(n-1,1);d=zeros(n-1,1); w=2*ones(n+1); h0=x(1)-x0; h=zeros(n-1,1); for k=1:n-1 h(k)=x(k+1)-x(k); end v(1)=h0/(h0+h(1)); u(1)=1-v(1); d(1)=6*((y(2)-y(1))/h(1)-(y(1)-y0)/h0)/(h0+h(1)); % for k=2:n-1 v(k)=h(k-1)/(h(k-1)+h(k)); u(k)=1-v(k); d(k)=6*((y(k+1)-y(k))/h(k)-(y(k)-y(k-1))/h(k-1))/(h(k-1)+h(k)); end newv=[v;1]; newu=[1;u]; d0=6*((y(1)-y0)/h0-y1a)/h0;

实验3 插值方法

0实验3 Matlab编程实现Lagrange插值算法 复习: 1、输出一个正整数,求该正整数的阶乘。 函数参考: 2、编写函数实现对任意输入一个向量的排序(向量里的元素从小到大)函数参考:

Lagrange 插值算法 一、理论知识: 1、线性插值 101001011)(y x x x x y x x x x x L ???? ??--+???? ??--= 2、二次插值 2211002)()()()(y x l y x l y x l x L ++= ))(() )(()(2010210x x x x x x x x x l ----= ,) )(())(()(2101201x x x x x x x x x l ----=, ))(())(()(1202102x x x x x x x x x l ----= 3、n 次Lagrange 插值 ∑==+++=n k k k n n n y x l y x l y x l y x l x L 01100)()()()()( ) ())(())(() ())(())(()(111111n k k k k k k o k n k k o k x x x x x x x x x x x x x x x x x x x x x l ----------= +-+- ∑∏=≠=???? ? ?????--=n k k n k j j j k j n y x x x x x L 00)()()( 二、实验题目: 1、 已知11=,24=,39=,用线性和二次插值求5的近似值。 线性插值 你选择的节点是: 你的程序: 插值结果:

计算方法实验

算方法实验指导 姓名学号院系专业哈尔滨工业大学

计算方法实验指导 根据实际问题建立的数学模型,一般不能求出所谓的解析解,必须针对数学模型 的特点确定适当的计算方法,编制出计算机能够执行的计算程序,输入计算机,进行 调试,完成运算,如果计算结果存在问题或不知是否正确,还需要重新确定新的计算 方法,再编制出计算程序,输入计算机,重新调试,完成运算,直至获得正确的计算 结果,这就是数值计算的全部过程。 学生在学习“计算方法”和“高级语言”等课程时普遍存在的问题是:只会套用 教科书中的标准程序进行数值计算,很少有人能够独立地将学过的数值算法编制成计 算机程序,至于灵活应用已经掌握的算法求解综合性较大的课题,则更是困难的事情。 编写《计算方法实验指导》的目的是:突出数值计算程序结构化的思想。提高学 生的编程能力,加深对“计算方法”课程内容的理解和掌握,为”计算方法“课程的 教学服务,进一步奠定从事数值计算工作的基础。具体地 1. 根据“计算方法”课程内容的特点,给出五个典型算法的分析流程,学生可以 利用所掌握的 “高级语言”顺利地编制出计算机程序,上机实习,完成实验环节的教 学要求。 2. 所有的计算实习题目都经过任课教师逐一检验,准确无误。 3. 充分利用循环的思想、 迭代的思想, 给出算法结构描述和程序语言的对应关系, 有利于学生编 制相应的程序。 4. 结合实习题目,提出实验要求,要求学生按规范格式写出相应的实验报告,实 验报告成绩记入 期末总成绩。需要提醒学生:不能简单地套用现成的标准程序完成实 验题目,应当把重点放在对算法的理解、程序的优化设计、上机调试和计算结果分析 上,否则就失去实验课的目的啦。 5. 五个具体的实验题目是: 实验题目 实验题目 实验题目 实验题目 实验题目 要求必须完 成其中三个(如果全部完成更好) 。 1 拉格朗日 (Lagrange) 插值 2 龙贝格 (Romberg) 积分法 3 四阶龙格—库塔 (Runge — Kutta) 方法 4 牛顿 (Newton) 迭代法 5 高斯 (Gauss) 列主元消去法

计算方法三次样条插值课程设计

摘要 本文细致的讲解了三次样条插值函数的产生及在实际中解决的问题,通过MATLAB的程序编写,可以将复杂的计算省去,直接的给出了三次样条插值的结果与实际结果间的误差,验证实际结果和理论值的一致性。避免了求解方程中的不必要计算,使求解效率得到显著的提高。 关键词插值函数三次样条插值 MATLAB

1 三次样条插值函数概论 当插值节点很多时,插值多项式的次数就会很高,这不仅增大了计算量,还会影响结果的精确度.虽然可以采用上述分段插值,但是主要缺点就是个分段接头处不光滑,插值函数的导数不连续,因此想构造这样的插值:既能分段的低次插值,又能保证接头处的光滑,就产生了三次样条插值函数. 1.1定义 设函数()f x 市区间[a,b]上的二次连续可微函数,在区间[a,b]上给处一个划分。设函数()f x 是区间[a,b]上的一个划分 011...n n a x x x x b -?=<<<<= 如果函数()S x 满足条件 (1)在每个小区间1[,]k k x x +(k=1,2,….,n )上()S x 是一个部超过m 次的多项式。 (2)在节点k x (k=1,2,….,n )处具有m-1阶的连续导数。 (3)()()(0,1,2,...) j j s x f x j n == 1.2三次样条差值函数的构造 由于三次样条插值我、函数s(x)的插值节点处的二阶导数存在,因此令各节点处的二阶导数为 ' ()(0,1,...,)k s x m k n == (1.01) 根据样条插值函数的定义,三次样条插值函数是s(x)在每一个小区间)1....,1,0](,[]1-=+n k x x k k 上市不超过三次的多项式。在每一个小区间 )1....,1,0](,[]1-=+n k x x k k 上,其二阶导数为线性函数,即 '' 11 11()k k k k k k k k x x x x s x m m x x x x ++++--=+-- (1.02) 对式(1.02)积分两次,则得到 k k k k k k k k k b x x a h x x m h x x m x s +-+-++=++)(6)(6)()(3 1 3 1 (1.03)

计算方法-插值方法实验

实验一插值方法 一. 实验目的 (1)熟悉数值插值方法的基本思想,解决某些实际插值问题,加深对数值插值方法 的理解。 (2)熟悉Matlab 编程环境,利用Matlab 实现具体的插值算法,并进行可视化显示。 二. 实验要求 用Matlab 软件实现Lagrange 插值、分段线性插值、三次Hermite 插值、Aitken 逐步插值算法,并用实例在计算机上计算和作图。 三. 实验内容 1. 实验题目 (1 ) 已 知概 率积 分dx e y x x ?-= 2 2 π 的数据表 构造适合该数据表的一次、二次和三次Lagrange 插值公式,输出公式及其图形,并计算x =0.472时的积分值。 答: ①一次插值公式: 输入下面内容就可以得到一次插值结果 >> X=[0.47,0.48];Y=[0.4937452,0.5027498]; >> x=0.472; >> (x-X(2))/(X(1)-X(2))*Y(1)+(x-X(1))/(X(2)-X(1))*Y(2) ans =0.495546120000000 >> ②两次插值公式为: 输入下面内容就可以得到两次插值结果 >> X=[0.46,0.47,0.48];Y=[0.4846555,0.4937452,0.5027498]; >> x=0.472; >>(x-X(2))*(x-X(3))/((X(1)-X(2))*(X(1)-X(3)))*Y(1)+(x-X(1))*(x-X(3))/((X(2)-X(1))*(X(2)-X(3)))*Y(2)+(x-X(2))*(x-X(1))/((X(3)-X(2))*(X(3)-X(1)))*Y(3) i 0 1 2 3 x 0.46 047 0.48 0.49 y 0.4846555 0.4937452 0.5027498 0.5116683

数值分析(计算方法)实验一

《数值分析》 课程实验指导书 实验一 函数插值方法 一、问题提出 对于给定的一元函数)(x f y =的n+1个节点值(),0,1,,j j y f x j n == 。试用Lagrange 公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: (1) j x 0.4 0.55 0.65 0.80 0.95 1.05 j y 0.41075 0.57815 0.69675 0.90 1.00 1.25382 求五次Lagrange 多项式5L ()x ,和分段三次插值多项式,计算(0.596)f ,(0.99)f 的值。(提示:结果为(0.596)0.625732f ≈, (0.99) 1.05423f ≈ ) (2) j x 1 2 3 4 5 6 7 j y 0.368 0.135 0.050 0.018 0.007 0.002 0.001 试构造Lagrange 多项式6L ()x ,计算的(1.8)f ,(6.15)f 值。(提示:结果为(1.8)0.164762f ≈, (6.15)0.001266f ≈ ) 二、要求 1、 利用Lagrange 插值公式 00,()n n i n k k i i k k i x x L x y x x ==≠??-= ?-??∑∏编写出插值多项式程序; 2、 给出插值多项式或分段三次插值多项式的表达式; 3、 根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何; 4、 对此插值问题用Newton 插值多项式其结果如何。

四、实验分析: Lagrange 插值多项式的表达式: 1,,2,1,)()()(, )()(1111+=--==∏∑+≠=+=n i x x x x x l x l y x L n i j j j i j i n i i i 。 其中)(x l i 被称为插值基函数,实际上是一个n 次多项式。)(x l i 的这种表示具有较好的对称性。公式具有两大优点:(1)求插值多项式,不需要求解线性方程组,当已知数据点较多时,此公式更能显示出优越性。(2)函数值可以用符号形式表示,数据点未确定的纵坐标可用多项式表示。 Newton 插值多项式如下: 10010,()()[,,]()k n n j k k j j k N x f x f x x x x -==≠=+?-∑∏ 其中: 00,0()()[,,]k i k i i j j j i k f x x x f x x ==≠-=∑∏ Newton 插值多项式的优点是:当每增加一个节点时,只增加一项多项式。 三、实验程序及注释 1、m 程序: function [c,l]=lagran(x,y) % x 为n 个节点的横坐标组成的向量,y 为纵坐标所组成的向量 % c 为所得插值函数的系数所组成的向量 w=length(x); n=w-1; l=zeros(w,w); for k=1:n+1 v=1; for j=1:n+1 if k~=j v=conv(v,poly(x(j)))/(x(k)-x(j)); end end l(k,:)=v; end c=y*l; function fi=Lagran_(x,f,xi) fi=zeros(size(xi)); n=length(f); for i=1:n

实验5 插值方法

实验5 插值方法 一、实验目的及意义 [1] 了解插值的基本原理 [2] 了解拉格朗日插值、线性插值、样条插值的基本思想; [3] 了解三种网格节点数据的插值方法的基本思想; [4] 掌握用MATLAB 计算三种一维插值和两种二维插值的方法; [5] 通过范例展现求解实际问题的初步建模过程; 通过自己动手作实验学习如何用插值方法解决实际问题,提高探索和解决问题的能力。通过撰写实验报告,促使自己提炼思想,按逻辑顺序进行整理,并以他人能领会的方式表达自己思想形成的过程和理由。提高写作、文字处理、排版等方面的能力。二、实验内 容 1.编写拉格朗日插值方法的函数M 文件;2.用三种插值方法对已知函数进行插值计算,通过数值和图形输出,比较它们的效果;3.针对实际问题,试建立数学模型,并求解。 三、实验步骤 1.开启软件平台——MATLAB ,开启MATLAB 编辑窗口; 2.根据各种数值解法步骤编写M 文件 3.保存文件并运行; 4.观察运行结果(数值或图形); 5.写出实验报告,并浅谈学习心得体会。 四、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会) 基础实验 1. 一维插值 利用以下一些具体函数,考察分段线性插值、三次样条插值和拉格朗日多项式插值等三种插值方法的差异。 1) 2 11 x +,x ∈[-5,5]; 2)sin x , x ∈[0,2π]; 3)cos 10 x , x ∈[0,2π]. 注意:适当选取节点及插值点的个数;比较时可以采用插值点的函数值与真实函数值的 差异,或采用两个函数之间的某种距离。 2.高维插值 对于二维插值的几种方法:最邻近插值、分片线性插值、双线性插值、三次插值等,利用如下函数进行插值计算,观察其插值效果变化,得出什么结论? 1) ())(sin ),(px t t x f -=ω,参数p =1/2000~1/200;采样步长为:t =4ms~4s ;

插值与多项式逼近的数组计算方法实验讲解

插值与多项式逼近的数组计算方法实验 郑发进 2012042020022 【摘要】计算机软件中经常要用到库函数,如) cos,x e,它们 (x (x sin,) 是用多项式逼近来计算的。虽然目前最先进的逼近方法是有理函数(即多项式的商),但多项式逼近理论更适于作为数值分析的入门课程。在已知数据具有高精度的情况下,通常用组合多项式来构造过给定数据点的多项式。构造组合多项式的方法有许多种,如线性方程求解、拉格朗日系数多项式以及构造牛顿多项式的方分和系数表。 关键字泰勒级数、拉格朗日插值法、牛顿插值法、帕德逼近 一、实验目的 1.通过具体实验,掌握泰勒级数、拉格朗日插值法、牛顿插值法、帕德逼近的编程技巧。 2.比较各插值方法的优劣并掌握。 二、实验原理 1.泰勒级数 在数学中,泰勒级数(英语:Taylor series)用无限项连加式——级数来表示一个函数,这些相加的项由函数在某一点的导数求得。 如果在点x=x 具有任意阶导数,则幂级数 称为在点x 处的泰勒级数。 =0,得到的级数 在泰勒公式中,取x 称为麦克劳林级数。函数的麦克劳林级数是x的幂级数,那么这种展开

是唯一的,且必然与的麦克劳林级数一致。 2.拉格朗日插值法 如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日(插值)多项式。数学上来说,拉格朗日插值法可以给出一个恰好穿过二维平面上若干个已知点的多项式函数。 在平面上有(x 1,y 1)(x 2,y 2)...(x n ,y n )共n 个点,现作一条函数f (x )使其图像经过这n 个点。 作n 个多项式p i (x),i=1,2,3...,n,使得 最后可得 3.牛顿插值法 插值法利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化, 这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值。 牛顿插值通过求各阶差商,递推得到的一个公式: 10121()()()()()()N N N N P x P x a x x x x x x x x --=+---- 牛顿插值与拉格朗日插值具有唯一性。 4.帕德逼近 它不仅与逼近论中其他许多方法有着密切的关系,而且在实际问题特别是许多物理问题中有着广泛的应用。设是在原点某邻域内收敛的、具有复系数的麦克劳林级数。欲确定一个有理函数,式中,使得前次方的系数为0,即使得 此处约定qk =0(k>n )。虽然所求得的Pm(z)和Qn(z)不惟一,但是比式却总是惟一的。有理函数称为F(z)的(m,n)级帕德逼近,记为(m/n)。由(m/n)所形成的阵列称为帕德表。

计算方法--插值法与拟合实验

实验三 插值法与拟合实验 一、实验目的 1. 通过本实验学会利用程序画出插值函数,并和原图形相比较 2. 通过本实验学会拟合函数图形的画法,并会求平方误差 二、实验题目 1. 插值效果的比较 实验题目:区间[]5,5-10等分,对下列函数分别计算插值节点k x 的值,进行不同类型的插值,作出插值函数的图形并与)(x f y =的图形进行比较: 2 11)(x x f +=; x x f arctan )(=; 4 41)(x x x f += (1) 做拉格朗日插值; (2) 做三次样条插值. 2. 拟合多项式实验 实验题目:给定数据点如下表所示: 分别对上述数据作三次多项式和五次多项式拟合,并求平方误差,作出离散函数),(i i y x 和拟合函数的图形. 三、实验原理 本实验应用了拉格朗日插值程序、三次样条插值程序、多项式拟合程序等实验原理. 四、实验内容 1(1) figure x=-5:0.2:5; y=1./(1+x.^2); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=1./(1+x1.^2); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25);

m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 1(2) x=-5:0.2:5; y=atan(x); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=atan(x1); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25); m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 1(3) x=-5:0.2:5; y=x.^2./(1+x.^4); plot(x,y,'r'); hold on %拉格朗日插值 x1=-5:1:5; y1=x1.^2./(1+x1.^4); xx=-4.5:0.5:4.5; yy=malagr(x1,y1,xx); plot(xx,yy,'+') %三次样条插值 dy0=1./(1+25); dyn=1./(1+25); m=maspline(x1,y1,dy0,dyn,xx); plot(xx,m,'ok') 2. x=[-1.5 -1.0 -0.5 0.0 0.5 1.0 1.5]'; y=[-4.45 -0.45 0.55 0.05 -0.44 0.54 4.55]'; plot(x,y,'or'); hold on %三次多项式拟合 p1=mafit(x,y,3);

三次样条插值方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

三次样条插值方法的应用 一、问题背景 分段低次插值函数往往具有很好的收敛性,计算过程简单,稳定性好,并且易于在在电子计算机上实现,但其光滑性较差,对于像高速飞机的机翼形线船体放样等型值线往往要求具有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(即所谓的样条)用压铁固定在样点上,在其他地方让他自由弯曲,然后沿木条画下曲线,称为样条曲线。样条曲线实际上是由分段三次曲线并接而成,在连接点即样点上要求二阶导数连续,从数学上加以概括就得到数学样条这一概念。下面我们讨论最常用的三次样条函数及其应用。 二、数学模型 样条函数可以给出光滑的插值曲线(面),因此在数值逼近、常微分方程和偏微分方程的数值解及科学和工程的计算中起着重要的作用。 设区间[]b ,a 上给定有关划分b x x n =<<<= 10x a ,S 为[]b ,a 上满足下面条件的函数。 ● )(b a C S ,2∈; ● S 在每个子区间[]1,+i i x x 上是三次多项式。 则称S 为关于划分的三次样条函数。常用的三次样条函数的边界条件有三种类型: ● Ⅰ型 ()()n n n f x S f x S ''0'',==。 ● Ⅱ型 ()()n n n f x S f x S ''''0'''',==,其特殊情况为()()0''''==n n x S x S 。 ● Ⅲ型 ()() 3,2,1,0,0==j x S x S n j j ,此条件称为周期样条函数。 鉴于Ⅱ型三次样条插值函数在实际应用中的重要地位,在此主要对它进行详细介绍。 三、算法及流程 按照传统的编程方法,可将公式直接转换为MATLAB 可是别的语言即可;另一种是运用矩阵运算,发挥MATLAB 在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为spline2.m 。 Matlab 代码如下: function s=spline2(x0,y0,y21,y2n,x) %s=spline2(x0,y0,y21,y2n,x) %x0,y0 are existed points,x are insert points,y21,y2n are the second

计算方法上机实验报告——拉格朗日插值问题

计算方法上机实验报告——拉格朗日插值问题 一、方法原理 n次拉格朗日插值多项式为:Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+ynln(x) n=1时,称为线性插值,L1(x)=y0(x-x1)/(x0-x1)+y1(x-x0)/(x1-x0)=y0+(y1-x0)(x-x0)/(x1-x0) n=2时,称为二次插值或抛物线插值,精度相对高些 L2(x)=y0(x-x1)(x-x2)/(x0-x1)/(x0-x2)+y1(x-x0)(x-x2)/(x1-x0)/(x1-x 2)+y2(x-x0)(x-x1)/(x2-x0)/(x2-x1) 二、主要思路 使用线性方程组求系数构造插值公式相对复杂,可改用构造方法来插值。 对节点xi(i=0,1,…,n)中任一点xk(0<=k<=n)作一n次多项式lk(xk),使它在该点上取值为1,而在其余点xi(i=0,1,…,k-1,k+1,…,n)上为0,则插值多项式为Ln(x)=y0l0(x)+y1l1(x)+y2l2(x)+…+ynln(x) 上式表明:n个点xi(i=0,1,…,k-1,k+1,…,n)都是lk(x)的零点。可求得lk 三.计算方法及过程:1.输入节点的个数n 2.输入各个节点的横纵坐标 3.输入插值点 4.调用函数,返回z 函数语句与形参说明 程序源代码如下: 形参与函数类型 参数意义 intn 节点的个数 doublex[n](double*x) 存放n个节点的值 doubley[n](double*y) 存放n个节点相对应的函数值 doublep 指定插值点的值 doublefun() 函数返回一个双精度实型函数值,即插值点p处的近似函数值 #include #include usingnamespacestd; #defineN100 doublefun(double*x,double*y,intn,doublep); voidmain() {inti,n; cout<<"输入节点的个数n:"; cin>>n;

数值计算方法实验报告

差值法实验日志 实验题目:插值法 实验目的: 1.掌握拉格朗日插值、牛顿插值、分段低次插值和样条插值的方法。 2.对四种插值结果进行初步分析。 实验要求: (1)写出算法设计思想; (2)程序清单; (3)运行的结果; (4)所得图形; (5)四种插值的比较; (6)对运行情况所作的分析以及本次调试程序所取的经验。如果程序未通过,应分析其原因。 实验主要步骤: 1.已知函数) f满足: (x x0.0 0.1 0.195 0.3 0.401 0.5 f(0.39894 0.39695 0.39142 0.38138 0.36812 x ) 0.35206 (1)用分段线性插值; 打开MATLAB,按以下程序输入: x0=-5:5; y0=1./(1+x0.^2); x=-5:0.1:5; y=1./(1+x.^2); y1=lagr(x0,y0,x); y2=interp1(x0,y0,x); y3=spline(x0,y0,x);

for k=1:11 xx(k)=x(46+5*k); yy(k)=y(46+5*k); yy1(k)=y1(46+5*k); yy2(k)=y2(46+5*k); yy3(k)=y3(46+5*k); end [xx;yy;yy2;yy3]' z=0*x; plot(x,z,x,y,'k--',x,y2,'r') plot(x,z,x,y,'k--',x,y1,'r') pause plot(x,z,x,y,'k--',x,y3,'r') 回车得以下图形:

(2) 拉格朗日插值。 创建M 文件,建立lagr 函数: function y=lagr1(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 新建一个M 文件,输入: x0=[0.0 0.1 0.195 0.3 0.401 0.5]; y0=[0.39894 0.39695 0.39142 0.38138 0.36812 0.35206]; x=0.0:0.01:0.5; y1=lagr1(x0,y0,x); 00.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

实验四 Lagrange函数插值方法(新)

实验四 Lagrange函数插值方法 一、问题提出 对于给定的一元函数的n+1个节点值 。试用Lagrange公式求其插值多项式或分段二次Lagrange 插值多项式。 数据如下: 试构造Lagrange多项式L,计算和的值。 二、要求 1、利用Lagrange插值公式 编写出插值多项式程序; 2、给出插值多项式或分段三次插值多项式的表达式; 3、根据节点选取原则,对问题(2)用三点插值或二点插值,其结果如何; 4、对此插值问题用Newton插值多项式其结果如何。 三、目的和意义 1、学会常用的插值方法,求函数的近似表达式,以解决其它实际问题; 2、明确插值多项式和分段插值多项式各自的优缺点; 3、熟悉插值方法的程序编制; 4、如果绘出插值函数的曲线,观察其光滑性。 四、实验源代码 #include #define N 7 float x[] = {1,2,3,4,5,6,7}; float y[] = {0.368,0.135,0.050,0.018,0.007,0.002,0.001}; float p(float xx)

{ int i,k; _______________ for( i=0; i

MATLAB三次样条插值之三转角法

非常类似前面的三弯矩法,这里的sanzhj函数和intersanzhj作用相当于前面的sanwanj和intersanwj,追赶法程序通用,代码如下。 %%%%%%%%%%%%%%%%%%% function [newu,w,newv,d]=sanzhj(x,y,x0,y0,y1a,y1b) % 三转角样条插值 % 将插值点分两次输入,x0 y0 单独输入 % 边值条件a的一阶导数 y1a 和b的一阶导数 y1b n=length(x);m=length(y); if m~=n error('x or y 输入有误,再来'); end v=ones(n-1,1); u=ones(n-1,1); d=zeros(n-1,1); w=2*ones(n-1,1); h0=x(1)-x0; h=zeros(n-1,1); for k=1:n-1 h(k)=x(k+1)-x(k); end v(1)=h0/(h0+h(1)); u(1)=1-v(1); d(1)=3*(v(1)*(y(2)-y(1))/h(1)+u(1)*((y(1)-y0))/h0); % for k=2:n-1 v(k)=h(k-1)/(h(k-1)+h(k)); u(k)=1-v(k); d(k)=3*(v(k)*(y(k+1)-y(k))/h(k)+u(k)*(y(k)-y(k-1))/h(k-1)); end d(1)=d(1)-u(1)*y1a; d(n-1)=d(n-1)-v(n-1)*y1b; newv=v(1:n-2,:); newu=u(2:n-1,:); %%%%%%%%%%%% function intersanzhj(x,y,x0,y0,y1a,y1b) % 三转角样条插值

计算方法实验一

江苏科技大学 电子信息学院 实验报告 实验名称:插值方法 学号:姓名:班级: 完成日期:2014年10月20日

实验一 插值方法 一、实验目的及意义 [1] 了解插值的基本原理 [2] 了解拉格朗日插值、线性插值、样条插值的基本思想; [3] 了解三种网格节点数据的插值方法的基本思想; [4] 掌握用MATLAB 计算三种一维插值和两种二维插值的方法; [5] 通过范例展现求解实际问题的初步建模过程; 通过自己动手作实验学习如何用插值方法解决实际问题,提高探索和解决问题的能力。通过撰写实验报告,促使自己提炼思想,按逻辑顺序进行整理,并以他人能领会的方式表达自己思想形成的过程和理由。提高写作、文字处理、排版等方面的能力。 二、实验内容 1.用MATLAB 或Visual C++实现拉格朗日插值方法;2.用三种插值方法对已知函数进行插值计算,通过数值和图形输出,比较它们的效果;3.针对实际问题,试建立数学模型, 并求解。 三、实验步骤 1.开启软件平台——MATLAB 或Visual C++,开启其编辑窗口; 2.根据各种数值解法步骤编写成代码文件; 3.保存文件并运行; 4.观察运行结果(数值或图形); 5.写出实验报告,并浅谈学习心得体会。 四、实验要求与任务 根据实验内容和步骤,完成以下具体实验,要求写出实验报告(实验目的→问题→数学模型→算法与编程→计算结果→分析、检验和结论→心得体会) 基础实验 1. 一维插值 利用以下一些具体函数,考察分段线性插值、三次样条插值和拉格朗日多项式插值等三种插值方法的差异。 1) 2 11 x +,x ∈[-5,5]; 2)sin x , x ∈[0,2π]; 3)cos 10 x , x ∈[0,2π]. 注意:适当选取节点及插值点的个数;比较时可以采用插值点的函数值与真实函数值的 差异,或采用两个函数之间的某种距离。 附上你的源代码和比较结果。

相关文档
相关文档 最新文档