第一次听到Fortran是在多年以前,记得那时候一听到编程就头大,虽然还是个理工男!其实,最近苦学Fortran的原因无非是因为某位教授想把我带入他的(学术)世界,他还苦口婆心的几次强调Fortran在计算能力及效率方面比MATLAB的优势——MATLAB做运算总是会拖着一堆东西,对于大计算量的问题就显得效率低下。看到他如此的诚意,那么我只好就硬着头皮学进去了。他的原话是这么说的(还挺幽默):I want to bring you into my world - a dark and ugly world。可不是嘛,想到编程,确实是有些ugly和dark吧。

或许是大学时候学习C语言之类勉强得个80多分,稀里糊涂考过了C语言二级的阴影仍然在的缘故吧。事实上,当你真正面对Fortran,必须用它的时候,很快你就发现,Fortran,其实也没那么难!这里给各位分享一下入门Fortran的一些方面。不妥之处,请指正!干货之处,请收好^_^

Fortran是啥?简单说就是一种编程语言。

懒得自己定义,因为根本不会下定义呀!那么就引用一下度娘的话:“Fortran源自于“公式翻译”(英语:FormulaTranslation)的缩写,是一种编程语言。它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。Fortran 90之前的版本是人们所知晓的FORTRAN(全部字母大写),从Fortran 90以及以后的版本都写成Fortran(仅有第一个字母大写)。”

Fortran该怎么用?

首先,需要安装相关软件

1. 安装Visual Studio 2008:装好之后,在文件夹Microsoft Visual Studio 9.0内显示相关内容。

2. 安装Intel (R) Visual Fortran Compiler Professional Edition Version 11.1.051:装好之后,在文件夹PSPad editor内显示相关内容。安装这个版本的原因是运行Fortran的时候会更加快(最多同时可以运行4个Fortran窗口),比免费的版本会更快(听同事说,选我们课的学生用的是免费版本)。

3. 安装好后,在桌面打开快捷方式—— PSPAD+Fortran - Shortcut。这个快捷方式所在的文件夹为PSPad editor。

这里可以直观感受一下PSPAD+Fortran打开后的界面。

一个例子帮助你快速入门

假如现在咱们想让Fortran算一算下面这个简单关系,并绘制u(t)和t的关系图:

我们大概应该写下这样的代码(参见:图:u(t)代码例子):

图:u(t)代码例子

在此,逐条说明一下代码的用意:

program为Fortran代码的开头;end为结束。需要注意的是program前空了6格,这是必须的代码格式。因为Fortran代码的层次也是靠这样的方式来实现的。

c开头的行是不运行的,通常被用作空一行之用。另外,也可以作为代码的注释之用。有注释作用的还有在英文输入状态下的感叹号(!)。

implicit real*8 (a-h, o-z)用于定义数的位数及类型。此句写上可以免去对各个变量的逐个定义类型。当然,向量和矩阵之类还是需要重新定义。

Fortran内的循环是通过do来实现的:do 100 t =1,100表示对t从1到100做100次循环。需要注意的是第一个100只是这个循环的名称或者标号,咱们可以用任何正整数。

Fortran数据的输出是通过print*, 来实现的:这里print*, u(t)表示的是在输出窗口中输出每个t值对应的u(t)值(参见:图:u(t)在窗口中显示)。

Fortran数据的保存是通过write来实现的,要结合文件的打开和关闭命令:这里open(1, file='uoft.txt')定义了一个用于存放结果的文件,然后,通过write把t和u(t)存入这里。程序运行结束后会在相应文件夹内看到文件名为uoft.txt的文件。

Fortran数据结果的绘制:这是个不方便之处。需要借助Origin和MATLAB之类来实现。毕竟Fortran只是个编程语言,当然也有一些人开发了一些小的插件。还没用过,因为总感觉手生,更喜欢MATLAB绘图。。。

图:u(t)在窗口中显示

方式2:通过以下二维码给小编打赏2.99-9.99元。

往期回顾

有个小名【又土又木&医言医行】,由又土又木、又学土木的大男孩欣和伶俐乖巧、学医多年的小女生榕发起,为热爱科研、热爱生活的朋友分享。

科研是一场美丽的冒险,愿陪你在科研路上走一走。一起找到科研的诗和远方。一起记录美好的现在和未来。^_^

本公众号仅为热爱科研、热爱生活的朋友分享、提供信息参考,对文中观点保持中立。