科学计算与计算思维文字资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四节科学计算与计算思维
一、科学计算scientific calculation
1、定义
科学计算即是数值计算,科学计算是指应用计算机处理科学研究和工程技术中所遇到的数学计算。
在现代科学和工程技术中,经常会遇到大量复杂的数学计算问题,这些问题用一般的计算工具来解决非常困难,而用计算机来处理或许会变得更加容易。
自然科学规律通常用各种类型的数学方程式来表达出来,科学计算的目的就是寻找这些方程式的数值解。
这种计算涉及庞大的运算量,简单的计算工具难以胜任。
在计算机出现之前,科学研究和工程设计主要依靠实验或试验提供数据,计算仅处于辅助地位。
计算机的迅速发展,使越来越多的复杂计算成为可能。
利用计算机进行科学计算带来了巨大的经济效益,同时也使科学技术本身发生了根本变化:传统的科学技术只包括理论和试验两个组成部分,使用计算机后,计算已成为同等重要的第三个组成部分。
用于科学计算的计算机其特点是高速度、大存储量、高自动化和高精度。
2、计算过程
主要包括建立数学模型、建立求解的计算方法和计算机实现三个阶段。
1)建立数学模型
建立数学模型就是依据有关科学理论对所研究的对象确定一系列数量关系,即一套数学公式或方程式。
在被研究对象的各种属性之间建立方程及各种相等、不等关系。
数学模型可能包括:微分方程、积分方程、差分方程、迭代方程等等。
2)建立求解的计算方法
离散型的数学模型可以直接在计算机上进行计算。
对于包含连续型的数学模型,通常不能直接在计算机上处理,需要把问题转化为有限个未知数的离散形式。
这个时候就要对这种离散过程的合理性进行理论论证,在这个过程中发展出来的就是求解理论和方法。
例如:数学模型的解的存在性、唯一性、连续性等等关于解的理论特性。
这些特性非常重要。
例如:只有在知道解的存在性时,我们才能保证计算机能计算出一个结果。
如果我们知道解的唯一性,那么我们就可以保证最后计算出来的结果是我们想要的,而不是众多满足模型的解中的一个。
如果我们知道了连续性,就可以控制模型的精度。
3)计算机实现
计算机实现包括编制程序、调试、运算和分析结果等一系列步骤。
传统的程序设计语言包括:FORTRAN(其主要用途是科学计算)、C/C++, JAVA等。
随着计算机技术的发展,python等脚本语言也逐渐进入我们的视野。
python强大的社区为科学计算提供了一个理想的选择。
同时,其强大的拓展能力,也使工作效率和可靠性大为提高。
3、科学计算流程
科学计算指的是利用计算机再现、预测和发现客观世界运动规律和演化特性的全过程,包括建立数学模型,研究计算方法,设计并行算法,研制应用程序,利用计算机进行计算和分析计算结果等过程。
要做科学计算,首先要有研究对象,要针对其主要特征,建立数学模型。
所谓数学模型就是描述研究对象的一组方程以及约束方程组的初边值条件,还有相应的参数。
有了数学模型,还需要采用与数学模型相适应的计算方法与算法,研制应用程序。
应用程序在计算机上进行运行,也就是利用计算机进行计算、求解方程组,获得方程组在特定约束条件下的解。
与解析理论得到的方程或方程组的解不同,计算机求得的解不是一个表达式或一组表达式,而是一个数据集———海量数据集。
有了数据,还需要进一步对数据进行分析和评估,判断结果的正确性,发现新的现象,总结新的规律,再现和预测研究对象的运动规律和演化特性,进而进行真实实验或产品的理论设计,产生新的知识、新的成果、新的生产力。
科学计算的本质是求真。
在科学计算的流程中,应用程序研制之前的工作主要依靠研究人员,是“人脑”的事情;研制应用程序并在计算机上运行应用程序进行计算,则是“人脑”加“电脑”的事情。
高性能的计算机系统和数据分析处理软件是做好科学计算的必要条件,是科学计算的重要组成部分。
特别要强调的一点是, 对于科学计算来说, 电脑是不可或缺的, 但是只有充分发挥了人脑的作用, 才能最大限度地发挥电脑的作用, 才能做好科学计算,达到科学计算的根本目的.从流程图1 的分析, 我们还可以看到, 科学计算需要物理、数学与计算机等方面人才的合作,需要多学科交叉融合.只有物理建模、计算方法、并行算法、程序研制和高性能计算机等方面有机结合,物理、数学与计算机等学科的人员真正融合, 才能做好科学计算。
4、科学计算的特点
传统的理论研究是以解析分析的方法为主,它在科学原理与体系的建立过程中发挥了重要的作用,并可以解决相对简单的问题,例如线性问题、平衡问题。
但是, 随着问题复杂性的增加,理论研究的局限性也越来越明显。
很多问题,如强非线性问题、非平衡问题、实际应用中发生的问题等,传统的理论研究已经无能为力。
与理论研究相比,科学计算不仅能够处理线性问题、平衡问题,更重要的是能够处理强非线性问题、非平衡问题等,能够把科学的原理应用于解决更多、更复杂的实际问题。
科学计算经常也被称为计算机虚拟实验。
与实验研究相比,科学计算至少具有以下特点。
●无损伤。
也就是说,科学计算不会对环境等产生大的影响。
这一优点使得科学计算能够承担真实实验不能完成的事,例如要研究海啸的破坏、地震的破坏、核爆炸的破坏,人类不可能进行真实实验,但可以进行科学计算,进行计算机虚拟实验。
●全过程、全时空诊断。
真实的实验,无论用多少种方法、多少种仪器,获得的系统演化的信息是非常有限的,难以做到全过程、全时空诊断,而全过程、全时空的信息对于人们认识、理解与控制研究对象极为关键。
与真实实验不同,科学计算完全可以做到全过程、全时空诊断,只要在应用程序中加入相关的输出设置,在进行科学计算时,研究人员就可以根据需要获得任何一个时刻、任何一个地点研究对象发展和演化的全部信息,使得研究人员可以充分了解和细致认识研究对象的发展与演化
●低成本、短周期
科学计算可以用相对低成本的方式,短周期地反复细致地进行,获得各种条件下研究对象的全面、系统的信息。
5、拓展:计算科学
1)计算科学的含义
计算科学是对描述和变换信息的算法过程,包括其理论、分析、设计、效率分析、实现和应用的系统研究。
从计算视觉来看,计算科学是一种与数学模型构建、定量分析方法以及利用计算机来分析和解决科学问题的研究领域。
从计算机视觉来看,计算科学是一种应用高性能计算能力预测和了解实际世界物质运动或复杂现象演化规律的科学。
它包括数值模拟、工程仿真高效计算机系统和应用软件等。
2)计算科学的基本问题
计算科学的最基本问题是:什么能有效地自动进行,什么不能有效地自动进行。
本学科来源于对数理逻辑、计算模型、算法理论、自动计算机器的研究,形成于1930年代后期。
现在,计算已成为继理论、实验之后的第三种科学形态。
基本问题主要有三个:
a. 计算的平台与环境问题。
b. 计算过程的能行操作与效率问题。
c. 计算的正确性问题。
二、计算思维
1、计算思维概述
1)计算思维定义
2006年3月,美国卡内基·梅隆大学计算机科学系主任周以真(Jeannette M. Wing)教授在美国计算机权威期刊《Communications of the ACM》杂志上给出并定义的计算思维(Computational Thinking)。
周教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。
以上是关于计算思维的一个总定义,周教授为了让人们更易于理解,又将它更进一步地定义为:通过约简、嵌入、转化和仿真等方法,把一个看来困难的问题重新阐释成一个我们知道问题怎样解决的方法;是一种递归思维,是一种并行处理,是一种把代码译成数据又能把数据译成代码,是一种多维分析推广的类型检查方法;是一种采用抽象和分解来控制庞杂的任务或进行巨大复杂系统设计的方法,是基于关注分离的方法(SoC方法);是一种选择合适的方式去陈述一个问题,或对一个问题的相关方面建模使其易于处理的思维方法;是按照预防、保护及通过冗余、容错、纠错的方式,并从最坏情况进行系统恢复的一种思维方法;是利用启发式推理寻求解答,也即在不确定情况下的规划、学习和调度的思维方法;是
利用海量数据来加快计算,在时间和空间之间,在处理能力和存储容量之间进行折衷的思维方法。
●求解问题中的计算思维
利用计算手段求解问题的过程是:首先要把实际的运用问题转换为数学问题,其次将它们离散为一组代数方程组,然后建立模型、设计算法和编程实现,最后在实际的计算机中运行并求解。
前两步是计算思维中的抽象,后两步是计算思维中的自动化。
而抽象和自动化恰好是计算思维的本质。
●设计系统中的计算思维
任何自然系统和社会系统都可视为一个动态演化系统,演化伴随着物质、能量和信息的交换,这种交换可以映射为符号变换,使之能用计算机进行离散的符号处理。
当动态演化系统抽象为离散符号系统后,就可以采用形式化的规范描述,建立模型、设计算法和开发软件来揭示演化的规律,实时控制系统的演化并自动执行。
●理解人类行为中的计算思维
计算思维是基于可计算的手段,以定量化的方式进行的思维过程。
计算思维就是应对信息时代新的社会动力学和人类动力学所要求的思维。
在人类的物理世界、精神世界和人工世界等三个世界中,计算思维是建设人工世界需要的主要思维方式。
利用计算手段来计算人类的行为,可视为社会计算,即通过各种信息技术手段,设计、实施和评估人与环境之间的交互。
2)计算思维的本质特征
抽象和自动化是计算思维的本质。
计算思维具有以下特性:
●概念化,不是程序化。
计算思维远远不只是为计算机编程,它要求人们尽可能学会与计算机科学家那样去思维,是抽象的多个层次上的思维,与“读听写算”能力一样,是人类的基本思维方式。
●根本的,不是刻板的技能。
根本技能是每一个人为了在现代社会中发挥职能所必须掌握的。
刻板技能意味着机械的重复。
人在实际的学习、工作和生活中都会碰到这样那样的问题,这时,人会很自然地想办法去克服这些困难。
分析、折分、求解问题,并运用所有资源去解决问题,这始终都有着计算思维的影子。
这也从一个侧面反映出,计算思维是人类的一个根本技能。
具有讽刺意味的是,当计算机像人类一样思考之后,思维可就真的变成机械的了。
●是人的,不是计算机的思维方式。
计算思维是人类求解问题的一条途径,但决非要使人类像计算机那样地思考。
计算机枯燥且沉闷,人类聪颖且富有想象力,是人类赋予计算机激情。
配置了计算设备,我们就能用自己的智慧去解决那些在计算时代之前不敢尝试的问题,实现“只有想不到,没有做不到”的境界。
●数学和工程思维的互补与融合。
计算机科学在本质上源自数学思维,因为像所有的科学一样,其形式化基础建筑于数学之上。
计算机科学又从本质上源自工程思维,因为我们建造的是能够与实际世界互动的系统,基本计算设备的限制迫使计算机学家必须计算性地思考,不能只是数学性地思考。
构建虚拟世界的自由使我们能够设计超越物理世界的各种系统。
是思想,不是人造物。
不只是我们生产的软件硬件等人造物将以物理形式到处呈现并时时刻刻触及我们的生活,更重要的是还将有我们用以接近和求解问题、管理日常生活、与他人交流和互动的计算概念;而且,面向所有的人,所有地方。
当计算思维真正融入人类活动的整体,不再表现为一种显式之哲学的时候,计算思维就将成为一种现实。
2、计算思维能力及培养
1)计算思维能力的定义
定义:面对一个新问题,运用所有资源将其解决的能力。
计算思维能力的核心是问题求解的能力。
这种能力在发现问题、寻求解决问题的思路、分析比较不同的方案、验证方案的过程中得以应证。
2)计算思维能力的培养。
a) 深入了解计算机解决问题的思路,更好地用好计算机。
b) 把计算机处理问题的方法用于各个领域,推动在各个领域中运用计算思维,
更好地与信息技术相结合。
c) 利用项目驱动或任务驱动教学模式,培养问题求解的抽象思维习惯和能力。
3、计算思维小结
人类通过思考自身的计算方式,研究是否能由外部机器模拟,代替我们实现计算的过程,从而诞生了计算工具,并且在不断的科技进步和发展中发明了现代电子计算机。
在此思想的指引下,还产生了人工智能,用外部机器模仿和实现我们人类的智能活动。
随着计算机的日益“强大”,它在很多应用领域中所表现出的智能也日益突出,成为人脑的延伸。
与此同时,人类所制造出的计算机在不断强大和普及的过程中,反过来对人类的学习、工作和生活都产生了深远的影响,同时也大大增强了人类的思维能力和认识能力,这一点对于身处当下的人类而言都深有体会。
早在1972年,图灵奖得主Edsger Dii.kstra就曾说:“我们所使用的工具影响着我们的思维方式和思维习惯,从而也深刻地影响着我们的思维能力”,这就是著名的“工具影响思维”的论点。
计算思维就是相关学者在审视计算机科学所蕴含的思想和方法时被挖掘出来的,成为与理论思维、实验思维并肩的3种科学思维之一。
计算思维是计算时代的产物,应当成为这个时代中每个人都具备的一种基本能力。
由此可见,在认识和应用计算机这样一种工具的同时,自然而然地要触碰计算思维的基本思想,尽可能多地了解计算思维的相关概念和内涵,以便在后续的学习中主动而有意识地加强计算思维能力的培养。
计算思维表现出强大的创新能力,正符合当今创新时代的社会要求。
培养学生的计算思维能力,使其掌握在计算环境下的问题求解方法,这正是今后学生应用计算机技术创造性地解决专业问题的重要基础。
正是鉴于此,2013年5月,教育部高等学校计算机课程教学指导委员会发表了旨在大力推进以计算思维为切入点的计算机教学改革宣言,明确指出应把计算思维看成是一种本质的、所有学生都必须具备的思维方式。
计算机基础教育应着力于计算思维能力的培养已成为广大计算机教育专家的共识。
计算手段已发展为与理论手段和实验手段并存的科学研究的第三种手段,计算思维已成为各专业学生都应掌握的思维方式。
美国人已经提出,在2050年以前,要让地球上每一个公民都具备“计算思维”能力,要扫“计算机盲”。
因此,应该把计算思维看成是一种本质的、所有人都必须具备的思维方式,激发人们对计算机领域科学探索的兴趣,使计算思维成为一种常识。