计算方法实习报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算方法实习报告
姓名:
班级:
学号:
任课教师:
选题:9.1插值问题的数值实验
9.6线性方程组求解的数值实验
一、课题名称:插值问题的数值实验
二、姓名:童泽兵 班级:9121086701 学号:912108670130
三、摘要:本文通过应用拉格朗日插值法,构造一个适当的函数P(x)作为原函数f(x)的近似,以便对其进行进一步分析和应用。
四、引言
本程序对函数
2
)5(11)(x x f +=
,]1,1[-∈x ,取n+1个基点,n i ih x i ,,2,1,0,1⋯=+-=,其中,
n
h 2
=
,要求: (1)对n=2,4,6,8,10分别作n 次插值多项式)(x P n ,并在同一坐标系分别画出)(x f 与)(x P n
(2)在非节点处分别计算)(x f 与)(x P n 的最大相对误差:
)()
()(max 1
1x f x p x f n x -≤≤-,n=2,4,6,8,10。
(3)根据)(x f 与)(x P n 的图形及最大相对误差通过比较分析与讨论,以寻求更好的插值方法。
五、计算公式
对于函数2)5(11
)(x x f +=
,[]1,1-∈x ,取n+1个基点, ih x i +-=1,n i ,...,2,1,0=,其中
n
h 2
=
(1)插值基函数)
())()()
())()()(110110n i i i i i i n i i x x x x x x x x x x x x x x x x x l i -⋯--⋯--⋯--⋯-=
+-+-((
(2)∑==n
i i i n x f x l x 0
)()()(L
(3)引入符号∏=+-=n j j n x x x w 0
1)()(,∏≠=+-=n
i
j j j i i n x x x w 0
1)()('
(4))(L x n 可表示为)()
()()
()(0
11i n
i i n i n n x f x w x x x w x L ∑
=++-=
(5)插值余项)()!
1()()()()(1)
1(x n f
x Ln x f x Rn n n +++=
-=ωξ
六、程序结构设计 1、数据流向图
∏=+-=n
j j n x x x w 01)()(
ih
x i +-=1 )()
()()
()(0
11i n
i i n i n n x f x w x x x w x L ∑
=++-=
∏≠=+-=n
i
j j j i i n x x x w 01)()('
2、符号引用表
标识符 数学符号 类型 作用 n n Integer 插值次数 h h Single 步长 i,j i,j Integer 计数变量 x() xi Single 基点 f() f(x) Double 函数值 r Rn
Double 最大误差值 w Single 连乘 w1
Single 连乘 L
Ln(x) Double
插值函数值
3.计算机程序
(1)建立绘图坐标系
Picture1.Scale (-1.6, 1.6)-(1.6, -1.6)
Picture1.Line (-1.6, 0)-(1.6, 0)
Picture1.Line (0, -1.6)-(0, 1.6)
Picture1.CurrentX = 1.56
Picture1.CurrentY = -0.05
Picture1.Print "X"
Picture1.CurrentX = -0.05
Picture1.CurrentY = 1.56
Picture1.Print "Y"
Picture1.CurrentX = -0.05
Picture1.CurrentY = -0.05
Picture1.Print "0"
(2)计算f(x)的值,并绘制f(x)的图像:
n = Int(Text1.Text)
h = 2 / n
For i = 0 To n
x(i) = -1 + i * h
f(i) = 1 / (1 + (5 * x(i)) ^ 2)
Next i
For z = -1 To 1 Step 0.0001
Picture1.PSet (z, 1 / (1 + (5 * z) ^ 2)), vbRed
Next z
(3)绘制n次插值函数图像,并找出最大相对误差:w = 1
w1 = 1
L = 0
For y = -0.9999 To 1 Step 0.0001
For s = 0 To n
w = w * (y - x(s))
Next s
For i = 0 To n
For j = 0 To n
If j <> i Then
w1 = w1 * (x(i) - x(j))
End If
Next j
L = L + w * f(i) / ((y - x(i)) * w1)
w1 = 1
Next i