您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页基于高级语言编程利用差分法解边值问题

基于高级语言编程利用差分法解边值问题

来源:意榕旅游网
……-SDFn_^RIⅡ咖加P■E_T&^PPUC硼0_…………………………………………………………………… - 基于高级语言编程利用差分法解边值问题 张哲珲,赵洪伟,顾永铮 (中国矿业大学(北京)理学院,北京1000OO) 摘要:很多物理化学等方面的科学研究都需要解微分方程,所以需要利用数学知识探究相应的解。数学的特点 在于严密的逻辑推理与抽象的思维描述,而高级语言编程更加强调思路的总结与归纳还有算法的具体设计。在数 学中使用的更多是公式语言,把一整个复杂的计算过程简化成几个计算公式,更加注重过程的推导而往往忽略了 实践。以差分法解边值问题为例,把数学思想与Matlab代码以及C语言相结合。通过编写Matlab代码锻炼学生的 提炼能力与逻辑思维,之后再进一步引入c语言,通过学生的编程实践,把数学与c语言结合起来,以达到融会贯 通的目的。 关键词:边值问题;Maflab语言;C语言;案例教学 微分方程的很多问题归结到最后很多都是固定的计算方 法.所以理论上所有的算法都可以对应着数学问题。数学方 以下三对角矩阵: CI 廿2 0C2 ・・ 。 O 0 0 O O O 法是解决很多问题最根本最有效的途径,也是计算科学中的 根本。这就体现出编程与数学结合之后实用性是非常大的。 而且两者在根本思路上是相通的,数学解题的过程实际上也 是算法的逐步实施的过程。 有限差分法在实际使用中应用广泛,需要能熟练地掌握 使用的方法。通常更加注重算法思想的学习,但是就忽视了 A 0 : ● 也 一 : ● O O O : ● 0 0 0O ・・ a,卜I bnt c”l 一O O -. 0 设矩阵A非奇异.A有Crout分解A=LU.其中L为下三 角矩阵.U为单位上三角矩阵,记 0 o ..口: 0 a3 0 …0 0 0 o 0 0 1 0 1 O 0 0 O 学习的目的。以至于一直着重于讲述其数学原理,而忽视了 让学生动手实践的重要性。在数值代数的教学中,很多教师 都是主要从事数学工作的,所以更加注重整个数学框架的培 养,说起实践方面则还有提升的余地。 O O O O 1解边值问题的理论推导 1.1问题的提出 使用有限差分法解决二阶常微分方程边值问题: 0 0 0… 1 0 0 0 0 O 0 0 ・0 Y l 0 0 0…a p ..… l 可先依次求出L,U中的元素后,令Ux=y,先求解下三 角方程组Ly=f得出Y,再求解上三角方程组Ux=y。 事实上,求解三对角方程组的2追赶法将矩阵三角分解 j厦 l一 十‘ (  H:0.一1<x<1 +2)‘ l ”(_1)=1,H(1)= ,、 的计算与求解两个三角方程组的计算放在一起.使算法更为 紧凑。在具体计算中:右侧项f(1)一1,f(n)=一l/3。具体方 1 (该问题真解为:) 求出近似解。 1.2有限差分法的使用 J 步长h待定,利用差分法 法为: C _Lt l L x,l。i=2,3.…," 。c.有限差分法在实际使用中应用广泛,其主要作用是解决 =口 : pi=b 一n . 微分方程的定解问题。在有限差分法中把一个连续的定义域 分割成一系列的有限个离散点,一般将这些离散点称为图像 的节点。确定好节点之后即可以用节点上的离散变量函数逼 近原来的定解区域上定义的连续的函数。用差商去近似原方 x y 对i= 一l,”一2,.一,1 x y 一y M 程和定界条件中的微商,用积分和去近似原来所求的积分。 最终将原微分方程和定解条件以代数方程组,即有限差分方 1.3数学解法特点归纳 (1)抽象陛 收稿日期:2015—03—24 程组来近似。在解出这个方程组之后就得出了原问题在离散 点上的近似解。在具体使用过程中,a(i),C(i)都为1,b(i) 一(2+(2 (h^2))/((jie(i)+2) 2)),把计算都解出的矩阵代入 。 。 。 实用第一 智慧密集 . .... .…。。 。.….。。。。 。.. 。。 … … … … … 表2步长取0.01 数值解 精确解 I数值解一精确解I10 -0_8 0.8333380lO624492 0.833333333333333 0.467729115816162 -0.6 0.714291859039789 0.714285714285714 0.614475407467729 —0-4 O.6250o6293589l9o 0.625O0c00()000ooo 0.629358918979861 -0.2 0.55556l40l342398 0.555555555555556 0.584578684248438 0 0.500005 106463547 O.50Dc00D00o00000 0.510646354701 105 0.2 O.454549668269673 0-454545454545455 0.42l37242l88267l O.4 0.416669899459034 0.416666666666667 0-3232792367358O7 0.6 0.384617579624344 0.3846l5384615385 0-219500895914937 0.8 0_3571439723650o1 0.357 142857142857 0.1l 15222l4407689 表3步长取0.002 数值解 精确解 I数值解一精确解[10 -0.8 0.83333352O443585 0.833333333333333 0.187l 10251625988 -0.6 0.7 l4285960D97222 0.714285714285714 0.2458l1507926241 —0.4 0.625000251763471 0.6250【)o0oO000000 0.251763470626720 -0.2 0.555555789404248 0.555555555555556 0-233848692854366 0 0.5o()Oo02O4272778 0.5OO00C0【)∞0OO00 0.2O4272778359105 0.2 0.454545623105690 0.454545454545455 0.16856o23538O699 O-4 0.41666679598671 l 0.416666666666667 0.129320044728320 O.6 O_384615472421266 0.3846153846l5385 0.087805881510139 0.8 0.35714290l7545O1 0.357142857142857 0.04461 l643879033 图3不同步长时的误差曲线 2.5.3分析与结论 (1)表1表2和表3给出了取步长0.02,0.O1,0.002时 计算得到的部分数值结果,数值解很好地逼近精确解.而且 随着计算步长的减小,误差越来越小,数值结果越来越精确. 而且误差都是成十倍缩小。若是在实际应用中,把步长充分 减小,那么就能够达到与精确解的误差取到极小的效果,这 对实际应用有很重要的作用。 (2)从图3中可以看出,此方程存在误差值的极大点, 所以在没有确定精确解的时候,或许可以通过相关的计算. 得到误差的分布规律。同时可以看出误差的数量级均符合要 求,数值解很好地逼近了精确解。从而说明差分格式解是存 在的、稳定的。 (3)误差的大小还和方程有关系,当方程光滑性质比较 好时,用差分格式得出的数值解会更精确.因为从图3中可 以看出,在图像斜率大时,误差也随之变大,最左边误差小 是因为靠近已知点。由上面误差图可以看出数值解基本与精 确解符合,误差在所能允许的范围内,所以建立的差分方程 是正确的 3 C语言的引入与应用 3.1定义 C语言是一门通用计算机编程语言,应用广泛。C语言的 设计目标是提供一种能以简易的方式编译、处理低级存储器、 产生少量的机器码以及不需要任何运行环境支持便能运行的 编程语言。作为信息与计算科学的必学知识,C语言可以应用 在很多的领域,而且可以利用它进行数值代数中的计算。 3.1.1 C语言的教学方向 C语言是高等院校的计算机专业学生的必修科目,甚至很 多非计算机专业的学生都要学习。C语言特别强调逻辑性,需 要考虑问题周密,同时注重动手实践。更加着重于培养学生 的逻辑思维以及算法设计理念。因此在学习中要尤其重视实 践课程,所以相关的课时也在教学中占很大比重。所以应该 在不影响理论教学的基础上.让学生更多地去自己实践所学 的算法,从而激发学生的学习兴趣,提高学生的动手能力, 真正实现综合素质的提升。 谈到编程,很多教师都没有对C语言有过很多的研究。 而且考虑到学生的C语言基础参差不齐。在教学中更多的是 拿使用简便的Matlab来编程,而学生在上机时间课上也是用 Matlab。但是应该考虑到其中存在的几个问题: (1)学生在学习数值线性代数时往往要同时学习,或者是 已经学过C语言甚至C++。而在Matlab中,数组的计数,循 环的写法,变量以及矩阵的定义方式和表示方法都与C语言各 不相同。如果与C语言结合教学,可以进一步强化学生对相关 命令的理解,为今后Java,php等语言的学习铺平道路。 (2)Matlab是收费使用的。而且软件本身体积臃肿.安 装困难,无异于增加了别的不必要的时间成本。而C语言具 有多平台通用,免费开源的特点。而且利用了已经学习过的 知识,充分利用已有软件。 (3)C语言在其专业课的学习中更加注意基础语法的学 习而往往不涉及其高阶的应用,如果能在数学计算方面充 分利用C语言。则能极大程度上提高学生对编程学习的积 极性。 (4)数学的学习往往是于其他学科的,也就是说学 生所学的数值计算技巧在当下很少能在物理学等学科上用到。 c语言的应用可以缓解这样的感觉,真正实现学以致用。 3.1.2 C语言教学中问题 (1)学生普遍认为C语言的学习及其单调无趣。要知道 兴趣才是学习进步最根本的方法,这样的现状让很多学生都 不去静下心来持续地钻研编程,更不用说实现学以致用了。 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务