FORTRAN实验报告——牛顿插值
- 格式:docx
- 大小:19.36 KB
- 文档页数:4


一、实验目的
通过本次综合实验,掌握数值分析中常用的插值方法、方程求根方法以及数值积分方法,了解这些方法在实际问题中的应用,提高数值计算能力。
二、实验内容
1. 插值方法
(1)拉格朗日插值法:利用已知数据点构造多项式,以逼近未知函数。
(2)牛顿插值法:在拉格朗日插值法的基础上,通过增加基函数,提高逼近精度。
2. 方程求根方法
(1)二分法:适用于函数在区间内有正负值的情况,通过不断缩小区间来逼近根。
(2)Newton法:利用函数的导数信息,通过迭代逼近根。
(3)不动点迭代法:将方程转化为不动点问题,通过迭代逼近根。
3. 数值积分方法
(1)矩形法:将积分区间等分,近似计算函数值的和。
(2)梯形法:将积分区间分成若干等分,用梯形面积近似计算积分。
(3)辛普森法:在梯形法的基础上,将每个小区间再等分,提高逼近精度。
三、实验步骤
1. 拉格朗日插值法
(1)输入已知数据点,构造拉格朗日插值多项式。
(2)计算插值多项式在未知点的函数值。
2. 牛顿插值法
(1)输入已知数据点,构造牛顿插值多项式。
(2)计算插值多项式在未知点的函数值。
3. 方程求根方法
(1)输入方程和初始值。 (2)选择求解方法(二分法、Newton法、不动点迭代法)。
(3)迭代计算,直到满足精度要求。
4. 数值积分方法
(1)输入被积函数和积分区间。
(2)选择积分方法(矩形法、梯形法、辛普森法)。
(3)计算积分值。
四、实验结果与分析
1. 插值方法
(1)拉格朗日插值法:通过构造多项式,可以较好地逼近已知数据点。
(2)牛顿插值法:在拉格朗日插值法的基础上,增加了基函数,提高了逼近精度。
2. 方程求根方法
(1)二分法:适用于函数在区间内有正负值的情况,计算简单,但收敛速度较慢。
(2)Newton法:利用函数的导数信息,收敛速度较快,但可能存在数值不稳定问题。
(3)不动点迭代法:将方程转化为不动点问题,收敛速度较快,但可能存在初始值选择不当的问题。
2,Xn 1]
在计算过程中,若需要再增加插值节点并求出 新的插值函数,则Lagrange插值公式所有的基函 数都要重新计算,造成计算量的很大浪费。而以下 介绍的牛顿插值公式可以克服这一缺陷, 可在原有
插值多项式的基础上灵活的增加插值节点。
一、 差商及其性质:
1、相关定义
设给出函数f(X)在点Xo, x1,…,xn,…上 的函数值,则有:
称flXo’xJ f (Xl)一如应为函数f(x)在
Xi Xo
Xo、Xi点的一阶差商。
一阶差商的差商
f [Xo,X1,X2] f [Xo,X2] f [Xo,X1]
X2 X1
称为函数f (X)在Xo,Xi和X2点的二阶差商
n 1阶差商的差商
f [Xo, ,Xn 2,Xn] f [Xo, , X“ f [Xo,Xi, ,Xn] Xn Xn 1 f [Xo,Xi, ,Xn] f [Xi,Xo, ,Xn] 见插商表4-1
2、性质:
性质1 :差商f[X°,Xi, ,Xn]可表示为函数值的线
n
性组合,即 f [x°,Xi, ,Xn] ai f (Xi),
i 0
n
其中:ai 1 / (Xi Xj)。
j 0, j i
该性质表明:差商与节点的排列次序无关,即:
f [Xi, ,Xn,Xo]
这就是差商的对称性
性质2 f[Xo,Xi ,L ,Xn] f[Xi, L ,Xn] f[Xo 丄,Xn i]
Xn Xo
Q f [Xo,Xi ,L ,Xn] Xo,Xn]
f[Xi 丄,Xn] f[Xi 丄 ,Xn i, Xo]
Xn Xof [Xi 丄 Xn i, f[Xi,L ,Xn] f[X0,Xi ,L ,Xn 1]
xn x0
性质3 设f (x)在所含节点 Xo,X!, ,Xn的区间 [a,b]上有n阶导数,则在该区间内至少有一点
[a,b],使得:
f[Xo,X!, ,Xn] f(n)( )/n!
由该性质可知,若f (X)为n次多项式,则其n阶 差商为一常数。也就是说,当一个函数的 n阶差商 接近于常数时,那么用 n次多项式近似是恰当的。
带重节点的牛顿插值法
牛顿插值法是一种在给定数据点的情况下通过插值函数来逼近真实函数的方法。它属于插值法中的一种,是一种非常有用和广泛使用的数值计算方法。牛顿插值法使用一个多项式函数来逼近真实函数,该函数使用给定的数据点来确定多项式系数。带重节点的牛顿插值法是一种牛顿插值法的扩展形式,可以在数据点重复的情况下使用。
在牛顿插值法中,我们首先将给定的数据点按照节点值从小到大排序。然后我们需要计算每一个节点上的差商,通过差商可以得到一个多项式函数。差商的定义如下:
$f[x_0,x_1]=\frac {f(x_1)-f(x_0)}{x_1-x_0}$
以此类推,差商的递归计算可以用以下公式表示:
$f[x_i,x_{i+1},\dots,x_{i+j}]=\frac
{f[x_{i+1},x_{i+2},\dots,x_{i+j}]-f[x_i,x_{i+1},\dots,x_{i+j-1}]}{x_{i+j}-x_i}$
使用差商的定义和递归公式,我们可以得到一个多项式函数:
$P_n(x)=f[x_0]+f[x_0,x_1](x-x_0)+f[x_0,x_1,x_2](x-x_0)(x-x_1)+\dots+f[x_0,x_1,\dots,x_n](x-x_0)(x-x_1)\dots(x-x_{n-1})$
其中,$f[x_0,x_1,\dots,x_n]$表示一个$n$阶的差商。
但是,如果在给定的数据点中有重复的节点,那么上述算法将不再适用。为了使用带重节点的牛顿插值法,我们需要使用多重差商(divided difference)来计算插值函数。在插值点为$x_0,x_1,\dots,x_n$且有$m+1$个插值点重复的情况下,$m+1$重差商(divided difference)定义为:
对于$m+1$个插值点重复的情况,用多重差商计算插值函数的公式如下:
_
武汉理工大学
学 生 实 验 报 告 书
实验课程名称 数值分析
开 课 学 院 计算机科学与技术学院
指导老师姓名
学 生 姓 名 学生学号 实验课成绩
_
学生专业班级
2010—2010学年 第一学期
实验课程名称: 数值分析
实验项目名称 实验成绩
实验者 专业班级 组别
同组者 实验日期 年 月 日 _
第一部分:实验分析与设计(可加页)
一、实验内容描述(问题域描述)
1、 分别画出Lagrange插值公式、Newton插值公式、分段插值公式和Hermite插值公式的算法流程图
2、 分别用Lagrange插值公式和Newton插值公式通过编程计算函数f(x)的近似值
已知对于f(x)=ex,有数据表如下:
xi 0 0.5 1.0 2.0
f(xi) 1.00000 1.64872 2.71828 7.38906
(1) 对x0=0,x1=0.5利用线性插值计算f(0.25)的近似值;对x0=0.5,x1=1利用线性插值计算f(0.75)的近似值;
(2) 对x0=0,x1=0.5,x2=2利用二次插值计算f(0.25)和f(0.75)的近似值
(3) 对x0=0,x1=0.5,x2=2求f(x)的Hermite插值多项式H5(x);
(4) 分析和比较各插值算法的精度差异
3、 通过编程计算函数f(x)的近似值。已知对于f(x)=,有数据表如下:
xi 2.0 2.1 2.2 2.3 2.4
f(xi) 1.414214 1.449138 1.483340 1.516575 1.549193