没有合适的资源?快使用搜索试试~ 我知道了~
Fortran95学习教程
需积分: 36 45 下载量 144 浏览量
2018-01-09
13:23:44
上传
评论 2
收藏 1.57MB PDF 举报
温馨提示
试读
359页
Fortran95学习教程 第1章 目的是计算 我们这本书描述了一门语言。不幸的是语言很难成为我们的爱好,更何况FORTRAN 语言也无法仿效英语,能够被某些英语大师成功地转换为一种疯狂。因此几乎每一个学习过编程语言的人都会有一种痛苦地记忆,那就是一种极端缺乏趣味的痛苦,因为很容易我们就会忘记这种语言的用处。显然,如果一种工具连用处都不是那么明显的话,哪里还谈得上给人带来乐趣呢? 所以要想在 FORTRAN 语言的学习过程当中不至于总是遭遇无聊,唯一的解救之途就是一开始就要找到学习它的绝对充足的理由, 并且在学习过程中还会不得不反复地依靠这个理由,来说服自己需要更加有耐心,更加能够忍受烦琐和约定, …逐渐地,也许我们能够从FORTRAN 语言的惊人表达能力当中,体会到一种新的看待世界的角度,这大概会是我们享受那么多的枯燥之后,所能够得到的最佳回报。 所以我们不得不在进入正题之前,扯点闲话,看看学习 FORTRAN 的理由何在。
资源推荐
资源详情
资源评论
1
第一篇 闲话
中国数学的经典著作大都以依据不同方法或不同类型分成
章节的问题集的形式出现。每一个别问题又都分成若干个
条目:条目一是“问”,提出有具体数值的问题;条目二
是“答”,给出这一问题的具体数值答案;条目三称为“术”,
一般说来乃是解答与条目一同种类型问题的普遍方法,实
际上就相当于现在计算机科学中的“算法”,但有时也相
当于一个公式或一个定理;条目四是“注”,说明“术”
的依据与理由,实质上相当于一种证明;宋元以来,可能
是由于印刷术的发达,往往加上条目五“草”,记述依据
“术”得出答案的详细计算过程。…
早在《九章算术》中,第八章方程章全章就是线性联立方
程组的解法。依刘微注:“并列为行,故谓之方程。”又
说:“令每行为率,二物者再程,三物者三程,皆如物数
程之。”当时以筹作算,依题意将数据按物数排成各行,
然后进行运算。…中学教科书解线性方程组的消元法,最
早即见之于《九章算术》。…
数学在中国古时历来称为算术。这正好反映了中国古算构
造性、计算性与机械化的特色。数学不仅为了应用,即使
为了在纯数学范畴内获得具体结果,也一不能无算,二必
须有术。…中国古代算术的思想与方法,正好与近代计算
机的使用融合无间,也必将因此而重返青春,以另一种崭
新面貌在未来的数学发展中扮演重要角色。
----吴文俊
[1]
《对中国传统数学的再认识》
[1]
吴文俊,中科院院士,我国最卓越的现代数学家之一,在拓扑学等领域取得世界性成就,近年积极
推动数学机械化领域的发展。
2
第1章 目的是计算
我们这本书描述了一门语言。不幸的是语言很难成为我们的爱好,更何况 FORTRAN
语言也无法仿效英语,能够被某些英语大师成功地转换为一种疯狂。因此几乎每一个学习过
编程语言的人都会有一种痛苦地记忆,那就是一种极端缺乏趣味的痛苦,因为很容易我们就
会忘记这种语言的用处。显然,如果一种工具连用处都不是那么明显的话,哪里还谈得上给
人带来乐趣呢?
所以要想在 FORTRAN 语言的学习过程当中不至于总是遭遇无聊,唯一的解救之途就
是一开始就要找到学习它的绝对充足的理由,并且在学习过程中还会不得不反复地依靠这个
理由,来说服自己需要更加有耐心,更加能够忍受烦琐和约定,…逐渐地,也许我们能够从
FORTRAN 语言的惊人表达能力当中,体会到一种新的看待世界的角度,这大概会是我们享
受那么多的枯燥之后,所能够得到的最佳回报。
所以我们不得不在进入正题之前,扯点闲话,看看学习 FORTRAN 的理由何在。
1.1 始于计算,终于计算
在荒莽的历史尽头,我们常常听说人类之所以能够凭借虚弱的身躯,一次又一次地打退
其他凶猛动物的猖狂进攻,而终于成就为今日当之无愧的“万兽之王”,这个原因有很多种
解释,比如说是劳动,说是手,说是大脑,莫衷一是,各有各的理论和证据,确实是个很难
取得定论的问题,因此我想提出一种新的解释,大概是不会遭到立刻的覆灭性打击。
人类的进化始于计算,我相信。
在有关非洲黑猩猩的纪录片里面,可以看到黑猩猩也会用手使用工具,一个黑猩猩家庭
为了生活也勤于劳动,一个黑猩猩群落社会里面的形形色色的政治行为,显示它们的大脑也
不是很闲,但有一次我看到黑猩猩们抢香蕉时,总是把自己已经抢到手的香蕉给弄丢了而无
知觉,突然觉得它们最缺乏的也许是算数的能力。
所以我想,人类的起源一定跟计算有莫大的关系。
当然这些都是戏说而已,不过如果说人类的科学是从计算开始的,应该是不会有太大的
争议的。
也许有人说人类的科学活动应该是起源于观察,但从动物行为学的角度来看,观察这种
行为是很难界定的,而计算则是非常好界定的行为,因为最原始的计算行为显然应该就是数
数。
可以想像,当人类开始意识到自我在这个世界的孤独存在时,对于日月星辰和风雨雷电
的无常和力量该是多么地恐惧啊!而人类把自己从这种恐惧当中解救出来的第一个方法应该
就是算数。
算数导致了人类最早的科学活动,即天文学和几何学。人们从对日月星辰的计数当中发
现了天体的运行是有常的,而不是什么不可琢磨的妖魔鬼怪在主宰;从对土地与山河的度量
中建立了明确的几何概念,从而对自己所生活的世界开始了真正的理解。而这种理解活动一
旦开始,就无法停止了,演变至今,就构成了我们人类最值得自豪的成就-科学。
3
科学的历史表明了它的基础,就是计算。
如果我们只是一味地观察,我们会纪录下来大量的经验,然而却无法理解这些经验的含
义,更进一步,对于经验有了总结归纳之后,哪怕是进行计算的确切程度不同,也会导致不
同的对于自然的理解。
一个很著名的例子,就是太阳系行星的运动的问题。
对于古人来说,所谓行星的意思就是那些星星是相对于恒星在明显地运动,在漫天的相
互位置不变的恒星的对比之下,很少的这种匆匆行者是非常引人注目的。于是很早开始人们
就纪录这些行星的运行轨道。在古希腊时代,最有名的关于这些行星运动的研究是托勒密完
成的,他对有关行星的纪录数据进行了计算,得到了一个极其“圆满”的行星运动模型,即
以地球为宇宙中心,行星围绕地球做严格圆周运动。现在看来,他的观测数据肯定不会是很
精确,而他的计算也不会很准确,一直到开普勒,在获得了非常精确的行星轨道运行的数据
的基础上,进行了大量的计算,最终得到了革命性的开普勒三定律。
接下来牛顿出场了,他更是一个计算天才,正是通过计算,从开普勒三定律获得了他
的最伟大的发现,万有引力定律。
然后还是通过计算,我们现在可以运用牛顿万有引力公式的计算而把脚印留到月球的寂
寞沙尘上。
还有一个非常独特的例子,就是中国的古代科学和技术,更是强烈地依赖计算。
相比于古希腊,中国的古代数学几乎完全是以计算为中心的,翻开中国的古代数学书,
一个鲜明的特点就是几乎完全是针对问题的数学计算方面的内容,而很少有古希腊传统的公
理,定理与证明。
实际上,古代中国在技术上一直领先于世界,很难说跟这种重视计算的风格没有关系。
其中最有名的例子就是祖冲之关于圆周率的计算,而我们现在都很清楚,祖冲之的计算不仅
是为圆周率提供了一个远比西方要精确的具体数值,更重要的是提供了一种非常通用的计算
方法,即一种近似积分计算,而这种计算方法对于古代中国的技术进步的重要作用,正是一
个表明计算的重要性的典范。
如果说计算在科学的早期发展中扮演了关键的作用,那么我们还是可以说计算仍然在现
代科学技术扮演着关键的角色。
固然现代的科学技术领域广阔而渊深,然而哪里没有计算的身影呢?甚至在某些科学哲
学家的看法里面,能否进行计算是衡量一个理论是否已经成为科学的一个部门的标准。也许
这种说法不免偏激,但是计算对于科学与技术的意义,确实是一个深刻的问题。
我们不妨考察一下物理学里面计算所占据的地位,也许有助于更深地理解这个问题。
几乎是一直到十九世纪,物理学还是以实验为主要内容,进入二十世纪之后,一场物理
学革命飞快地竖立了理论物理学的丰碑,足以与传统的实验物理学分庭抗礼。而这种局面在
二战时期就开始改变,二战后在实验物理与理论物理之外,计算物理鼎足而立,导致这种变
局的最关键的因素就是电子计算机的发明。
在计算机没有发明之前,人们不得不采取各种方式来回避过于庞大的计算问题,而大量
的关键问题,又非得进行庞大的计算不可,以物理学为例,一旦我们透彻地解决了线性问题
之后,接踵而来的就是远比线性现象更为广泛的非线性现象,对于非线性问题,我们已经掌
握的解析方法极其贫乏,这就逼迫我们走上直接计算之路。
而除了非线性问题之外,物理学乃至整个自然科学看待世界的方式都是原子式的,即我
们总是可以把一个现象理解为它的组成成分的相互作用的结果,于是我们就有了分子,原子
等基本的科学观念,这种做法一直都是充满胜利的,然而这种胜利也是伴随着沉重代价的,
4
即当我们重新面对复杂现象时,不得不从它的组成成分开始考虑,这就是统计物理学的基本
思想,显然这种做法给我们带来了繁重的计算任务,因为迄今为止,我们人类对于一个包含
超过了 3 个的,具有相互作用的成员的系统的精确解析求解,已经是有点一筹莫展了,更何
况常见的那些动辄包含了成千上万成员的系统呢?因此在很大一部分情况下,我们唯一的选
择,就是直接的计算。
因此我们可以说,计算确实是科学的基石之一。
至于我们所生活的这个几乎完全由科学技术所塑造的世界,哪里没有计算的身影呢?
如果说计算帮助我们理解了自然,进一步我们还可以说计算创造了我们的生活。
任何一个科学上的对于自然的新的理解,要转变为为人所用的技术时,基本的途径就
是计算。道理很显然,当我们要制造一种自然界从未出现过的物品时,我们需要的是具体的
制造数据,而不能只是一堆公式,那么数据从哪里来呢?当然只能从对公式的计算得来。因
此我们可以把计算理解为理论的实现途径。即理论无论是要反映真实世界,还是要体现到我
们的实际物品上,它都需要通过一条叫计算的路,理论武装了我们的大脑,而计算则创造了
我们的世界。
所以我们可以说,人类的历史,最早是始于计算,而这个历史的实现的最前沿,则仍
然是终于计算。
1.2 描述计算的语言
长久以来,人类的计算都是依靠自己来完成的,但如果仔细考虑一下,就会发现计算的
实质是把一个经过清楚的分析,明确了求解的方法的问题,分解为明确,可行,而有限的步
骤,显然这种工作本质上是机械性的,如果把已经得到求解方法的问题还交给人脑来计算,
显然有浪费人力之嫌;从另外一个方面来讲,往往一个需要专门加以计算的问题,也是一个
需要进行庞大的计算的问题,庞大到人力已经难以胜任的程度。
因此这两个方面都要求人类发明能够进行计算的机器,这就直接导致了计算机的发明。
今天当我们面临需要计算的问题时,对付问题的就不再只是一个大脑,而是一个大脑
加上一台机器。所以接下来的问题就是如何让大脑与计算机协同工作,使得大脑能够专门用
来寻求问题的算法,而计算机能够被用来计算解。
这种协同工作的第一个要求就是人需要能够把自己对于问题的计算过程的理解表示为
机器的机械运动。首先人对于问题及其求解的理解是可以非常清晰地依靠数学语言来加以描
述说明的。然后我们再看机器那一端。
所谓计算机就是能够自动执行一系列机器动作的机器,对于那些机器动作,我们可以
把它们和基本的计算操作对应起来,这就使得有可能把计算问题的能行的计算步骤分解为有
限的机器操作,这里剩下的问题就是一方面是我们熟知的描述问题求解的数学语言,另一方
面就是描述机器操作的语言,这两个方面的语言如何对应的问题。
下面我们讨论一个非常简单的例子,用来说明这里面的语言翻译问题。
一个一元二次方程的求解是一个很简单的数学问题。设方程的形式为:
2
0, 0ax bx c a++= ≠
那么方程的解的一般公式为:
5
2
1
4
2
bb ac
x
a
−+ −
=
2
2
4
2
bb ac
x
a
−− −
=
注意我们现在的目的是计算,而不是求解析解,因此得到这个公式不是问题的结束,而
是问题的开始,即运用这个公式,在 a,b,c 都有具体取值的情况下,求出具体的数值解。
因为如果该方程描述的是一个抛体运动,那么我们需要知道的当然是解的数值,以便我们了
解和控制该抛体运动。
所以我们还需要进一步把这个数学表述转述为一个具体的求值过程的描述如下:
(1) 获得 a,b,c 的具体取值;
(2) 根据 a,b,c 的具体取值计算
2
4bac−
的值;
(3) 如果
2
4bac−
大于 0,那么分别计算上面的两个公式的数值,得到两个不同的实数
根;
(4) 如果
2
4bac−
=0,那么计算公式
2
b
x
a
−
=
,得到的 x 的值就是方程的两个相同的根;
(5) 如果
2
4bac−
小于 0,那么分别计算上面的两个公式的数值,得到两个不同的复数
根。
这样得到的上面的 5 个计算步骤描述,才是希望计算机所执行的计算过程的一个大概描
述。当然这个描述是基于我们已经获得的对于一元二次方程的求解问题的数学上的彻底了
解。
那么描述计算机的操作的语言是什么样的形式呢?
我们知道所谓计算机的工作在本质上是运行一些基本的机械电子操作,固然我们可以把
那些操作根据运算法则而定义为相应的运算,例如一个开关电路的信号叠加,可以适当地定
义为二进制数值的加法,但显然不可能期望依靠这种物理现象能够直接地表达更加复杂的计
算,例如上面公式里面的开平方。幸好我们依靠数学,可以做到把任何复杂的计算分解或近
似分解为极少数简单计算的叠加与组合。因此最终我们已经至少在理论上可以期望使用计算
机来完成那些具有明确求解过程的计算任务。
然而问题是当我们需要向计算机提交一个数值计算任务时,如果总是要求我们首先把计
算任务的描述按照计算机所能够理解和执行的程度来进行的话,无疑会使得向计算机提交计
算任务成为一件极其麻烦的事情,本来我们利用计算机的目的是为了减轻自己的机械劳动工
作量,如果向计算机提交问题是如此麻烦的话,显然不符合我们发明计算机的初衷。
因此进入二十世纪五十年代后,提出了计算机高级语言的概念,所谓高级语言,就是非
常接近我们平常对于数学问题的描述的语言,而所谓给出计算机高级语言,实质上并不是说
计算机能够直接理解高级语言了,而是把高级语言到计算机内部的机器语言的翻译工作本身
交给计算机来完成,因为这种翻译工作在规范了高级语言之后,是计算机自身就完全可以做
到的,当然这个翻译任务本身又是一个需要我们首先明确给出一般解答的计算问题。
剩余358页未读,继续阅读
资源评论
wuhaha07
- 粉丝: 0
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功