计算方法实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《计算方法》实验指导书
汪荣贵编
计算机学院
计算机应用教研室
2006年2月
前言
《计算方法》所涉及的都是可以直接在计算机上求解的数值方法。这些方法既有数学的抽象性与严密的科学性,又有应用的广泛性与实验的高度技术性。故结合课堂教学,本课程配备适当的上机实验(12个学时),通过实验可以加强学生对数学模型的总体分析,算法选取,上机调试和结果分析等环节的训练。
本实验指导书共包含5个实验,要求学生在12个实验课时内完成,并提交实验报告,以此可作为《计算方法》课程成绩评定的一部分。
目录
前言2
实验一插值与拟合4
1 实验目的4
2 实验内容4
3 算法基本原理5
4 算法描述6
5 计算用例的参考输出6
6 思考题7
实验二数值积分7
1 实验目的7
2 实验内容7
3 算法基本原理8
4 算法描述10
5 计算用例的参考输出10
6思考题10
实验三非线性方程求根迭代法11
1 实验目的11
2 实验内容11
3 算法基本原理12
4 算法描述12
5 计算用例的参考输出13
6 思考题13
实验四求解线性方程组13
1 实验目的13
2 实验内容14
3 算法基本原理15
4 算法描述16
5计算用例的参考输出16 6 思考题17 实验五数值微分18
1 实验目的18
2 实验内容18
3 算法基本原理18
4 算法描述19
5 计算用例的参考输出19
6 思考题20 实验报告内容要求21
实验一 插值与拟合
1 实验目的
(1) 明确插值多项式和分段插值多项式各自的优缺点;
(2) 编程实现拉格朗日插值算法,分析实验结果体会高次插值产生的龙格现象;
(3) 理解最小二乘拟合,并编程实现线性拟合,掌握非线性拟合转化为线性拟合的方法 (4) 运用常用的插值和拟合方法解决实际问题。
2 实验内容
(1) 对于55,11
)(2
≤≤-+=
x x
x f 要求选取11个等距插值节点,分别采用拉格朗日插值和分段线性插值,计算x 为0.5, 4.5处的函数值并将结果与精确值进行比较。
输入:区间长度,n(即n+1个节点),预测点 输出:预测点的近似函数值,精确值,及误差
(2)对于给定的一元函数 ()x f y = 的n+1个节点值 ()i i x f y =()n i ,,1,0 =。
求五次拉格朗日多项式和分段三次插值多项式,计算()()99.0,596.0f f 的值。
输入:数据点集及个数,预测点。 输出:预测点的近似函数值
(3)在某冶炼过程中,根据统计数据的含碳量与时间关系,试求含碳量y 与时间t 的拟合曲线。
输出:拟合函数()t ϕ,并打印出()i t ϕ与()i t y 的误差
提示:近似解析表达式为()3
3221t a t a t a t ++=ϕ
(4)用线性拟合编程实现给药方案
背景知识:一种新药用于临床之前,必须设计给药方案.
临床上,每种药物有一个最小有效浓度c1和一个最大有效浓度c2。
设计给药方案时,要使血药浓度 保持在c1~c2之间。 本题设c1=10,c2=25(ug/ml).
在实验方面,对某人用快速静脉注射方式一次注入该药物300mg 后,在一定时刻t(小时)采集血药,测得血药浓度c(ug/ml)如下表:
t (h) 0.25 0.5 1 1.5 2 3 4 6 8 c (μg/ml) 19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01
问题:
A. 在快速静脉注射的给药方式下,研究血药浓度(单位体积血液中的药物含量)的变化规
律
B. 设计给药方案:每次注射剂量多大;间隔时间多长 提示:
A. 血药浓度的变化规律符合指数关系kt
e v
t c -=300)( B. 将指数关系转化为线性关系
3 算法基本原理
当精确函数 y = f(x) 非常复杂或未知,在一系列节点 x 0 … x n 处测得函数值 y 0 = f(x 0), … y n = f(x n ), 希望由此构造一个简单易算的近似函数 g(x) ≈ f(x),满足条件g(x i ) = f(x i ) (i = 0, … n)。这里的 g(x) 称为f(x) 的插值函数,由插值函数可以去近似估计f(x)在一些未知点处的函数值。最常用的插值函数是多项式插值。
所谓多项式插值即求 n 次多项式x a x a a x P n n +++= 10)(使得)()(i i n x f x P = 基于基函数的拉格朗日插值是构造多项式插值最基本方法。也是推导数值微积分和微分方程数值解的公式的理论基础。
拉格朗日插值公式为:∑==
n
k k
k n x l
y x p 0
)()(其中∏
≠=--=n
k
j j j
k j k x x x x x l 0)(
当结点比较多,次数较高的插值多项式往往发生Runge 现象,分段低次插值是避免Runge 现象的重要手段。分段一次插值将整个区间分段,在每个小区间上,用一次多项式逼近 f (x),直观上即用折线代替曲线,只要区间足够小就可以保证很好的逼近效果,但曲线缺乏光滑性。
除了插值,逼近复杂函数f(x)的另一种方法是拟合。结点数据比较多,或者不够精确,往往采用拟合的方法。用来拟合的简单函数p(x),不需严格通过给定结点,但在这些结点处总体误差2
)
)((i
i
y x p Q -=
∑达到极小,即满足最小二乘拟合的条件。线性拟合是最简单
的拟合方法,许多非线性问题都可以转化为线性拟合。令线性函数为a 0+a 1x ,要确定a 0和a 1,最终求解如下线性方程组:
4算法描述
(1) 拉格朗日插值算法见流程图
(2) 分段线性插值算法要注意以下关键点:
A. 定位:预测点x 在第几个区间?
B. 假定x 在第k 个区间,
即],[1+∈k k x x x
一次插值公式为
k
k k k k k k k x x x x y x x x x y x p --+--=++++11
111)(
(3) 线性拟合算法
在没有讨论线性方程组数值解法的前提下,用最原始的消元法求解线性方程组
5 计算用例的参考输出
(1)实验1参考输出如下
X y(精确) y(拉格朗日) y(分段线性) 误差(拉) 误差(分) 0.500000 0.800000 0.843408 0.750000 -0.043408 0.050000 4.500000 0.047059 1.578721 0.048643 -1.537662 -0.001584
00210001=====⎡⎤⎡⎤+⎢⎥⎢⎥
⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦⎢⎥⎢⎥
⎣⎦⎣⎦∑∑∑∑∑n
n i i i i n n n i i i i i i i n x y a a x x x y 图1.1拉格朗日插值算法