《计算方法试验教学讲义》由会员分享,可在线阅读,更多相关《计算方法试验教学讲义(13页珍藏版)》请在金锄头文库上搜索。
1、第一章 实验的目的和要求1.1 实验目的为了掌握计算方法的基本思想、原理和方法,要注意计算方法的处理技巧与计算机实现的结合,需将各种数值方法设计成算法,并编制好程序,拿到计算机上实现,最后得到可行性的验证。1.2 实验要求 用C或C+、Java、FORTRAN、Matlab等计算机程序设计语言编写程序。 上机前充分准备,复习相关知识,选用合适的数据结构并详细设计算法,尽量写出具有通用性的程序,反复检查程序。 上机时快速输入程序;首先排除语法错误;然后采用多组数据,详细测试,排除逻辑错误;最后将程序调试成功,运行程序得到准确结果。 完成计算后,反复体会和分析,试着改善计算复杂性,使程序或算法更加
2、完美。1.3 实验环境1.3.1 硬件环境CPU : Pentium 4以上内存:256MB以上1.3.2 软件环境(1)操作系统:Microsoft Windows XP 和 2000(2)编译器 :C或C+、Java、FORTRAN、Matlab1.4 本实验课程与其它课程的关系本课程的前导课程有高等数学、线性代数(或高等代数)、C语言或FORTRAN语言等,最好事先开设数据结构;后续课程有计算机图形学、图像处理、模式识别等。第二章 实验的计划和内容2.1 实验计划计算方法实验课共安排30学时,其中10个学时用于FORTRAN语言的学习,另外20个学时供计算方法试验。2.1.1 FORTR
3、AN试验计划FORTRAN语言FORTRAN语言FORTRAN语言FORTRAN语言FORTRAN语言2.1.2 计算方法试验计划Lagrange插值多项式Newton插值多项式Hermite插值多项式最小二乘法复化求积公式Romberg求积公式数值微分的外推算法Gauss消元法直接三角分解法解方程组的迭代法2.2 实验内容前五个实验是练习FORTRAN语言程序设计。FORTRAN语言要求学生自学,因此不事先布置上机题目,应根据学生的自学情况随时选择合适的题目。后十个实验是计算方法的试验,全部明确指定了题目和相关的内容。2.2.1 实验一 熟悉FORTRAN PowerStation 4.0
4、集成开发环境,掌握FORTRAN的上机过程2.2.2 实验二FORTRAN语言的顺序结构程序设计2.2.3 实验三FORTRAN语言的分支结构程序设计和循环结构程序设计2.2.4 实验四FORTRAN语言的数组2.2.5 实验五FORTRAN语言的模块化程序设计2.2.6 实验六实验题目:Lagrange插值多项式相关知识:通过n+1个节点的次数不超过n的Lagrange插值多项式为:其中,Lagrange插值基函数,k=0,1,n。另外,补充C语言绘制图形方面的内容如下1 屏幕坐标系 坐标原点在屏幕的左上角,x轴水平向右,y轴垂直向下。2 常用的绘图函数(绘图库函数所在的头文件 graphi
5、cs.h) 初始化图形系统的函数 void initgraph(int *graphdriver,int *graphmode, char *pathtodriver);画点函数 void putpixel(int x,int y,int pixelcolor);移“画笔”函数 void moveto(int x,int y);画直线函数 void line(int x1,int y1,int x2,inty2); void lineto(int x,int y);设置前景颜色函数 void setcolor(int color);设置背景颜色函数 void setbkcolor(int co
6、lor);设置画线宽度和类型函数 void setlinestyle(int linestyle, unsigned upattern,int thickness);关闭图形系统函数 void closegraph(void);3 绘图程序的设计模式#include graphics.hmain()int graphdriver=DETECT,graphmode; initgraph(&graphdriver,&graphmode, ); 调用绘图函数进行绘图 closegraph();数据结构:两个一维数组或一个二维数组算法设计:(略)编写代码:(略)实验用例: 已知函数y=f(x)的一张表
7、:x0102030405060708090100110120y517.534.58.815.56.5-5-10-24.57试验要求:利用Lagrange插值多项式求被插值函数f(x)在点x=65处的近似值。建议:画出Lagrange插值多项式的曲线。2.2.7 实验七实验题目:Newton插值多项式相关知识:通过n+1个节点的次数不超过n的Newton插值多项式为:数据结构:两个一维数组或一个二维数组算法设计:(略)编写代码:(略)实验用例: 已知函数y=f(x)的一张表(同上一个试验)试验要求:利用Newton插值多项式求被插值函数f(x)在点x=65处的近似值。建议:画出Newton插值多
8、项式的曲线。2.2.8 实验八实验题目:Hermite插值多项式相关知识:通过n+1个节点的次数不超过2n+1的Hermite插值多项式为:其中,Hermite插值基函数数据结构:三个一维数组或一个二维数组算法设计:(略)编写代码:(略)实验用例: 已知函数y=f(x)的一张表(其中):x0.100.200.300.400.50y0.9048370.8187310.7408180.6703200.606531m-0.904837-0.818731-0.740818-0.670320-0.606531x0.600.700.800.901.00y0.5488120.4965850.4493290.
9、4065700.367879m-0.548812-0.496585-0.449329-0.406570-0.367879实验用例:利用Hermite插值多项式求被插值函数f(x)在点x=0.55处的近似值。建议:画出Hermite插值多项式的曲线。2.2.9 实验九实验题目:曲线拟合的最小二乘法相关知识:已知Ca,b中函数f(x)的一组实验数据(xi,yi)(i=0,1,m),其中yi=f(xi)。设是Ca,b上线性无关函数族。在中找函数f(x) 曲线拟合的最小二乘解,其法方程(组)为: 其中, k=0,1,n特别是,求函数f(x) 曲线拟合的线性最小二乘解的计算公式为:数据结构:两个一维数组
10、或一个二维数组算法设计:(略)编写代码:(略)实验用例: 已知函数y=f(x)的一张表:x0102030405060708090y6867.166.465.664.661.861.060.860.460试验要求:利用曲线拟合的线性最小二乘法求被逼近函数f(x)在点x=55处的近似值,并画出实验数据和直线。2.2.10 实验十实验题目:复化求积公式相关知识:将积分区间a,bn等分,节点xk=a+kh,k=0,1, ,n,步长。复化梯形公式为: 再将每个小区间二等分,即整个积分区间a,b2n等分,此时复化梯形公式为。复化梯形公式的递推关系为 其中,。数据结构:(略)算法设计: 复化梯形公式的算法如
11、下第一步:n=1,h=b-a;第二步:;第三步:计算;第四步:计算;第五步:n=2n,h=h/2;第六步:若(事先给定的误差精度),则转第三步;第七步:输出Tn和等分数n/2,结束算法。编写代码:(略)实验用例:试验要求:利用复化梯形求积公式求的近似值(积分的精确值I=-12.0703463164,),误差精度。2.2.11 实验十一实验题目:Romberg求积公式相关知识:用两个相邻的近似公式(其中后一个公式是由前一个公式的分半得到的)的线性组合而得到更好的近似公式的方法,就是近代电子计算机上常用的Romberg求积方法,也叫逐次分半加速(收敛)法。设以表示二分k次后求得的梯形值,且以表示序
12、列的j次加速值。Romberg求积公式的T表如下kh0b-a1234Romberg求积公式(逐次分半加速公式)如下数据结构:一个二维数组算法设计: Romberg求积公式的算法如下第一步:取k=0,h=b-a,求第二步:令1k(k记区间a,b的二分次数)求梯形值,按梯形的递推公式;求加速值,按公式逐个求出T表的第k行其余各元素(j=1,2, ,k);若(预先给定的误差精度),k+1k,则转;第三步:输出和等分数(或二分次数k),结束算法。编写代码:(略)实验用例:试验要求:利用Romberg求积公式求上述定积分(),误差精度。2.2.12 实验十二实验题目:数值微分相关知识:数值微分的中点公式
13、为应用理查森(Richardson)外推对h逐次分半,计算过程如下表(G0(h0=G(h)计算公式为数据结构:一个二维数组算法设计:(略)编写代码:(略)实验用例:试验要求:利用数值微分的外推算法求的近似值2.2.13 实验十三实验题目:用Gauss消元法求解线性代数方程组相关知识:在做除法运算时,分母的绝对值越小,舍入误差就越大。因此,消元的每一步都先选取绝对值比较大的元素(称作主元),用它作分母再消元。这就是主元素消去法的基本思想。数据结构:用一个二维数组存储线性代数方程组的增广矩阵;线性代数方程组的解最后存储在增广矩阵的最后一列上。算法设计:用列主元Gauss消元法求解线性代数方程组(同时求出系数行列式的值det)的算法为第一步:det1;第二步:对于k=1,2,n-1按列选取主元,找,使如果(最好是,为预先给定的一个非常小的数),则det=0,计算停止如果(或),则换行det-det消元计算,对于i=k+1,k+2,n对于j=k+1,k+2,n+1 第三步:如果(最好是,为预先给定的一个非常小的数),则det