计算机数值模拟实验-带电粒子(10-5)

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

10-0计算机数值模拟实验(I)-----带电粒子在电场中的运动物理学研究的自然现象是复杂多样的。我们知道,物理规律表达的是自然客体的因果关系,因此物理学的研究就是要找出制约客体运动变化的因果关系。物理学研究的一个普遍方法是通过建立模型来研究自然客体的运动变化。模型是客体某种属性的抽象,反映的是某种因果关系。对模型进行研究(分析或综合),从而找出物理过程的因果关系。数值模拟是用数值计算研究模型的方法,它是从基本的物理定律出发,用离散化变量描述物理体系的状态,然后利用计算机数值计算这些离散变量在基本物理定律制约下的演变,从而每年物理过程的发展演变。数值模拟已被广泛地应用于各门学科的研究中,由于各门学科研究的对象都具有自身的特点,因此数值模拟的方法在不同学科中也有不同的特征。然而,任何数值模拟都需要求解描述所要研究的物理过程的数学方程。这些数学方程的数值求解方法有其共性(这正是计算数学研究的主要内容),因而各门学科中数值模拟方法有共同之处。本实验介绍数值模拟的基本方法和步骤,但不讨论由计算数学研究的数值方法。1.实验原理和方法1.1概述物理学的研究方法通常认为有理论和实验两种。传统的理论研究方法(即只使用纸和笔)通过解析求解物理基本定律的数学方程,来寻求某些具体条件下数量变化关系,也即描述特定物理过程的规律;实验研究则通过在特定条件下再现物理过程,从而找出物理现象的因果关系。虽然有人将数值模拟看为第三种方法,然而从本质上而言,数值模拟不同于实验而更接近于理论研究。理论研究和数值模拟都是从已知的基本定律出发,通过求解这些基本规律在具体物理条件下的数量关系来寻找特定物理过程的规律。但不同于物理研究的是,数值模拟是通过对物理过程的重复(当然是对模型体现的过程的重复),是通过大量“个例”研究来寻找因果关系。在这一意义上,数值模拟又接近于实验。数值模拟可视为计算机实验,可以反复进行,能够方便地控制和调整参数。数值模拟在理论研究和实验研究之间搭起了一座“桥梁”。一方面,数值模拟可以研究一些非常复杂的过程,理论研究必须作出许多简化假设才能处理这些过程,但简化意味着可能丢失许多重要的因素。这也使得数值模拟不仅可以更全面地了解一个物理过程,有时还能够发行新的物理现象。另一方面,数值模拟也能够为实验或观测结构的解析提供理论的支持。目前,计算机性能的高速发展,已使得数值模拟在各门学科的研究中起到越来越重要和不可替代的作用。1.2数值模拟的基本方法虽然对不同的物理过程进行数值模拟的方法千差万别,但一般都涉及到如下几个步骤。1·建立物理模型对任何物理过程的数值模拟首先要建立模型,所建立的模型的合理性在很大程度上决定了模拟结果是否可靠。建立模型包括如下步骤:a.找出决定所研究的物理过程的主要因素b.导出适当的数学方程c.给出切合物理实际的边值条件和初始条件2·方程和初边值条件的离散化a.选择合适的数值方法。常用的有差分法、有限元法和边界元法b.将计算区域划分为离散网格点。网格点(时间、空间)可以是规则的,也可以是不规则的,取决于计算区域的几何形状是否规则。网格点多少(决定于时间和空间步长的大小)的选择需要综合考虑计算时间的长短、计算机内存的大小等因素。c.将方程和初边值条件化为网格点上的代数方程(组)3·选择适当的代数方程组求解方法4·数值求解在计算机上的实现。a.设计流程图b.编写计算机程序c.调试程序。检查程序语法错误、数学公式的程序语言表达是否正确;根据计算结果检查算法的计算精度,以及是否有数值的不稳定性所存在。5·计算结果的诊断诊断是将数值模拟结果以一定的形式(通常是图形)表达出来。这是调试程序和输出结果的重要手段。2.实验内容和步骤作为一个实验的具体例子,考虑一带电粒子在电场中的运动。假定电场是均匀的不随时间变化的常数,粒子以初始速度V0从某一位置X0沿电场方向运动。2.1建立模型这是一个一维问题可设粒子沿x轴运动,时间t=0时粒子以速度V0从x=X0出发。粒子在电场中的运动满足牛顿定律:dVdtqEm(1)dxdtV(2)其中q和m分别是粒子的电荷和质量,E是电场。为计算上的方便,可假定荷质比q/m=1(对实际问题,可将方程规一化,使荷质比为1),这样并不影响我们对问题实质的理解。因而dVdtE(3)dxdtV(4)初始条件为:VtV()00(5)xt()00(6)这问题没有边值条件。方程(3)、(4)与初始条件一起构成一个一阶微分方程的求解问题。2.2方程的离散化微分方程的求解可用一些已有的方法,如四阶龙格-库塔(Runge-Kutta)法积分求解。龙格-库塔法积分求解的细节请参考实验室提供的有关文献。简单说来,龙格-库塔积分方法计算公式为:如果微分方程为/(,,,)dxdtfxyzt,则:11(,,,)*2(1/2,1/2,1/2,/2)*3(2/2,2/2,2/2,/2)*4(3,3,3,)*(12*22*34)/6nnxincfxyztdtxincfxxincyyinczzinctdtdtxincfxxincyyinczzinctdtdtxincfxxincyyinczzinctdtdtxxxincxincxincxinc其中nx为第n个迭代点,1nx为第n+1个迭代点,dt为时间步长。根据上式,从初始值0(0)xtx、0(0)yty、0(0)ztz开始就可以计算出以后各个时间的x、y和z的值。本实验中,由于电场为常数,因此系数Kii11234(,,,)全部为常数E。方程(3)的龙格-库塔方法计算公式为:KKKKE11213141====)22(6413121111KKKKtVVnn(7)方程(4)的龙格-库塔方法计算公式为:KVn12=KVtKn22112KVtKn32212KVtKn4231112223242(22)6nntxxKKKK(8)以上公式中,下标n表示迭代次数,t为时间步长。由(7)(8)两式,从初始值VtV()00,xtX()00就可以计算出以后各个时间的粒子速度和位置。2.3实验演示程序下面是利用四阶龙格-库塔法的模拟运动速度v的简单C语言演示程序。程序中带电粒子的初速度为0.0,电场强度为E=1.0,时间步进为delta=1.0,迭代次数N=10。运行结果程序输出至屏幕和文件中。/*计算机数值模拟实验演示程序Filename:Simulation.c*/#includestdio.hvoidmain(void){FILE*fp;intN=10;floatvn=0.0;floatE=1.0;floatdelta=1.0;floatk11,k21,k31,k41;inti;k11=E;k21=E;k31=E;k41=E;fp=fopen(volecity.txt,wb);printf(\n\n\n%7s\t%s\n,Time,Velocity);for(i=0;i=N;i++){printf(%f\t%f\n,delta*i,vn);fprintf(fp,%f%f\n,delta*i,vn);vn=vn+(k11+2*k21+2*k31+k41)*delta/6.;}fclose(fp);}输出结果为:程序在BorlandC++3.0中编译通过。TimeVelocity0.0000000.0000001.0000001.0000002.0000002.0000003.0000003.0000004.0000004.0000005.0000005.0000006.0000006.0000007.0000007.0000008.0000008.0000009.0000009.00000010.00000010.0000002.4实验要求和步骤本实验采用C++编程完成。*画出程序流程图。要求速度初值、位移初值、时间步进值可变(从键盘输入)编程计算v(t)和x(t),计算结果输出至屏幕和文件中。用理论公式手工计算速度和位移,其结果与计算机模拟结果进行比较,它们是否一致?用EXCEL打开模拟程序生成的TXT数据文件,作出v~t和x~t曲线。在初始条件下,将系统的观察时间增加一倍,编程模拟其物理过程,作出v~t和x~t曲线。在初始条件下,将系统的观察时间保持不变,观察数据增加一倍,编程模拟其物理过程,作出v~t和x~t曲线。*改变带电粒子的初始条件和所加电场,编程模拟其物理过程,作出v~t和x~t曲线。3.思考和讨论1.假设总的模拟时间相同,如果采用不同的时间步进值,所得到的模拟结果有什么差别?2.在实验中如何提高速度和位移的时间分辨率?分辨率的提高对计算机系统硬件所带来的影响如何?3.*谈谈你对龙格-库塔积分方法的理解。参考文献常鸿森,何惠玲主编。近代无线电实验技术。华南理工大学出版社1996.8徐君毅,C语言程序设计基础。复旦大学出版社1992

1 / 4
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功