《计算物理(研究生用)》[第1篇.ppt

上传人:小飞机 文档编号:5904180 上传时间:2023-09-01 格式:PPT 页数:47 大小:240KB
返回 下载 相关 举报
《计算物理(研究生用)》[第1篇.ppt_第1页
第1页 / 共47页
《计算物理(研究生用)》[第1篇.ppt_第2页
第2页 / 共47页
《计算物理(研究生用)》[第1篇.ppt_第3页
第3页 / 共47页
《计算物理(研究生用)》[第1篇.ppt_第4页
第4页 / 共47页
《计算物理(研究生用)》[第1篇.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《《计算物理(研究生用)》[第1篇.ppt》由会员分享,可在线阅读,更多相关《《计算物理(研究生用)》[第1篇.ppt(47页珍藏版)》请在三一办公上搜索。

1、计算物理学,合肥工业大学理学院,合肥工业大学理学院,第一篇 绪 论,1.1 计算物理学概述,一、计算物理学:以计算机技术为手段,运用数学方法,解决复杂物理问题的一门应用学科。,说明:1、边缘学科;是物理、数学、计算机科学相结合的交叉科学;2、物理学的一个分支,与理论物理和实验物理密切相关。3、对复杂物理规律进行研究的重要手段。,合肥工业大学理学院,1)实验数据的处理;2)实时控制;3)自动控制。,实验物理:,例如:在核物理和高能物理实验中,计算机能自动处理数据,并挑选出对研究最有用的一些数据。再如:计算分析宇宙飞船的最优飞行路线等。神洲六。另外,非线性物理学问题,微观结构计算。,合肥工业大学理

2、学院,杂志的发展1966年,美国,伯尼、奥尔德等,计算物理杂志;1969年,西欧(英),伯基,计算物理通讯;1984年,中国,核学会,计算物理。,1)经过简化假设,实验上升到理论模型;2)利用现有数学知识进行分析,遇到计算困难;3)计算机导致了数值分析方法、蒙特卡罗方法、分子动力学方法;4)量子物理、统计物理、非线性物理;,理论物理,合肥工业大学理学院,二、计算物理学研究方法:分析物理问题建立模型选择算法计算机上运算、分析和模拟 结果。,1、算法的选择:当确定了物理问题的模型后,就要选择算法进行数值或非数值计算求解。它是计算物理的基础;算法选择的好坏,直接影响到能否计算出结果、运算精度的高低、

3、计算量的大小等;如果提出新的算法,对算法进行分析。,合肥工业大学理学院,(1)模型误差:将实际的物理问题归结为数学问题时,忽略了某些次要因素,是理想化的“数学模型”,模型本身存在着一定的误差。(2)观测误差:数学模型中含有实验测量的物理参数,带有一定的误差。如:物质密度、比热等。(3)截断(方法)误差:计算机有限次运算,不能获得精确解而引来的误差。(4)舍入误差:计算机有限字长带来的舍入误差。,2、算法的误差:所有数值计算方法(逼近)都存在误差。来源主要有以下四个方面:,合肥工业大学理学院,3、计算的收敛性和稳定性:,(2)稳定性:更关注舍入误差的问题,这是由于计算机的有限字长带来的误差 在一

4、定条件下,两者是关联的和等价的,两者的关系表现得很复杂,要弄清所采取的方法是否具有收敛性或稳定性往往非常困难。,(1)收敛性:主要是研究算法误差的变化问题。有时随着计算的进行,误差越来越大,达到完全不可靠的程度,这时收敛性就差或称发散。,合肥工业大学理学院,1.2 MATLAB语言基础,MATLAB的窗口环境一、MATLAB语言的显著特点1、具有强大的矩阵运算能力:Matrix Laboratory(矩阵实验室),使得矩阵运算非常简单。2、MATLAB是一种演算式语言基本数据单元的维数和类型不需要特别说明;数学表达式和运算规则与通常的习惯类同;含有丰富的数学函数、数学处理方法和绘图功能;,合肥

5、工业大学理学院,1、启动MATLAB命令窗口启动:安装好MATLAB后,双击MATLAB图标进入命令窗口,在命令窗口中直接输入命令语句。命令:MATLAB语句格式 XXXX,如:变量表达式;将表达式的值赋予变量。当键入回车键时,该语句被执行。语句执行之后,窗口自动显示出语句执行的结果。如果希望结果不被显示,则只要在语句之后加上一个分号(;)即可。,二、MATLAB命令窗口,合肥工业大学理学院,(1)编辑修改命令用方向键和控制键来完成:回上一行命令:回下一行命令(2)分页输出命令more off:不允许分页 more on:允许分页“回车键”前进一行,“空格键”显示下一页,“q”结束当前显示。(

6、3)多行的续行命令()如果命令语句太长希望分行输入,则可用此命令。,2、命令行编辑器,合肥工业大学理学院,1、变量(1)变量的命名:规则与其它语言类同。,三、变量和数值显示格式,(2)一些特殊的标示符(其中有些可以认为是变量或常量)ans:用于结果的缺省变量名 i、j:虚数单位realmax:最大正实数2+1023 pi:圆周率realmin:最小正实数2-1022 eps:运算最小数10-52Inf:无穷大 NaN:不定值,合肥工业大学理学院,变量值的提取:在命令窗口中,变量值可以在任何需要的时候被调用。命令格式如:a,(3)变量操作,2、数值显示格式语句后不加“;”时,执行结果可以在屏幕上

7、显示,同时赋值给指定的变量。如果没有指定变量,则赋值给一个特殊的变量ans。如果结果为整数,则显示没有小数;如果结果不是整数,则输出形式由format命令来控制。,合肥工业大学理学院,1、常用的数学运算符;*;/(右除);(左除);(幂)在运算式中,多条命令可以放在一行中,它们之间需要用“;”或“,”隔开。“,”要求显示结果,而“;”则禁止结果显示。,四、简单的数学运算,例、jswlx_1_4_ 2.m,2、常用数学函数 abs;sin;cos;tan;asin;sqrt;exp;sign;mod(求余);log;imag(复数虚部);real(复数实部);conj(共扼复数)等,合肥工业大学

8、理学院,1、MATLAB的工作空间常用命令:who:显示工作空间中所有变量的一个简单列表whos:列出变量的大小、数据格式等详细信息clear:清除工作空间中所有的变量clear+变量名:清除指定的变量clc:清屏,五、MATLAB的工作空间(workspace),1、help+命令:在命令窗口中显示某命令帮助信息help graphics_通用图形函数的帮助信息。2、demo:打开示例窗口 3、Help菜单,六、使用帮助,合肥工业大学理学院,y=2,4,53 6 8y=2 4 5 3 6 8,一、向量与矩阵的创建,1.2.2 向量与矩阵运算,a=1;b=2;c=3;x=5 b c;a*b a

9、+c c/bx=5.000 2.000 3.000 2.000 4.000 1.500,1、在命令窗口中输入,矩阵的元素:纯数字(含复数)或变量(表达式)。矩阵的元素放在方括号内,行与行之间用“;”隔开,行内元素用空格或“,”隔开。回车键同“;”。一行的矩阵就是向量。大的矩阵可用分行输入。,合肥工业大学理学院,(1)用线性等间距生成向量矩阵start:step:enda=1:2:10a=1 3 5 7 9,start为起始值,step为步长,end为终止值。当步长为1时可省略step参数;另外step也可以取负数。,2、语句生成,(2)a=linspace(n1,n2,n)在线性空间上,行矢量

10、的值从n1到n2,数据个数为n,缺省n为100。,a=linspace(1,10,10)a=1 2 3 4 5 6 7 8 9 10,合肥工业大学理学院,单位矩阵:eye(m,n);%m行n列对角线为1的矩阵 eye(m);%m阶单位方阵,(3)一些常用的特殊矩阵,零矩阵:zeros(m,n);%m行n列全0矩阵 zeros(m);%m阶全0方阵,合肥工业大学理学院,全一矩阵:ones(m,n);ones(m),(0,1)均匀分布随机矩阵:rand(m,n)产生一个mn的均匀分布在(0,1)间的随机矩阵,合肥工业大学理学院,1、转置:对于实矩阵用()符号或(.)求转置结果是一样的;然而对于含复

11、数的矩阵,则()将同时对复数进行共轭处理,而(.)则只是将其排列形式进行转置。,a=1 2 3;4 5 6a=1 4 2 5 3 6,a=1 2 3;4 5 6.a=1 4 2 5 3 6,b=1+2i 2-7ib=1.0000-2.0000i 2.0000+7.0000ib=1+2i 2-7i.b=1.0000+2.0000i 2.0000-7.0000i,二、矩阵的运算,合肥工业大学理学院,+;-;*;和/;.*;.;./;.如:a=1 2;3 4;b=3 5;5 9c=a+b d=a-bc=d=4 7-2-3 8 13-2-5a*b13 23;29 51a/b-0.50 0.50;3.5

12、0 1.50ab-1-1;2 3a3 37 54;81 118a.*b 3 10;15 36a./b 0.33 0.40;0.60 0.44a.b 3.00 2.50;1.67 2.25a.3 1 8;27 64,2、四则运算与幂运算,只有维数相同的矩阵才能进行加减运算。注意矩阵乘运算条件(前列后行相同)。ab左除运算等效于求a*x=b的解;而右除a/b等效于求 b*x=a的解。只有方阵才可以求幂。“.”运算是两个维数相同矩阵对应元素之间的运算。,合肥工业大学理学院,3、逆矩阵与行列式计算(方阵)求逆:inv(A);求行列式:det(A),a=1 2 3;4 5 6;2 3 5;b=inv(a

13、)b=-2.3333 0.3333 1.0000 2.6667 0.3333-2.0000-0.6667-0.3333 1.0000det(a)ans=-3,合肥工业大学理学院,1、矩阵下标操作A(m,n):提取第m行,第n列元素A(:,n):提取第n列元素A(m,:):提取第m行元素A(m1:m2,n1:n2):提取第m1行到第m2行和第n1列到第n2列的所有元素(提取子块)。,三、矩阵的操作,合肥工业大学理学院,2、矩阵的大小,合肥工业大学理学院,1.4.3 MATLAB绘图简介,MATLAB提供了丰富的绘图功能help graph2d可得到所有画二维图形的命令help graph3d可得

14、到所有画三维图形的命令,1、基本的绘图命令plot(x1,y1,option1,x2,y2,option2,)x1,y1给出的数据分别为x,y轴坐标值,option1为选项参数,以逐点连折线的方式绘制1个二维图形;同时类似地绘制第二个二维图形,.。,合肥工业大学理学院,例如:plot(x,y);plot(x,y,option)选项参数option定义了图形曲线的颜色、线型及标示符号,它由一对单引号括起来。例、jswlx_1_4_ 3.m jswlx_1_4_ 3_.m,2、选择图像figure(1);figure(2);figure(n)打开不同的图形窗口,以便绘制不同的图形。,3、grid

15、on:在所画出的图形坐标中加入栅格 grid off:除去图形坐标中的栅格,合肥工业大学理学院,4、hold on:把当前图形保持在屏幕上不变,同时 允许在这个坐标内绘制另外一个图形。hold off:使新图覆盖旧的图形例、jswlx_1_4_4.m jswlx_1_4_ 4_.m,5、设轴的范围axis(xmin xmax ymin ymax)例jswlx_1_4 _5.maxis(equal):将x坐标轴和y坐标轴的单位刻度大小调整为一样。,合肥工业大学理学院,title(字符串):在图形的上端显示字符串(标题)。xlabel(字符串),ylabel(字符串):设置x,y坐标轴的名称。te

16、xt(x,y,字符串):在图的坐标(x,y)处,标示单引号内的字符串。特殊文字要用反斜杠()开头。7、legend(字符串1,字符串2,字符串n)在屏幕上开启一个小视窗,依据绘图命令的先后,用对应的字符串区分图形上的线。例、jswlx_1_4 _6.m,6、文字标示,合肥工业大学理学院,8、subplot(mnk):分割图形显示窗口m:上下分割个数,n:左右分割个数,k:子图编号例、jswlx_1_4 _7.m,9、了解应用型绘图指令:可用于数值统计分析或离散数据处理bax(x,y);x、y的高度条形图 hist(x,y);x在y的范围直方图stairs(x,y);台阶图 stem(x,y);

17、火柴杆图例、jswlx_1_4 _8.m,合肥工业大学理学院,MATLAB程序设计入门,一、MATLBA程序的基本设计原则,1、程序的注释:使程序更具可读性。(_1_4_4_.m)2、主程序开头用clear:消除工作空间中其他变量对程序运行的影响。但注意在子程序中不要用clear。3、参数值集中放在程序的开始部分:便于维护。4、语句行之后输入“;”:中间结果不显示。,5、程序尽量模块化:采用主程序调子程序的方法。,6、工作路径:设置好MATLAB的工作路径。,合肥工业大学理学院,Editor/Debugger窗口:MATLAB的程序编辑器。在编辑器中,文字的不同颜色表明不同的属性。绿色:注解;

18、黑色:程序主体;红色:属性值的设定;蓝色:控制流程。工作路径的设置:在运行程序之前,必须设置好MATLAB的工作路径,使得所要运行的程序及运行程序所需要的其他文件处在设置的目录之下。通过路径浏览器(path browser)就可进行设置,二、M文件的编辑,合肥工业大学理学院,1、程序文件以.m格式进行存取,包含一连串的MATLAB指令。需要在工作空间中创建变量,没有输入参数,也不会返回参数。程序运行:用快捷菜单;或在工作空间中键入其名称(注意当前路径Current Directory)。,三、MATLAB的程序类型,MATLAB的程序类型主要有两种:(1)程序文件;(2)函数(function

19、)文件。,合肥工业大学理学院,(1)函数定义行(关键字function)格式:function out1,out2,.=filename(in1,in2,.)放在函数的最开始。输入和输出(返回)的参数个数分别由MATLAB的保留变量来定。filename:函数名与文件名同名。,2、函数文件,函数接受输入参数,然后执行并输出结果。函数中语句顺序是:,合肥工业大学理学院,(3)函数体语句与命令窗口的语句一样书写。,(2)函数注释(或help)行在定义行之后。以(%)开头和空行结束的连续数个注释行组成。用help命令可以显示它的注释说明。例jswlx_1_4 _9.m,合肥工业大学理学院,1、函数程

20、序调用:函数程序与主程序之间的数据是通过参数进行传递的。函数程序是采用主程序传递来的参数进行计算后,将结果返回主程序的。例jswlx_1_4 _10.m,四、函数程序中的变量,2、局部变量、全局变量:如果函数内的变量没有特别声明,那么这个变量只在函数内部使用,即为局部变量。如果多个函数共用一个变量,那么可以用global来将它声明为全局变量。例jswlx_1_4 _11.m,合肥工业大学理学院,五、常用的编程命令,pause:停止m文件的执行直至有键按下。pause(n)将使程序暂停n秒。echo on/off:控制是否在屏幕上显示程序内容。x=input(prompt):把输入的字符串作为提

21、示符,等待使用者输入一个响应,然后把它赋值到x。,合肥工业大学理学院,MATLAB的运算符有三种类型:算术运算符、关系运算符、逻辑运算符。计算优先顺序依次为算术运算符、关系运算符、逻辑运算符。,六、关系与逻辑运算符,1、关系运算符假设有:A=1 2-1-5 B=0 2 3 1 大于 AB ans=1 0 0 0;A1 ans=0 1 0 0=大于等于 A=B ans=1 1 0 0=等于 A=B ans=0 1 0 0;A=1 ans=1 0 0 0=不等于 A=B ans=1 0 1 1;A=1 ans=0 1 1 1,合肥工业大学理学院,非 A 0 0 1 0 1 0,2、逻辑运算符,注意

22、:在处理逻辑运算时,运算元只有两个值即0和1(非0)。如果指定的数为0,则MATLAB认为其为0;若数不为0,则认为是1。,设有:A=5-4 0-0.5 B=0 1 0 9,&与(串联)A&B0 1 0 1 A&1 1 1 0 1,|或(并联)A|B 1 1 0 1 A|1 1 1 1 1,合肥工业大学理学院,步长缺省值为1,可以在正实数或负实数范围内任意指定。对于正数,循环变量的值大于终止值时,循环结束;对于负数,循环变量的值小于终止值时,循环结束。循环结构可以嵌套使用。例jswlx_1_4 _12.m,七、程序流程控制,1、for循环语句for 循环变量起始值:步长:终止值 循环体end,

23、合肥工业大学理学院,2、while循环语句while 表达式 循环体end,若表达式为真,则执行循环体的内容,执行后再判断表达式是否为真,若不为真,则跳出循环体,向下继续执行。例jswlx_1_4 _13.m,While循环和for循环的区别在于,while循环结构的循环体被执行的次数不是确定的,而for结构中循环体的执行次数是确定的。,合肥工业大学理学院,3、if,else语句(1)if 逻辑表达式 执行语句 end,当逻辑表达式的值为真时,执行该结构中的执行语句,执行完之后继续向下进行;若为假,则跳过结构中的内容,向下执行。,合肥工业大学理学院,格式:switch 表达式(可以是标量或字符

24、串)case 值1 语句1 case 值2 语句2.otherwise 语句3 end 例jswlx_1_4 _15.m,执行方式:表达式的值和哪种情况(case)的值相同,就执行哪种情况中的语句,如果不同,则执行otherwise中的语句。格式中也可以不包括otherwise,这时如果表达式的值与列出的各种情况都不相同,则继续向下执行。,4、switch语句,合肥工业大学理学院,1.2.5 几个简单的模拟实例,实例一、振动合成和拍频模拟(例jswlx_1_5_1.m)t=0:0.001:10;a1=5;w1=300;v1=3;a2=10;w2=310;v2=4;%振幅;角频率;初位相y1=a

25、1*sin(w1*t+v1);%振动一y2=a2*sin(w2*t+v2);%振动二y=y1+y2;%振动合成subplot(3,1,1),plot(t,y1),ylabel(y1);subplot(3,1,2),plot(t,y2),ylabel(y2);subplot(3,1,3),plot(t,y),ylabel(y),xlabel(t);pause,sound(y1);%pause:等待用户按键再执行;sound(x):x声音pause(2),sound(y2);%pause(n):等待n秒后继续执行pause(2),sound(y);pause;,合肥工业大学理学院,实例二、阻尼振动

26、模拟(例jswlx_1_5_2.m),单自由度阻尼系统振动方程:mx+cx+kx=0 解得:x(t)=Aexp(-nt)sin(dt+)其中,x0和v0分别为初位置和初速度。程序中取n=10,x0=2,v0=1,计算终点时间tf=3,从0.1到0.9。,合肥工业大学理学院,实例三、赫姆霍兹线圈磁场分布模拟(例jswlx_1_5_3.m)赫姆霍兹线圈就是间距正好等于线圈半径的一对相同的共轴载流圆线圈。轴线附近的磁场的大小十分均匀,而且都是沿x方向。程序模拟结果是其中一个线圈在轴线x=-R,R内的磁场分布。y是R方向。,实例四、迈克尔逊干涉现象模拟(例jswlx_1_5_4.m),实例五、杨氏双缝

27、干涉现象模拟(例jswlx_1_5_5.m),实例六、夫朗和费孔衍射现象模拟(例jswlx_1_5_6.m),合肥工业大学理学院,作业及上机内容,1、简述计算物理学概念及研究内容。2、简述计算物理学中算法的主要误差来源。3、熟悉MATLAB命令窗口及部分命令。主要有:行编辑命令、;分页输出more on/off;续行4、变量定义、数值显示、特殊标示符识别,主要有ans、i、j、pi、eps、inf、NaN等。5、熟悉常用数学运算符+、-、*、/、.;熟悉常用数学函数 abs、sin、cos、sqrt、exp、mod、log、imag、real、conj等。,合肥工业大学理学院,6、熟悉工作空间

28、命令who、whos、clear、clc、help、demo等。7、熟悉矩阵(向量)的创建:直接生成,;语句生成xmin:n:xmax,linspace(xmin,xmax,m);特殊矩阵生成 eye()、zeros()、ones()、rand()。8、熟悉矩阵的运算,主要有:四则与幂+、-、*、/、.*、./、.、.;转置、.;逆inv()、行列式det();求秩rank()等。9、熟悉矩阵的操作,提取矩阵元素或子块A(m,n)、A(:,n)、A(m,:)、A(m1:m2,n1:n2),合肥工业大学理学院,10、熟悉绘图命令,主要有plot()、figure()、grid on/off、hold on/off、axis()、text()、title()、x/ylabel()、subplot()等。11、熟悉程序文件和函数文件的编写,主要有函数文件编写基本原则;变量运用;数学、关系、逻辑运算符运用;条件语句和循环语句运用。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号