计算物理常识.docx

上传人:b****7 文档编号:23443958 上传时间:2023-05-17 格式:DOCX 页数:20 大小:45.60KB
下载 相关 举报
计算物理常识.docx_第1页
第1页 / 共20页
计算物理常识.docx_第2页
第2页 / 共20页
计算物理常识.docx_第3页
第3页 / 共20页
计算物理常识.docx_第4页
第4页 / 共20页
计算物理常识.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

计算物理常识.docx

《计算物理常识.docx》由会员分享,可在线阅读,更多相关《计算物理常识.docx(20页珍藏版)》请在冰豆网上搜索。

计算物理常识.docx

计算物理常识

主要内容

计算机、数值方法和物理的结合。

Fortran语言、计算方法、绘图

物理问题的计算机实现:

分析物理、程序实现、

结果分析。

本门课程的目的

培养、提高物理计算能力。

熟悉并能灵活运用Fortran语言、掌握常用的一

些计算方法、分析解决具体物理问题。

课程特点及要求

各种教材、各学校具体内容差别很大

实际操作性很强、动手具体作

每次课都必须到,完成布置的作业

程序及文本每次课结束时保存

照顾大多数,同学之间相互讨论

考试课程论文15分

(有自己的问题、方法、计算、结果)

平时作业、讨论等15分

考试70分

(主要还是平时做过的方法、程序)

 

第一部分Fortran语言简介

Fortran语言是目前国际上广泛流行的一种高级语言,主

要适用于科学计算,Fortran是FORmulaTRANslation的缩写。

现在Fortran语言的版本很多,功能也很强(也具有图形

功能)我们介绍标准Fortran(1966年),兼容于现在流行其他

版本。

Fortran语言有许多具体而繁琐的规定,我们从实例入手

学习,不要求死记硬背,不要求面面俱到,主要培养一种大

局观(思路是最重要的)。

更多的语句、功能用到再学。

积累

一些小程序,一些相对固定模块可以复制。

第1章Fortran源程序的书写格式

源文件产生

源程序是以for或f为扩展名的文本文件,可以用任何纯

文本文件编辑器产生。

常用的有:

edit、windows文本编辑器、word(存为纯文本)等

高级版本的编辑软件,高级版本的Fortran平台等。

源文件格式要求(严格、麻烦)

每个源程序包含若干行---〉不固定行数

每行最多80列,即每行最多写80个字符(汉字为2个字符)

列数有最大限制超过自动不认

每行分为三个区

1标号区

标号区1至5列如果需要标号就写在这个区内,标号最

大5位数,1到99999。

(注意不要超区,到6位以后)

注意:

标号不是行的编号,标号像“名字”,不像“学号”;

标号可以不连续,也不要求按照先后从小到大。

实质是为了标明语句。

2续行区

第6列为续行区。

当一个语句在一行写不下时,可以在下

一行续写。

这时在续行的第6列写上一个非零非空格的字符。

(建议用叹号!

)最多可有19个续行(估计三个就够咧)。

注意:

上一行不必写满,任意列都可转下一行;

续行可以从第7列后任意行开始;

续行的标号区(1至5列)必须空白,不能有

标号。

3语句区

第7到72列填写语句内容。

可以从第7列开始任意列写起。

最后几位73到80不能写程序作为程序员坐标志,一般写行号。

以上规则只对源程序的语句进行限制,数据行,注释行等例外

源程序的行的分类

1注释行

第1列上写字母C.

表明是注释,系统在编译时不予编译,为了程序好读,想写啥都行。

注释行可以在原程序的任意行写。

2起始行

一个完整的语句可以比较长,分若干行写完。

语句的第一行为起始行。

3继续行

一个的语句一行写不完时可以在下一行接着写。

接着写的行叫做继续行,一个语句只有一个起始行,但可以有若干续行。

4结束行

第7列后写上END表示程序块到此结束。

C===========================================C

CAProgramfor1+1=?

C

CWrittenbyLaoZhangC

CDate2007.3.1C

C===========================================C

C12378

C234567*********7890123456789012345。

1234567890

A=1.01

2B=1.02

4C=A3

!

+B4

Write(*,*)C5

END6

 

第2章常数变量算术表达式标准函数

常数

具体的数,标准Fortran规定可用6种类型的常数:

整型(Integer)实型(Real)

双精度型(DoublePrecision)复型(Complex)

逻辑型(Logical)文字型(Character)

1、整型常数就是整数

注意范围16位机以16位2进制数表示一个整数

第一位放正负号标志0正1负

则范围为-215到+215-1-32768到32767

32位机

则范围为-231到+231-1-2147483648到2147483647

100111110101000001010011

-4-3-2-10123

整数在计算机中没有任何误差。

2、实型常数

带小数点的数和(或)带指数的数

例如:

1.23-5.6E38E-61E32E+4123.

注意100Fortran认为是整数100

1E+2Fortran认为是实数100.0

实数因计算机系统的不同实数的范围注意浮点溢出1038

3、变量名

每个变量在同一模块中只有唯一名字,以字母开头。

标准Fortran变量名最长识别5个字符

Fortran语言中的语句不能用例如:

COSREADIFWRITEGOTO等

建议:

变量名给长点

用大写

4、变量类型特别注意!

隐含说明:

以I,J,K,L,M,N开头的变量为整型变量

其余为实型变量I-N规则

显式说明:

INTEGERABC,IMAX,MIN,TIME

REALABC,IMAX,MIN,TIME

IMPLICIT隐含说明:

IMPLICITINTEGER(A,B,N)

IMPLICITREAL(A,B,N)

或IMPLICITINTEGER(A,B,N),REAL(K,M)

强行说明仅适用于所在模块,在执行语句之前。

5、算术运算

+(加)-(减)*(乘)/(除)**(乘方)

书写规则和其他语言相同

注意:

a、两个算术运算符号不能相连

例如:

A/-B应写成A/(-B)

b、优先顺序

括号函数乘方乘除加减

c、连续乘方

应写成2**(3**4)

应写成(2**3)**4

负数和零不能成方,例如:

(-3.5)**2

d、乘号不能省略

(A+B)(C+D)应写成(A+B)*(C+D)

e、标准Fortran不允许不同类型量混合运算

例如:

10-X+0.3*6+I**N

现在大多数Fortran允许,但在编译时系统会先转换成同一类型,然后再计算,转换原则:

同类转换保持原形不变4*5整型4.*5.实型

特别注意:

15/5=315/4=365/10=6

-1/2=0-8/6=-1小数位去掉

5/3*6=65*6/3=10

15./5.=3.15./4.=3.7565./10.=6.5

-1./2.=-0.5-8./6.=-1.333小数位保留

5./3.*6.=10.5.*6./3.=10.

不同型转换为高级类型

建议:

一只情况下直接用实型,不用整形再转换

需要转换时用转换函数

标准函数

标准函数

函数名含义函数变量数变量型函数型

ABS|a|绝对值1实实

AMAX0Max(a1,a2,…)最大值大于2整实

AMAX1Max(a1,a2,…)最大值大于2实实

AMIN0Max(a1,a2,…)最小值大于2整实

AMIN1Max(a1,a2,…)最小值大于2实实

ALOG10Log10(a)常用对数1实实

ALOGLn(a)自然对数1实实

EXPea指数1实实

SQRTa1/2平方根1实实

SINSin(a)正弦1实实

COSCos(a)余弦1实实

注意:

三角函数自变量为弧度

a为角度时换成弧度a*3.1415926/180.

自变量可以是包含函数表达式。

编译连接

不同版本的FORTRAN、不同系统编译命令略有不同。

(1)FOR1a.for,产生a.obj目标文件

FOR2a.obj产生a.exe可执行文件

(2)UNIX系统

FORa.for,产生a.obj目标文件

LINKa.obj产生a.exe可执行文

RUNa

(3)微机Fortran77编译

DOS状态命令格式:

F77abc.for直接产生abc.exe

(4)Fortran90编译

DOS状态命令格式:

F90abc.for直接产生abc.exe

或者在其平台上编译、连接、运行

我们用Fortran77编译,

在机器上有G77目录。

运行G77setup.bat对路径等进行设置;

然后编译

DOS状态命令格式:

G77abc.for产生A.EXE运行

可执行文件名字都固定为A.EXE。

第3章最基本的FORTRAN语句

最基本的几个语句

简单赋值、输入、输出、结束

程序中赋值

X=10.0

Y=2.0

A=X+Y+SIN(X-5.0*Y)

注意:

类型

键盘或其他方式输入,输出

输入:

READ(I1,I2)

输出:

WRITE(I1,I2)

I1通道号可以对应于文件,键盘等,

I2格式定义行的行号。

例如READ(5,20)A,B,K

WRITE(6,30)A+B,K,A

20FORMAT(F9.3,F7.2,I4)

30FORMAT(F12.3,I8,E10.3)

READ(5,20)A,B,K

从通道5,以标号为20的format行给出的格式读入值,

输给程序中变量A,B,K

WRITE(6,30)A+B,K,A

以标号为30的format行给出的格式输出A+B,K,A,输出到通道6指定的设备(文件、显示器、打印机等)

格式:

100FORMAT(3x,2F8.4,6H@#$%^&,3I5,5E16.6)

3x表示3个空格;

2F8.4表示2个长为8格,小数为4位的浮点数;

3I5表示3个长为5位的整数;

5E16.6表示5个长为16格,小数为6位的科学计数法数;

6H@#$%^&表示输出6个字符,这6个字符为:

@#$%^&

FORMAT语句必须有标号,以便和read,write语句对应。

FORMAT语句中的有关数数的类型、个数要和输入输出语句中的标量或常数对应(至少不能有冲突)。

建议:

输入用自有格式

READ(I1,*)自由格式

READ(*,*)键盘自由格式

输出用格式输出,结果整齐。

出现*******时注意数字太大,可用E格式

小作业:

写一小程序,计算某个同学的平时成绩。

卷面分70%最后成绩,计算平时分该给多少?

1卷面50,最终60平时多少?

(直接在程序中输值);

2从键盘输值。

第4章逻辑常数、变量、表达式

逻辑常数

逻辑常数只有两个真(.TRUE.)或假(.FALSE.)

3>2的值为.TRUE.

3=2的值为.FALSE.两个点不能省略

逻辑变量

LOGICALA,B,QWERT,A123

定义A,B,QWERT,A123为逻辑变量

I-N规则不再起作用

A=.FALSE.

B=.TRUE.

A123=3.0.LT.2.0

算术关系表达式

X>Y,ABC<3.0*SIN(A)

.LT.LessThan小于

.LE.LessthanorEqualto小于等于

.EQ.Equalto等于

.NE.NotEqualto不等于

.GT.GreaterThan大于

.GE.GreaterthanorEqualto大于等于

例如:

(3.0*x).GT.(3.0+x)或写成3.0*x.GT.3.0+x

注意:

不要用<>=等符号;

两边的两个点不能省略;

关系表达式两边应类型相同(标准要求)。

逻辑表达式

.OR.(或).AND.(与).NOT.(非)

写出一下逻辑表达式

D>C和X>Y

X=0或=0

A+B>C+D且X=9

表达式运算次序

括号,

算术表达式(**,*,/,-,+),

关系表达式(.GT.,.GE.,.LT.,.LE.,.EQ.,.NE.),

逻辑表达式(.AND,.OR.,.NOT.).

例:

A=3.,B=4.,C=5.

求以下表达式的值:

C-B.EQ.A.AND..TRUE..OR..NOT.8.0*B-A.GT.(A+C)*4.0

(C-B).EQ.A.AND..TRUE..OR..NOT.(8.0*B-A).GT.((A+C)*4.)

1.029.032.

[(C-B).EQ.A].AND..TRUE..OR..NOT.[(8.0*B-A).GT.((A+C)*4.)]

FF

{[(C-B).EQ.A].AND..TRUE.}.OR.{.NOT.[(8.0*B-A).GT.((A+C)*4。

)]}

FT

T

作业1、检验以上表达式,A,B,C从键盘输入。

2、平面上有四个圆形靶,半径为1,圆心分别在(2,2),(2,-2),(-2,2),(-2,-2),从键盘输入任意点作为射击弹着点,判断是否打中靶子。

第5章控制转移语句

无条件转移语句

GOTOn

n为语句标号,直接跳到标号为n的行,不再逐行执行。

注意:

标号为n的行必须是可执行行。

不能是注释,说明行。

用GOTO语句将第一次作业中程序改成计算多个同学的平时成绩

算术条件转移语句(算术IF)

IF(x)n1,n2,n3

x是一算术表达式(不是一个条件如x>0)

n1,n2,n3是行的标号(可以有相同)

转移到:

x<0到n1

x=0到n2

x>0到n3

注意:

必须有三个出口

作业:

计算

的根。

要求:

多组,a,b,c从键盘输入,当无实根时给出出错提示。

输入自由格式

输出代字符a=1.b=2.c=3.x=4.格式

逻辑条件转移语句(逻辑IF)

(a)IF(e)语句(只能一个)

(b)IF(e)THEN

语句组

ENDIF

(c)IF(e)THEN

语句组1

ELSE

语句组2

ENDIF

其中:

e为逻辑表达式。

(不是数学表达式)。

逻辑表达式结果为真或假两个结果。

IFTHEN…….ENDIF需要匹配。

例:

IF(B*B-4.0*A*C.GT.0.0)X=(-B+SQRT(B*B-4.0*A*C))/2.0*A

例:

IF(B*B-4.0*A*C.GT.0.0)THEN

X1=…..

X2=…..

ENDIF

例:

IF(B*B-4.0*A*C.GT.0.0)THEN

X1=…..

X2=…..

WRITE(*,10)‘x1=’,x1,’x2=’,x2

ELSE

WRITE(*,*)‘NoRealRoots’

ENDIF

计算转移语句(计算GOTO语句)

GOTO(k1,k2,k3,k4,….,kn),I

其中:

ki是被转向的语句标号

I是简单整型变量

当I=i时执行标号为ki的行.

注意:

I标准FORTRAN只能是整形变量,不能是表达式.(高版本整型表达式可以),

I的值必须在1到n之间,且必须有值.

作业

1.A,B,C读入,求以下表达式的值:

C-B.EQ.A.AND..TRUE..OR..NOT.8.0*B-A.GT.(A+C)*4.0

2、平面上有四个圆形靶,半径为1,圆心分别在(2,2),(2,-2),(-2,2),(-2,-2),从键盘输入任意点作为射击弹着点,判断是否打中靶子。

3.计算

的根。

要求:

多组,a,b,c从键盘输入,当无实根时给出出错提示。

输入自由格式,输出代字符a=1.b=2.c=3.x=4.格式

4.统计分数分布,输入50个数(0到100),统计

优秀90以上,良好80到89,合格70到79,及格60,到69,不及格60以下人数,并计算各百分比,一位小数.

100READ(*,*)SCORE

I=SCORE/10-4

IF(I<4)I=1

GOTO(50,60,70,80,90),I

50,

60,

70,

80

IF(M

FLOAT(I)或1.0*IINT(A)

第5章循环

循环

格式1

DOnI=M1,M2,M3

循环体语句组

n可执行语句(CONTINUE)

格式2

DOI=M1,M2,M3

循环体语句组

ENDDO

 

其中:

n为语句标号,循环体结束语句,

I循环变量(标准F需要整形),

M1循环变量初值,

M2循环变量末值,

M3循环变量步长。

例:

DO100I=1,100,2

IF(MOD(I,5).EQ.0)THEN

WRITE(*,*)‘五的倍数’,I

ENDIF

100WRITE(*,*)I*2

STOP

END

I,M1,M2,M3标准FORTRAN要求整形,现在很多版本都可以是实型,

可以是具体的常数,也可以是变量,有的版本还可以是表达式(不建议用表达式)

注意用实型时,变量也必须统一。

例:

A=0.0

B=10.*2.7

C=0.5

DO100T=A,B,C

WRITE(*,*)T,AMOD(T,2.5)

100CONTINUE

WRITE(*,*)‘结束’

STOP

END

执行过程:

给循环变量赋值I=M1;

执行循环体;

执行标号为n的语句后给循环变量家步长I=I+M3;

比较I是否大于M2;

不大于重复循环体,大于结束循环执行循环体外第一行。

注意:

1循环的终端语句只能是一个可执行语句;

不能是以下语句注释,IF,FORMAT,GOTO,DATA,

DO循环,STOP,END,RETRUN,PAUSE等

(建议大家多用CONTINUE)

2循环变量在循环体中尽量不要对它赋值;

3可以用GOTO等语句从循环中跳出,但不能跳进;

4循环正常结束后,循环变量的数值不确定,不要再引用;

多重循环

格式

DOn1I1=M11,M12,M13

语句组1

DOn2I2=M21,M22,M23

语句组2

n1可执行语句

语句组3

n2可执行语句

语句组4

注意:

并列循环控制变量可以同名,嵌套循环不能同名;

内循环必须完全嵌套在外循环内,不能交叉;

内外循环可以公用终端语句;

不能有循环体外转移到循环体内

但以下转移是合法的

DO300I=M1,M2,M3

语句组1

GOTO100

200WRITE(*,*)‘1234567890’

语句组3

300CONTINUE

100A=B

语句组4

GOTO200

特点:

从循环体中来,又进到循环体内。

这样循环变量有值,相当于将上边三行方在循环体内。

(不同于简单的由循环体外到内)

文件操作

OPEN(n,FILE=’E:

\MYFILE\T.OUT’,TYPE=’OLD’)

N为同道号,和所打开的文件E:

\MYFILE\T.OUT对应;

FILE=’E:

\MYFILE\T.OUT’当缺省路径时,为当前目录;

TPYE=’OLD’为打开文件类型,可有如下参数:

   OLD(打开已有的),

  NEW(产生新文件并打开),

   UNKNOWN(已有则打开,无则产生并打开)

OPEN为执行语句,可以放在任何地方,注意方在定义语句后。

读  READ(5,*)A,B,C,D,E

   每一个READ另起一行读。

写  WRITE(5,*)A,B,C,D,E

   每一个WRITE另起一行写。

  读空行(隔一行读)READ(5,*);

写字符行(隔一行写)WRITE(5,*)’34567890’

TT绘图软件介绍

作业:

1求1到200之间的素数。

2LS耦合中原子的总磁矩:

原子的总角动量:

朗德因子:

g

   

L,S从键盘输入,

打印L,S,J,g,

20.51.5

20.52.5

注意:

大数、小数相乘除溢出。

作业3在平地A,B,C点上分别有野狗、野牛、小野牛。

野狗以速度V1扑向小野牛、小野牛以速度V2逃向大野牛、大野牛以速度V3估计野狗。

画出这三个动物的轨迹。

DO100I=2,200,1

DO200J=2,I-1

IF(MOD(I,J).EQ.0)GOTO100

200CONTINUE

WRITE(*,*)I

100CONTINUE

STOP

END

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

当前位置:首页 > 职业教育 > 职高对口

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1