计算方法实验.docx
- 文档编号:27474091
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:40
- 大小:299.91KB
计算方法实验.docx
《计算方法实验.docx》由会员分享,可在线阅读,更多相关《计算方法实验.docx(40页珍藏版)》请在冰豆网上搜索。
计算方法实验
算方法
实验指导
姓名学号院系专业
哈尔滨工业大学
计算方法实验指导
根据实际问题建立的数学模型,一般不能求出所谓的解析解,必须针对数学模型的特点确定适当的计算方法,编制出计算机能够执行的计算程序,输入计算机,进行调试,完成运算,如果计算结果存在问题或不知是否正确,还需要重新确定新的计算方法,再编制出计算程序,输入计算机,重新调试,完成运算,直至获得正确的计算结果,这就是数值计算的全部过程。
学生在学习“计算方法”和“高级语言”等课程时普遍存在的问题是:
只会套用教科书中的标准程序进行数值计算,很少有人能够独立地将学过的数值算法编制成计算机程序,至于灵活应用已经掌握的算法求解综合性较大的课题,则更是困难的事情。
编写《计算方法实验指导》的目的是:
突出数值计算程序结构化的思想。
提高学生的编程能力,加深对“计算方法”课程内容的理解和掌握,为”计算方法“课程的教学服务,进一步奠定从事数值计算工作的基础。
具体地
1.根据“计算方法”课程内容的特点,给出五个典型算法的分析流程,学生可以利用所掌握的“高级语言”顺利地编制出计算机程序,上机实习,完成实验环节的教学要求。
2.所有的计算实习题目都经过任课教师逐一检验,准确无误。
3.充分利用循环的思想、迭代的思想,给出算法结构描述和程序语言的对应关系,有利于学生编制相应的程序。
4.结合实习题目,提出实验要求,要求学生按规范格式写出相应的实验报告,实验报告成绩记入期末总成绩。
需要提醒学生:
不能简单地套用现成的标准程序完成实验题目,应当把重点放在对算法的理解、程序的优化设计、上机调试和计算结果分析上,否则就失去实验课的目的啦。
5.五个具体的实验题目是:
1拉格朗日(Lagrange)插值
2龙贝格(Romberg)积分法
3四阶龙格—库塔(Runge—Kutta)方法
4牛顿(Newton)迭代法
5高斯(Gauss)列主元消去法
实验题目
实验题目
实验题目
实验题目
实验题目
要求必须完成其中三个(如果全部完成更好)。
实验题目1拉格朗日(Lagrange)插值
方法概要:
则满足条件
的n次拉格朗日插值多项式
有误差估计式
拉格朗日插值算法实验
实验目的:
利用拉格朗日插值多项式Pi(x)求f(x)的近似值
程序流程:
0.0;k0
考虑下面两个拉格朗日插值问题:
(1)设f(x),X[5,5],考虑等距节点的拉格朗日插值多项式巳(X),
1X
即将区间[5,5]进行n等分,记h100,xk5.0kh,k0,1,L,n,构造
n
的函数值。
利用拉格朗日插值多项式Pn(x)作为f(x)的近似值。
分别取n5,n10,n20,
问题2插值区间越小越好吗
利用拉格朗日插值多项式Pn(x)作为f(x)的近似值。
分别取n5,n10,n20,
同时计算Pn(x)在X0.95,X0.05,X0.05,x0.95处的函数值。
(2)设f(x)ex,X[5,5],考虑等距节点的拉格朗日插值多项式巳(X),即
一20
将区间[5,5]进行n等分,记h——,xk1.0kh,k0,1,L,n,构造巳(x),
n
利用拉格朗日插值多项式Pn(x)作为f(x)的近似值。
分别取n5,n10,n20,
同时计算Pn(x)在X4.75,X0.25,x0.25,x4.75处的函数值。
问题3在区间[1,1]考虑拉格朗日插值问题,为了使得插值误差较小,应如何选取插
值节点
考虑下面两个拉格朗日插值问题:
1
("设f(x)L
1X
Xkcos(生丄,k
2(n1)
0,1丄,n,构造Pn(x),利用拉格朗日插值多项式
Pn(X)作
f(X)的近似值。
分别取
n5,n10,n20,同时计算Pn(x)在x
0.95,
0.05,X0.05,X0.95处的函数值。
(2)设f(x)eX,X[1,1],考虑非等距节点的拉格朗日插值多项式
Pn(X),
(2k1)
Xkcos,k0,1丄,n,构造Pn(x),利用拉格朗日插值多项式
2(n1)
Pn(X)作
f(X)的近似值。
分别取n5,n10,n20,同时计算Pn(x)在x
0.95,
0.05,X0.05,X0.95处的函数值。
问题4考虑拉格朗日插值问题,内插比外推更可靠吗
考虑下面两个拉格朗日插值问题:
(1)设f(X)JX,关于以x01,x14,x29为节点的拉格朗日插值多项
式F2(x),利用拉格朗日插值多项式P2(x)作为f(x)的近似值。
同时计算
P2(X)在
X5,X50,X115,X185处的函数值。
(2)设f(x)丘,关于以x036,x149,x264为节点的拉格朗日插值
多项式F2(x),利用拉格朗日插值多项式F2(x)作为f(X)的近似值。
同时计算P2(x)在
X5,X50,X115,X185处的函数值。
设f(x)JX,关于以X0100,X1121,X2144为节点的拉格朗日插
(3)
值多项式
P2(x),利用拉格朗日插值多项式F2(x)作为f(X)的近似值。
同时计算P2(x)
X50,X115,X185处的函数值。
设f(x)Tx,关于以xo169,x1196,x2225为节点的拉格朗日
插值多项式P2(x),利用拉格朗日插值多项式F2(x)作为f(x)的近似值。
同时计算
P2(x)在x
5,x50,x115,x185处的函数值。
思考题:
1.
2.
3.
4.
对实验对实验对实验如何理解插值问题中的内插和外推
1存在的问题,应如何解决
2存在的问题的回答,试加以说明
3存在的问题的回答,试加以说明
写出实验报告
实验题目2龙贝格(Romberg)积分法
方法概要:
利用复化梯形求积公式、复化辛普生求积公式、复化柯特斯求积公式
的误差估计式计算积分
f(x)dx。
记hb_a,xkn
akh,k0,1,L,n,其
计算公式:
Tn
:
Jf(Xk1)
f(Xk)]
T2n
2Tn
)f(Xk
2k1
1h)
T数表
1
3(4T2nTn)
Cn
-(16S2nSn)
15
1
右eOnCn)
一般地,利用龙贝格算法计算积分,要输出所谓的
龙贝格(Romberg)积分法实验
程序流程:
n
T11h[f(a)f(b)]
对i2,3丄,N,做一3,5
置ii2,1
置T21T1
2
f(a
2k1
1
(k2)h)
输出
T2
Ti)
h
C2,3S2,TlT2,h2,mm1
输出S2
m1,置
C2
输出C2,
转
m2,置
R2
C2G)
输出R2,
转
m3,置
tol
R2R
如果tol
,
则停机,否则转
S2
对
对
对
R1R2,Cl
4停机
/八1sinx.
(1)dx,
0x
提示:
f(0)龙叫浮1
(2)
106
提示:
引进变换t
(3)
1cosx,—dx,
0仮
106
提示:
利用等式
0
1cosx,
—dx
Jx
1-^dx
1cosx1
0二^dx,第一个积分值等于2,第
二个积分,利用f(0)
lxm0
cosx
~ix
也可以考虑利用分部积分
1cosx,i^dx
0坂
0cosxd(Vx)
(4)1
4X2
dx,
106
提示:
利用第一类问题3:
积分区间无限,
Gauss-Chebyshev求积公式如何处理
(1)
x2
dx,,
106
提示:
利用
10
10e
x2dx作近似
(2)
1(x1)仮
dx,
106
提示:
利用变换t
(3)
excos3xdx,
106
提示:
Gauss-Hermite
求积公式
提示:
思考题:
X・2.
0esinxdx,
Gauss-Lagurre
求积公式
1.
2.
3.
4.
输入的参数N有什么意义在实验在实验在实验
1中二分次数和精度的关系如何
2中给出的提示具有普遍性吗存在其它的方法吗试加以说明。
3中给出的提示具有普遍性吗存在其它的方法吗试加以说明。
写出实验报告
实验题目3四阶龙格—库塔(Runge—Kutta)方法
方法概要:
给定常微分方程初值问题
dy
一f(X,y),aXbdx
y(a)
记Xnanh,nO,1,L,N,利用四阶龙格一库塔方法
K1
hf(Xn,
y)
K2
hf(Xn
h
2,y
K3
hf(Xn
h
寸
K4
hf(Xn
h,yn
yn
1yn
6(K1
n
n
今)导)
K3)
2K22K3K4)
n0,1丄,N1
可逐次求出微分方程初值问题的数值解yn,n1,2,L,N。
四阶龙格一库塔(Runge—Kutta)方法实验
实验目的:
利用四阶龙格一库塔(Runge—Kutta)方法求解微分方程初值问题
入:
a,b,,N
程序流程:
1置xoa,yo,h
2对n1,2,L,N,做一
Ki
K2
K3
h
hf(xoh,yo
hf(xoh,yo
K1)
K2)
K4hf(X0
h,y0
K3)
X1X0h
输出X1,y1
3停机
问题1
(1)
y(0)
准确解
(2)
y(0)
准确解
问题2
(1)
y
(1)
准确解
(2)
d!
dx
1
—(y
x
y(i)
准确解
2.x
(e
y),i
2x
1
2x
e)
x3,N5,10,20
问题3
(1)
dy
dx
20(y
x2)
2x,0x1,N5,10,20
y(0)
准确解
x2
120x
-e
3
dxdx
20y
20sinxcosx,0
y(0)
1
h
ba
N
准确解
ye
20x
sinx
(3)
吐dx
20(y
xe
sinx)ex(sin
y(0)
0
N
5,10,20h
准确解
x
ye
sinx
(2)
x1,N5,10,20
ba
N
xcosx),0x1
数值解和解析解相同吗为什么试加以说明。
N越大越精确吗试加以说明。
N较小会出现什么现象试加以说明
写出实验报告
实验题目4牛顿(Newton)迭代法
方法概要:
求非线性方程f(X)0的根X,牛顿迭代法计算公式
Xo
XniXn週
f(Xn)
n0,1丄
一般地,牛顿迭代法具有局部收敛性,为保证迭代收敛,要求,对充分小的0,
算出的{xn}收敛于X,且收敛速度是1阶的;
牛顿(Newton)迭代法实验
实验目的:
利用牛顿迭代法求f(x)0的根
输入:
初值,精度1,2,最大迭代次数N
出:
方程f(X)0根X的近似值或计算失败标志
Ff(X0),DF
Tol
X0X1
输出失败标志
停机
1:
(1)
cosxx0,1
106,
2104,N10,X0
-0.785398163
4
(2)
exsinX0,
1106
4
,210,N10,
x00.6
2:
(1)
xex0,1
106,
2104,N10,X0
0.5
(2)
2cX2x
X2xee
0,1
106,2104,N
20,x00.5
问题
问题
由下面的递推公式可以生成勒让德(
Legendre)多项式
3:
(1)
问题
P)(x)1
P(x)x
LL
①试确定P2(x),F3(x),P4(x)和P5(x)
To(x)1
T1(x)x
LL
Tn2(x)2xTni(x)Tn(x),n
①试确定T2(x),T3(x),T4(x)和T5(x)
Xjcos(^^),j0,1,L,nj2(n1)
L0(x)
L1(x)LL
①试确定L2(x),L3(x),L4(x)和L5(x)
4)由下面的递推公式可以生成埃尔米特(Hermite)多项式
H0(x)
H1(x)
LL
Hn2(x)
2xHn1(x)2(n1)Hn(x),n0
①试确定H2(x),H3(x),H4(x)和H5(x)
思考题:
1.对实验
2.对实验
3.对实验
确定初值的原则是什么实际计算中应如何解决如何解释在计算中出现的现象试加以说明存在的问题的回答,试加以说明
写出实验报告
实验题目5相对高斯(Gauss)列主元消去法
方法概要:
高斯(Gauss)列主元消去法:
对给定的n阶线性方程组Axb,首先进行列主
元消元过程,然后进行回代过程,最后得到解或确定该线性方程组是奇异的。
如果系数矩阵的元素按绝对值在数量级方面相差很大,那么,在进行列主元消元过程前,先把系数矩阵的元素进行行平衡:
系数矩阵的每行元素和相应的右端向量元素同除以该行元素绝对值最大的元素。
这就是所谓的平衡技术。
然后再进行列主元消元过程。
如果真正进行运算去确定相对主元,则称为显式相对Gauss列主元消去法;如果
不进行运算,也能确定相对主元,则称为隐式相对Gauss列主元消去法。
显式相对Gauss列主元消去法:
对给定的n阶线性方程组元消元过程,在消元过程中利用显式平衡技术,然后进行回代过程,定该线性方程组是奇异的。
隐式相对Gauss列主元消去法:
对给定的n阶线性方程组元消元过程,在消元过程中利用隐式平衡技术,然后进行回代过程,定该线性方程组是奇异的。
Axb,首先进行列主最后得到解或确
Axb,首先进行列主最后得到解或确
Gauss列主元消去法、隐式相对Gauss
Axb。
实验目的:
利用Gauss列主元消去法、显式相对列主元消去法求解线性方程组
程序流程:
、Gauss列主元消去法
3.置xn
bn/ann,回代过程
4.对k
n1,,2,1,置xk
(bk
n
jk1akjXj)/akk
二、显式相对
Gauss列主元消去法
1.对k
1,2,L,n1,做一,消元过程
对i
k,k1,L,n,计算s
max
kjn
aj
,如果Si0,
计算aij
aij/s,jk,k1,L
n;
寻找最小的正整数
输出奇异标志,停机;
maxkjn
ajk
Pn和apk
,如果apk0,输出
奇异标志,
停机;
如果
那么交换
p,k两行;
1,L
n,记mikaik/akk
,计算
aij
i
aijakjmik
k1,L,n
k1,L,nbibkmik
k1,L,n
2■如果ann
3.置Xn
4.对k
隐式相对
1.对k
0输出奇异标志,停机;
bn/ann,回代过程
1,,2,1,置Xk(bk
Gauss列主元消去法
1,2,L,n1,做一消元过程
1akjxj)/akk
k,k1,L,n,计算smax
kjn
寻找最小的正整数P,k
Pn和apk
/Sp
maxaik/s;
kin
1,L,n,记mikaik/akk,计算
aiji
2.如果ann
3.置xn
4.对kn
问题1实验题目:
bii
bi
k
aijakjmik
1,L,n
1,L,n
bkmik
1,L,n
0输出奇异标志,停机;
bn/ann,
回代过程
1,,2,1,置xk
(bk
n
jk1akjxj)/akk
0.4096
0.1234
0.3678
0.2943
x1
1.2951
0.2246
0.3872
0.4015
0.1129
x2
1.1262
0.3645
0.1920
0.3781
0.0643
x3
0.9989
0.1784
0.4002
0.2786
0.3927
x4
1.2499
136.01
90.860
0
0
x1
226.87
90.860
98.810
67.590
x2
122.08
x3
110.68
0
0
46.260
177.17
1
1/2
1/3
1/4
x1
25/12
1/2
1/3
1/4
1/5
x2
77/60
1/3
1/4
1/5
1/6
x3
57/60
1/4
1/5
1/6
1/7
x4
319/420
10
78
7
x1
32
7
56
5
x2
23
8
610
9
x3
33
7
59
10
x4
31
0
67.590
132.01
46.260
x4
4)
223.43
实验题目的准确结果:
(1)
x
(x1,x2,x3,x4)T
(1,1,1,1)T;
(2)
x
(x1,x2,x3,x4)T
(1,1,1,1)T;
(3)
x
(x1,x2,x3,x4)T
(1,1,1,1)T;
(4)
x
(x1,x2,x3,x4)T
(1,1,1,1)T。
问题2
x1
197
305
206
804
x1
136
46.8
71.3
47.4
52.0
x2
11.7
88.6
76.4
10.8
802
x3
25.1
1.45
5.90
6.13
36.5
x4
6.60
0.5398
0.7161
0.5554
0.2982
用三种方法计算实验1、实验2的各个题目,哪种方法最好试加以说明。
综合上述两种结论,总结三种方法的关系,试加以说明。
写出实验报告
1)
2)
3)
4)
5)
1本课程给出五类实验题目,供学生选用,要求必须完成其中三个实验。
2实验课的目的是为了让学生深入理解和掌握“计算方法”课程的基本内容,同时有助于培养学生的上机调试程序进行数值计算的动手能力,进一步提高利用数值方法求解数学问题、分析计算结果、选择算法的综合能力。
3为了顺利完成实验教学的规定内容,建议学生按下面方法准备实验、进行实验、写出实验报告:
应明确实验的目的,清楚实验的内容,包括算法和误差分析;写出内容摘要,包括算法的理论基础和对算法的初步认识;上机前,编写好计算程序;
上机调试程序要做到快速、准确;
记录计算结果要做到真实、准确;
(6)课后,认真写好实验报告,包括对算法的新认识和体会,要特别注意对计算结果的分析和讨论,当然包括对计算结果的误差分析。
实验报告
题目(摘要)
Lagrange插值
则满足条件
的n次拉格朗日插值多项式
是存在唯一的。
若xk[a,b],k0,1,L,n,且函数f(x)充分光滑,则当x[a,b]时,
有误差估计式
(n1)
f(x)Pn(x)vy(xx0)(xxi)L(xxn),[a,b]
前言:
(目的和意义)
目的:
利用拉格朗日插值多项式Pn(X)求f(X)的近似值
意义:
数学原理
程序设计流程
本实验采用CodeBlocks的C文件编写。
Lagrange插值源程序:
#include?
<>?
?
#include?
<>?
?
#include?
<>?
?
float?
lagrange(float?
*x,float?
*y,float?
xx,int?
n)?
?
?
?
?
{?
?
?
?
?
?
?
?
?
?
?
int?
i,j;?
?
float?
*a,yy=;?
?
?
?
a=(float?
*)malloc(n*sizeof(float));?
?
?
for(i=0;i<=n-1;i++)?
?
?
{?
a[i]=y[i];?
?
?
?
?
?
?
for(j=0;j<=n-1;j++)?
?
?
?
?
?
?
if(j!
=i)?
a[i]*=(xx-x[j])/(x[i]-x[j]);?
?
?
?
?
?
?
yy+=a[i];?
?
?
?
?
}?
?
free(a);?
?
return?
yy;?
?
}?
?
main()?
?
{?
int?
i,n;?
?
float?
x[20],y[20],xx,yy;?
?
printf("Input?
n:
");?
?
scanf("%d",&n);?
?
if(n>=20)?
{
printf("Error!
The?
value?
of?
n?
must?
in?
(0,20).");?
getch();
return?
1;
}?
?
if(n<=0)?
{
printf("Error!
?
The?
value?
of?
n?
must?
in?
(0,20).");?
getch();?
return?
1;
}?
?
for(i=0;i<=n-1;i++)?
?
{?
printf("x[%d]:
",i);?
?
?
?
?
?
scanf("%f",&x[i]);?
?
}?
?
printf("\n");?
?
for(i=0;i<=n-1;i++)?
?
{?
printf("y[%d]:
",i);
scanf("%f",&y[i]);
}?
?
printf("\n");?
?
printf("Input?
xx:
");?
?
?
scanf("%f",&xx);?
?
yy=l
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算方法 实验
![提示](https://static.bdocx.com/images/bang_tan.gif)