推荐期刊

计算机模拟、计算物理线性问题的运用

时间:2015-12-20 22:44:55 所属分类:计算机应用 浏览量:

物理是一门以实验为基础的学科,通过实验和观测,探求物理现象后面的原因,归结后形成新的物理理论,再对理论推论检验其正确性和应用范围[1]P3-18.除了实验,物理中要解决大量的计算问题,特别是在物理教学中,解题可以提高运用理论知识解决实际问题的能力,

物理是一门以实验为基础的学科,通过实验和观测,探求物理现象后面的原因,归结后形成新的物理理论,再对理论推论检验其正确性和应用范围[1]P3-18.除了实验,物理中要解决大量的计算问题,特别是在物理教学中,解题可以提高运用理论知识解决实际问题的能力,达到巩固知识、扩大知识面等目的。    在对物理问题求解时,人们将物理量之间的关系用代数式表现,并通过求得代数式的解析解得到物理量之间的定量关系。在学校教学中,得到物理问题的解析解是必然,比如讨论物体的运动问题,描述电场、磁场关系问题以及微观粒子的运动问题,有相应的牛顿运动定律、麦克斯韦方程以及薛定谔方程数学公式,涉及到的问题一般都可以得到对应的解析解。长期以来,在物理教学中,形成对具体问题的讨论以解析解为终结,认为物理问题是线性的。然而,物理研究范围很广,大到整个宇宙以及宇宙外部空间,小到超微观粒子和空间。    世界在本质上属于非线性,物理涉及的问题,大多数也是属于非线性,线性问题仅仅占很小的一部分。对于非线性问题,在解决时常用的方法,是将非线性问题线性化,或者局部线性化求解,得到解析解,不能线性化的,采取避开,搁置一边,尽管从物理的角度看,这类问题并不复杂[2]P18-26.为了解决这类非线性问题,随着计算机技术发展,利用计算机的大存储量和快速计算优势,将物理中复杂多因素相互作用过程,用计算机来模拟、计算。使复杂的物理计算问题简单化。    1、计算物理。    利用计算机的优势来解决物理问题,早先最多运用的是复杂物理过程的模拟,如原子弹爆炸,高速飞行过程,教学中的机械波形成过程等待,形象清楚,容易分析。随着科学技术的发展,计算机在对大量非线性问题进行数据处理过程中,提供了强有力的工具,出现了部分新的数值解,进一步推动了非线性科学的发展。    对物理问题求出解析解具有重要意义,首先,这是建立科学理论的基础;其次,通过得到的解析解和实验观测的结果进行比对,可以解释已知的实验现象并在理论上预测未来的发展。但把求解析解作为物理研究问题的唯一方式又不完备,很多问题是不可能用代数方法求解,只能求数值解。因此,用计算机求解数值解势在必行。    计算机作为工具,在应用过程中,依赖的理论原理和代数方程来自于物理理论,物理实验提供需要的数据,再用物理理论及实验进行分析检验得到的结果[3]P19-73.在实验方面,应用计算机,可以帮助解决大量实验数据的分析,控制实验设备,数据获取自动化,对实验过程进行详细的模拟等。在解决物理理论方面的问题时,计算机可以进行复杂的数值运算,提供计算数据用于进行理论物理的研究。在整个物理研究中,对已经存在定量理论的物理问题,利用计算物理寻找到使用数值方法解决的方法。    在物理学中,由于大量问题是非线性的,对这些问题无法严格求解。如量子力学中的单粒子,只能求解出少数几种单粒子的简单势场中的运动。随着计算机技术的飞速发展和计算方法的不断完善,物理理论推论与实验越来越广泛的与计算物理联系,计算机在对物理问题进行求解时,常用的方法有数值积分、微分方程数值解法、蒙特卡洛方法、有限元法以及神经元网络法等。    用计算物理求解问题时,一般可分为以下几个步骤:(1)根据物理学原理对具体问题列出具体的方程;(2)对所列出的方程确定数值计算方法;(3)由确定的计算方法编写计算机程序并上计算机求出结果;(4)运用物理学原理对计算结果进行筛选。    其中,列出的具体方程,可以是代数式、超越方程等,除此以外,还要给出该问题满足的初始条件或者边界条件;确定数值计算方法时,主要考虑的是计算机的精度和速度;如果将计算方法作为解决问题的思路,那么对计算机编写程序,就是解决问题实现思路的具体步骤。所以,每一步骤都是必要的。当然,计算结果也会存在偏差,如,对同一物理问题,存在着因为选用的计算方法不同而出现不同的结果,对计算结果的判断,需要计算者具备一定的科学素养。    2、具体问题的求解。    应用计算机对物理问题进行科学的计算时,要应用高级语言,C 语言在高校非计算机专业的学生中,学习人数较多,在应用中显得方便。以几个具体物理问题为例。    2.1 力学问题。    一颗与太阳相距 r1的天体,在太阳的引力作用下,由静止开始向太阳运动,此天体运动到与太阳相距为 r2时所需时间为[4]P176.        求出时间的具体值。    对时间用解析方法求积分比较困难,可用以下程序[5]P321:    # include <stdio.h>  # include <math.h>  # include <stdlib.h>  # define Rs 7.0e08  # define G 6.67e 11  # define Ms 2.0e30  main( )  {int i , n = 1000000;double ri , R1,R2 , r1 , r2 , t = 0.0 ;  R1 = 100 * Rs ;  R2 = 20 * Rs ;  ri = (R1 R2) / n ;  for(i = 0 ; i < n ; i + +){r1 = R2 + ri * i ;  r2 = R2 + ri * (i + 1) ;  if ( r1 = = R1) continue ;  if ( r2 = = R1) continue ;  if (r1 +r2) / 2 = = R1 ) continue ;  t + = (r2 r1) * (1/sqrt (2 * G * Ms / r1-2 * G * Ms /R1) + 1 / sqrt (2 * G * Ms/r2 2 * G * Ms/ R1) + 4 * (1/ sqrt ( 2* G * MS/ (r1/2 + r2/2) 2 * G * Ms/R1)))/ 6.0 ;  }  printf (“t = %e s \ n”, t ) ;  }    结果:t = 1.706847e + 006 s.    2.2 电磁学问题。    [5]P321流过半导体二极管的电流 I 与二极管两端电压 V 的关系可以表示成:        式中 I0为常数,e=1.6×10^(-19)C;k=1.38×10-23J/K,将二极管与 R=1Ω 的电阻和电动势 V的电源相串联,当 I0=0.5A,T=293K 时,流过二极管的电流 I 和二极管两端的电压 V 是多少。    本题先用代数式求出二极管两端电压方程为:        将求出的电压代入电流方程。    本题用代数式很难求出解析解。用 C 语言,程序如下:    # include <stdio.h>  # include <math.h>  # define e 1.6e 19  # define k 1.38e 23  main( )  { double I0 = 0.5 , T = 293.0 , R = 1.0 ,E0 = 2.0 ;  double Vi1 , Vi2 , I, f1 , f2 ;  Vi2 = 1.0 ;  do  { Vi1 = Vi2 ;  f1 = Vi1 E0 + R * I0 * exp (e *Vi1/ (k * T) 1 ) ;  f2 = 1 + R * I0 * exp (e * Vi1/ (k *T) 1 ) * e / (k * T) ;  Vi2 = Vi1 f1 / f2 ;  }while (fabs(Vi2 Vi1) > 0.001 ) ;  I = I0 * exp(e * Vi2 / (k * T) 1 ) ;  Printf (“\ n RESULT : V = %e \ n”, Vi2) ;  Printf(“\ n I = % e \ n”, I ) ;  }  结果:  V = 5.954266e 002  I = 1.940596    2.3 光学问题[6]P116-206.    计算温度为 1000K 和 2000K 的黑体辐射源表面 1cm2的面积上在可见光波段(400nm-760nm)的辐射功率。    对该问题,由于单位时间内,从黑体辐射源单位表面积上辐射出来的在可见光波段的辐射功率为:        将普朗克黑体辐射公式代入可得:        式中:h=6.626×10^(-34)J . S ,k=1.38×10^(-23)J/K ,c=3.0×10^8m/s.    解该题的程序如下:    # include <math.h >  # include <stdio.h >  # define H 6.626e-34  # define K 1.38e-23  # define C 3.00e+8  # define A 400e-9  # define B 700e-9  void main( )  { double pi , x , dx , jf , h1=0 , h2 = 0 ,e[301];  double t = 1000 ;  long i , n = 300 ;  pi = 4 * atan(1 ) ;  dx = (B- A )/ n ;  for(i = 0 ; i < = n ; i + + )  {  x = A + i * dx ;  e[i] = 2 * pi * H * C * C/(pow(x , 5 )* (H * C/K * t * x)) 1 )) ;  }  for(i = 1 ; i < = n-3 ; i = i +2 )  {  h1 = h1 + e[i] ;  h2 = h2 + e[i + 1] ;  }  jf = dx * (e[0] +e[n] +4 * (h1 +e[n 1 ])+ 2 * h2)/ 3 ;  printf (“\ n n = %d”, n ) ;  printf (“ T = %f”, t ) ;  printf (“ E(T) = %f”, jf ) ;  getch ( ) ;  }  运行结果:  n = 300 T = 1000.000000 E (T) =0.101819  n = 300 T = 2000.000000 E (T) =6969.139583  (E(T)单位为:W / m2)    通过具体问题的求解发现,C 语言在物理题解中,可以将繁杂的计算简单化,体现出在物理计算中应用计算机的优势。    3、结束语。    在物理学领域,由于大多数问题的非线性,使得在处理问题时,变得很难解出解析解,将计算机的优势应用于物理中,使计算简单化,也因为计算机在物理学领域中的应用,在对物理学进行研究过程中,可以采用一些更严格、更全面的复杂模型,如模拟实验上很难实现、技术要求很高或者实验代价昂贵的系统等,由此可发现很多未预料的新现象,推动物理理论的发展,同时也将进一步推动非线性科学的发展。    在学校教学过程中,在物理题解中应用计算机,可以提高学生解决物理问题的能力,为独立解决科研中的实际问题打下必要的基础。    同时,简化计算过程,可充分调动和发挥学生在物理学习中的能动性和主动性,使学生能积极参与到物理学领域的探索中。    参考文献:    [1] 青峰。 简明物理学史[M]. 南京:南京大学出版社,2007.  [2] 刘金远,段萍,鄂鹏。 计算物理学[M]. 北京:科学出版社,2012.  [3] 张琴珠。 计算机辅助教育[M]. 北京:高等教育出版社,2003.  [4] 李增智,孟湛祥,吴亚非,胡艳艳。 大学物理习题的计算机解法[M]. 北京:国防工业出版社,2002.  [5] 贾瑞皋,薛庆忠。 电磁学[M]. 北京:高等教育出版社,2011.  [6] 梁绍荣,刘昌年,盛正华。 普通物理学 第四分册光学(第二版)[M]. 北京:高等教育出版社,1997.

转载请注明来自:http://www.zazhifabiao.com/lunwen/dzxx/jsjyy/29103.html