数学实验 物理实验、化学实验是物理课化学课的重要环节,数学实验同样是学好计算方法课必 不可少的一环 数学实验是指学生用自己编写的程序验证算式的正确性的实验.正确性包括稳定性和 收敛性两方面的容,并都用“误差”作检验标准,此外数学实验也含验证算法的复杂性 在数学实验里,该误差有时指计算值和理论值的差,有时指计算值和另一计算值之间的 差·这里的另一计算值是指前人用计算机算出的正确性和误差大小都得到公认的一个值或 组值,有时也指自己程序两次在不同情况下(往往是取不同步长或精度)计算结果之差 和物理、化学实验不一样,物理、化学实验的实验仪器器材以及实验内容、实验步骤都 是事先确定好了的,学生的任务通常仅仅是验证·大学生因做理化实验而有了新的发现或 发明创造的事甚>数学实验课的程序须学生自己编写.为了验证算式的正确性,其程序 用例常常也要由目己挑选就这个意义上讲数学实验比物理、化学实验重要难度也要大一 些 我们这本书中的算法和其他计算方法中的算法不同·其他计算方法中的一个算法是指 个计算公式,而这里的算法是指具有相同基本程序模块的一类公式.因此数学实验的内 容还包含熟悉了解各基本程序模块结构选取程序用数值计算公式,选取程序用例(通常同 输人数据直接相兴) 选取程序用公式和程序用例的原则是 程序用公式必须属指定算法类 程序用例简单、有代表性,或者能用手算算出结果或者已有被公认的正确的计算 结果 程序用例迪常不止一个,要能体现程序的各种功能 和物理化学实验一样每一次数学实验前学生都必须写实验名称实验目的实验过 程·做完实验后迁应写明实验(计算)结果及结论并附上源程序清单或磁盘 和理化实验不同,作数学实验之前学生通常应编写好计算程序并准备好程序用例.由 于学生所编写的科序很难绝对相同,所选程序用例有差别因此实验结论虽应相同结果却 有一定差异 此外数学实张有时还要验证算法的复杂性,结论中还涉及程序设计技巧等问题 数学实验和计算机语言课中的上机实习虽然都是编程序并让计算机算结果但两者之 间差异甚大.数实验让学生验证的是计算方法以及和计算方法有关的数学分析和高等代 数等数学定义定里和性质,是让学生熟悉并掌握各类算法和基本程序模块之间的关系;而 语言课的上机实习主要是让学生熟悉该语言的词法、句法、语法以及该语言的特点,计算机 语言课也讲结构,算机语言课中的绪构是指和算法并无直接联系的循环结构、分支结构和 顺序结构数学实验中的结构是指同类算法的基本程序结构 总之数学实验的比之语言课的上机实习更灵活,也更难 255·
本教材共安排六个实验,前两个实验不涉及计算方法的内容可先做后四个实验可按 教学内容安排,六个实验约需要20~24个学时(不含课外准备 为了保证实验部分的完整性和独立性每个实验之前我们增加了预备知识一档,简约介 绍算法所属公式的数学表达式 实验一级数和及项数不定的累加和算法基本程序模块结构 预备知识 累加和计算可月下面两箅式描述: a (1) (2) 式(1)就是我们前面书中介绍的累加和算法的数学描述,当i∞时,式(1)变成了式 (2)·若式(2)有意义,显然必有 实际计算时,我们仅算其有限项之和,到底取多少项,事前常常不清楚,因此式(2)也称为通 项项数不确定的累加和计算 假设|a<ε后浅们舍去式(2)后面各项·计算式(2)的伪语言程序为 S1:给出循环结艰条件ε值(ep代替e) S2:计算累加和通项第1项a[1=1;s=a[1 S3: while(fabs(n[i]>ep) 计算a[ s+a i] S4:输出s 若用for型循环,则伪语言程序为 S输人一个相大的n值 输入循环结条件ep 值 S2: for(i=l; i< =n i++) 计算aii if(fab;、a[ij)>ep) s=+a[i]; else g0 to出循环 ·256
S3:输出 两个伪语言糙序都可作为项数不确定的累加和算法基本程序模块 实验目的 通过编写数手册中任选的 Taylor级数和的计算,掌握累加和算法,学会利用累加和 计算基本程序模编写各种累加和计算程序;弄清通项项数确定和不确定的累加和计算基 本程序模块结构系,在正确的位置赋正确的初值合理利用循环结束条件 实验内容 (公式可自选下面公式供参考) 套用累加计算基本程序模块按公式(4) sent 2 x (4) 编写计算x的程月 2.套用项数于确定的累加和计算基本程序模块按式(5) (5) 编写计算r的程序 实验步骤 l·课下编写计算式(4)式(5)程序; 2.调试两个程序; 3程序调通后比较两个程序计算结果; 4.改变c值再北较计算截断误差(与项数之间关系) 实验结论(心得、体会 思考题 l.当x=2时程序计算结果怎样,为什么? 2当z接近2我时计算结果怎么样 实验二连乘积计算及项数不定的连乘积计算基本程序模块 预备知识 连乘积计算可月以下两个算式描述: (1)
2) 显然当i→∞时,式(1)变成了式(2) 对于式(2),肯有 lima: 1 因此实际计算时,取值是有限的通常当 a-1|<ε(e) 时,后面的a,不再广算 实验目的 通过编写教材扣指定公式程序掌握连乘积算法,学会利用连乘积基本程序模块编写连 乘积计算程序;弄通项项数确定和不确定的连乘积基本程序模块之间关系,能在合理位置 为连乘积计算赋积直可以正确使用循环结束条件 实验内容 1.根据书中连乘积计算基本程序模块及实验一中不定项累加和计算基本程序模块确 定不定项连乘积计算基本程序模块 2.套用连乘积汁算基本程序模块和不定项连乘积计算基本程序模块编写下述两个公式 的计算程序 (9 49×11×13×15) 18×:×22×24×261( 7×1×19× 2)”4}26×812 (2+2)(2+4)…(2+2 (2+1)(2+3)…(2+zi+1 舍去|(2+2)(2+4)(2+2+2) (2+1)(2+3)…(2+ 3-1<10各项 实验步骤 1.编写不定址连乘积计算仍语言程序(基本程序模块); 2编写式(5)式(6)的计算程序; 3运行程序比较两者计算结果; 4改变c值拜汁算再比较结果 实验结论(心得、体会) 思考题 项数确定和不确定的连乘积和累加和计算基本程序模块有无本质差别?
实验三递推算法程序编写 预备知识 对于常微分方程 de f(t,y) y (o)= yo 三阶 Runge-Futta法计算公式为 yit h(crk, +C2k,+c,) k:=f(1,y) 内=(+2h,y+号M) 中点法公式是 k=f(t+h,y一hk1+2hk2) y;+2 why 对于三对角方组 (2) a3 b3 d e P2 (4) Pn 户1=b :c/P P i =b;,q1 而求解计算公式为: y-1)/p i=2,3,…,n Ji"qrI 259