570 likes | 817 Views
科学计算软件. 华南师范大学数学科学学院. 科学计算软件. 广义的计算 数值计算 :如消元法求解线形方程组,通常不能精确求解,有舍入误差 符号计算 :如求一个函数的导函数,用符号表示,精确推导 非数值计算 :排序、查找等数据结构中的算法 科学计算可视化 :将计算过程中产生的数据及计算结果转换为图形图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。. 课程目的. 大家选这门课的目的? 了解 数学软件的 作用 学习 使用软件的 方法 辅助 基础数学课程的 学习 , 激发兴趣 使用数学软件解决实际生活和工作中遇到的数学问题. 数学软件及其分类. 数学软件
E N D
科学计算软件 华南师范大学数学科学学院
科学计算软件 • 广义的计算 • 数值计算:如消元法求解线形方程组,通常不能精确求解,有舍入误差 • 符号计算:如求一个函数的导函数,用符号表示,精确推导 • 非数值计算:排序、查找等数据结构中的算法 • 科学计算可视化:将计算过程中产生的数据及计算结果转换为图形图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。
课程目的 • 大家选这门课的目的? • 了解数学软件的作用 • 学习使用软件的方法 • 辅助基础数学课程的学习,激发兴趣 • 使用数学软件解决实际生活和工作中遇到的数学问题
数学软件及其分类 • 数学软件 • 看看计算机上都有哪些数学软件 • 数学软件分类 • 通用数学软件包 • 专业数学软件包
通用数学软件 • 通用数学软件:功能完备,包括各种数学、数值计算、丰富的数学函数、特殊函数、绘图函数、用户图形界面交互功能,与其他软件和语言的接口及庞大的外挂函数库机制(工具箱toolbox)。 • 常见通用数学软件包有Matlab、Mathematica和Maple • 其中Matlab以数值计算见长,Mathematica和Maple以符号运算、公式推导见长。
专用数学软件包 • (1)绘图类软件 • MathCAD,Tecplot,Surfer,Origin, SmartDraw • (2)数值计算类软件(优化计算、数值代数) • Lindo,Lingo,Octave, Linpack • (3)有限元计算类(求解偏微分方程) • ANSYS, MARC,PARSTRAN, FLUENT, FEMLAB
专用数学软件包 • (4)数理统计类 • GAUSS,SPSS,SAS,Splus,Statistica • (5) 数学公式排版类 • MathType, MiKTeX, Scientific Nootbook
学习数学软件的方法 • 带着问题去学 • 从问题出发 • 解决你的问题 • 软件是相通的 • 标准Windows界面 • 详细的帮助系统 • 由此及彼,举一反三 • 多“折腾” • 连蒙带猜地试探,找门路 • 动手、动眼、动脑
教学方式 • 两条主线 • 课本:Mathematica使用指南,按章节顺序 • 实验:围绕解决实际问题讲述相关语法 • 课本内容的讲述以自己动手练习为主,课堂上给出重要例程,其余要求同学们自己练习 • 实验包括例题和练习,例题中给出基本参考代码,练习任务要求同学们自己修改代码完成
考核方式 • 本课程采用考察方式 • 实验报告以Word或pdf文档的格式提交到课程邮箱: • 帐户:fling_yang@163.com • 邮件主题格式 • 学号后四位_姓名_实验#上机报告 • 如:1001_张三_实验1上机报告 • 请严格按照此格式命名!!否则后果很严重!!
考核方式 • Word文档的名称同邮件主题 • 实验报告模板在学院主页的文档下载中找 • 所有邮件从自己的邮箱中发送,不要采用中转或网盘的形式。 • 不符合邮件主题格式和附件名称格式的作业一律忽略不计!
教材与参考资料 • 教材 • Mathematica使用指南,科学出版社,2002 • 参考 • Mathematica在大学数学课程中的应用,电子工业出版社 • 用Mathematica作微积分实验,清华大学出版社 • Mathematica应用实例教程,机械工业出版社 • 数学实验类书籍
常用数学软件介绍-Mathematica • Mathematica是由美国物理学家Stephen Wolfram领导的WolframResearch开发的数学系统软件,拥有强大的数值计算和符号计算能力。 • 是一个交互式计算系统,在用户和Mathematica互相交换、传递信息数据的过程中完成的。 • 是目前比较流行的符号运算软件之一,它不仅可以完成微积分、线性代数及数学各个分支公式推演中的符号演算,而且可以数值求解非线性方程、优化等问题。
Maple • Maple是加拿大滑铁卢大学和Waterloo Maple Software公司注册的一套为微积分、线性代数和微分方程等高等数学使用的软件包。 • Maple的强项在于符号计算,其符号计算能力还是MathCAD和MATLAB等软件的符号处理的核心。 • Maple适用于解决微积分、解析几何、线性代数、微分方程、计算方法、概率统计等数学分支中的常见计算问题。
MATLAB • MATLAB是英文Matrix Laboratory(矩阵实验室)的缩写 • MATLAB程序主要由主程序和各工具包组成,其主程序含数百个内部核心函数 • 工具包包括系统仿真、信号处理、系统识别、优化、神经网络、控制系统、样条、图像处理、统计等工具包。 • 强项是数值计算,以矩阵为基本数据单位,在应用线性代数、数理统计、自动控制、数字信号处理、动态系统仿真方面已成为首选工具
LINDO/LINGO • LINGO(Linear Interactive and General Optimizer-交互式通用线性优化求解器)是专门用于求解数学规划问题的软件包。 • LINGO执行速度快,易于方便地输入、求解和分析数学规划问题,在教学、科研和工业界得到广泛应用。 • LINGO主要用于求解线性规划、非线性规划、二次规划和整数规划等问题,也可用于一些线性和非线性方程组的求解以及代数方程求根等。
SPSS • SPSS(Statistical Package for the Social Science)—社会科学统计软件包是世界上著名的统计分析软件之一。 • 与SAS(统计分析系统)、BMDP(生物医学程序)并称为国际上最有影响的三大统计软件。 • 社会科学研究中的许多问题要使用统计学和概率论的理论来进行研究,除此以外,SPSS已经应用于经济学、生物学、教育学、心理学、医学以及体育、工业、农业、林业、商业和金融等各个领域。
SAS • SAS(Statistical Analysis System-统计分析系统)是一个模块化、集成化的大型应用软件系统。 • 由数十个专用模块构成,功能包括数据访问、数据储存及管理、应用开发、图形处理、数据分析、报告编制、运筹学方法、计量经济学与预测等等。 • SAS系统主要完成以数据为中心的四大任务:数据访问、数据管理、数据呈现、数据分析。
Mathematica5界面简介 基本输入模板 可自定义,输入数学表达式 工作区 不仅可以显示文字与数学表达式,还可以显示图形、按钮等对象
输入模板的调出 • File菜单中的Palettes用于打开各种模版 • 基本输入模版:BasicCalculatios • 基本计算模版:BasicCalculations
1.1 记号与约定 P1 • Mathematica命令中的符号均为英文符号(半角),使用中文符号会出错! • 反引号:“`”,与波浪线“~”共用一个键 • 内部命令的选项用“->”输入,系统会自动转换为箭头符号“→” • 不等号在键盘上用“!=”输入,或者使用模板
执行命令 P2 • Mathematica的工作区称为笔记本(notebook),在其中可以输入命令和输出结果 • 输入命令后,按Enter键执行 • 直接按小键盘上的Enter键 • 主键盘区的Enter键要配合Shift键才是执行命令,单独按下Enter键只表示回车换行,可输入多条语句一次执行 • notebook中的命令是交互式执行的,可以输入一句,执行一句。
执行命令 P2 • 输入命令在执行后,前面会用In[n]表示第n个输入 • 执行结果前面对应用Out[n]表示第n个输出,可在后面引用
1.2 内核与终端 • 例1 计算2加上3的结果 2+3 • 例2 只执行表达式2*3+5中的乘法部分 • 先选择要执行的部分表达式,然后按Ctrl+Shift +Enter • 若执行过程过长或程序陷入死循环,可使用菜单命令Kernel->Abort Evaluation,或“ALT”+“.” • 在程序执行出错时,改正后可能要重启内核才能得到正确结果,否则会“一错再错”
准确数与近似数 • Mathematica以符号运算为主,与C、Basic等常规编程语言不同,整数、有理数、幂、符号数等是准确数,如 • 近似数用带有小数点的数表示,如:1.2,2.3*10^5. • 对于准确数,可以计算任意位数的有限精度值,例如可以求出Pi的任意位的近似值,或2^100000的值
数学符号的输入 • 使用输入模板 • 分式的输入:分数线可以使用“/”,也可以使用“Ctrl+/”,后者使用手写分数格式
注释 • 包含在" (* "和" *) "间的部分被系统认作注释,不影响计算 • 例3 12+(*these words will be ignored by the kernel *)3
习题解答 • 1.3 无限循环 x=1; While[x>0,x=x+1] • While[循环条件,循环体]:详见教材P46 • 1.5 17.2乘以16.3与4.7的和 17.2*(16.3+4.7) • 1.6计算2x+3,5x+9,4x+2的和 (2x+3)+(5x+9)+(4x+2)
1.3 Mathematica 的怪癖 P4 • 区分大小写 • Integrate与integrate是不同的 • Mathematica的所有命令都以大写字母开头,若一个命令由二个单词组成,则每一个单词的第一个字母都要大写。如:ArcSin • 不同括号的含义不同 • 方括号用来指定函数的参数:sin[x] • 圆括号可改变运算次序:(2+3)*4 • 大括号表示列表:{1,2,3,4}
1.3 Mathematica 的怪癖 • 自然对数的底用大写的E表示 • 虚数单位用大写的I表示 • 多项式按升幂从左到右排列 • 下列例子错在哪里? • 1.7 sqrt[81] • 1.10 [4+1]*[6+2] 第一次使用Mathematica软件,通常会发生很多错误,其中大部分是语法和拼写错误。出错时请大家先对照课本检查!
1.4 Mathematica给出精确解答 P6 • 例4 Sqrt[12] • 例5 1/3+3/5-5/7+2/11 • 例6 Pi+Pi • Pi在Matehmatica中是一个精确值 • 对比:在Matlab中Pi是一个有限精度的值 • 例7 Sqrt[-1]
1.5 Mathematica 基础 P7 • 符号:一串字母、数字和几个特定字符构成的序列,不能以数字开头,不能简单地理解为变量! • 定义符号后,可对其进行修改或清除来改变它的值 • 算术运算符:+,-,*,/,^ • 两个符号之间的乘号可以省略:2a等价于2*a • 用于数字与符号较为自然,注意两个符号间可能会产生歧义 • 建议:为了避免出错,最好养成见乘号的地方都用空格的良好习惯
1.5 Mathematica 基础 • 例8 a=2 b=3 c=a+b • 在命令后加分号“;”则屏蔽输出 • 例9 a=2; b=3; c=a+b • 注意:Mathematica区分半角/全角符号
1.5 Mathematica 基础 P7 • 例11 a=3; • 数学格式可以利用基本输入模板输入,如同在Word中用MathType一样 • 符号可能是某个简单的数值运算结果,也可能是一个复杂的代数表达式
1.5 Mathematica 基础 P8 • 对于已存在的符号,可以先输入一个问号"?"再输入该符号来查询该符号的定义 • 例12 ? a ? b
符号的清除和删除 P8 • Clear[符号名]:清除符号的定义及取值,非删除 • Remove[符号名]:删除指定的符号,系统不再识别该符号 • 例13 Clear[a] ?a Remove[b] ?b
符号的清除和删除 • 默认情况下使用的符号都是全局的,当在后面使用前面定义过的符号时,之前符号的定义可能会导致后面代码的错误,所以一般最好在一段代码的最前边使用 Clear All 清除其中使用的符号。 • 也可以通过重启(退出)内核的方法清除符号的定义,相比之下,大家验证一下关闭notebook窗口会不会清除其中使用的符号的定义。
计算近似值 P8 • Mathematic中默认情形下结果都为精确值,有的时候使用起来并不直观和方便,可用命令N获得近似值 • N[表达式]:给出表达式6位有效数字的近似值 • N[表达式,n]:尽力给出表达式的n位有效数字近似 • 也可用命令“表达式//N”实现 • 推而广之,“表达式//命令”等价于“命令[表达式]”
计算近似值 P8 • 例14 N[Pi] Pi//N N[Pi,100] • Mahtematica在内部计算时采用16位有效数字,但是按标准输出只显示前6位有效数字。 • 要改变默认设置可以使用单元“Cell”菜单中的“默认输出格式”选项
引用前面的计算结果 P8 • 符号%返回前一次计算的结果,%%返回再前一次的计算结果,%n返回前n次的计算结果 • 例 计算 Sqrt[Pi+Sqrt[Pi+Sqrt[Pi]]] Sqrt[Pi]; Sqrt[Pi+%]; Sqrt[Pi+%]
1.6 单元 P11 • 在工作区右侧的蓝色方括号表示每个单元。内核在计算笔记本时时以逐个单元为基础的。 • 具体内容自学。
1.7 寻求帮助 P12 • 软件中的帮助系统是学习软件的一个好工具,对于软件的各种功能,一般均有详细的文字说明和例程 • ?命令:给出关于命令的语法 • ??命令:给出关于命令的更多信息 • 例17 ? Plot ?? Plot
1.7 寻求帮助 P13 • 可以用Options命令得到函数的选项(参数的名称) • 例18 Options[Solve] • 对于较长的命令有时只记得开头的几个字母。此时先输入开头的几个字母,再按Ctrl+K组合键,就会出现一个以这几个字母开头的所有命令的列表,可用键盘或鼠标进行选择 • 例19 Arc Ctrl+K
1.7 寻求帮助 P14 • 使用通配符“*”查找命令: “*”代表任何字符序列 • 例20 • (a)找出所有以‘Inv’开头的命令 ? Inv* • (b)找出所有以‘in’结尾的命令 ? *in • (c)找出所有在中间包含‘our’的命令 ? *our* • 注意*与字符间不要有空格
1.7 寻求帮助 • 受之前定义的符号的影响,后续的计算经常出错 • 相比退出内核,下面的方法可以更方便地清除符号之前的定义 • Clear["`*"]:清除所有全局符号 • Remove["`*"]:删除所有全局符号 • 例22 Remove["`*"] ?`* (*注:“ ?`*”表示列出系统当前的所有全局符号 *)
1.8 软件包 P16 • 执行较为特别的函数和程序时首先要上载包含它们的软件包或具体的函数和程序 • 例23 半径为1的圆的隐式方程为x^2+y^2=1。为了绘制隐式方程所确定的图像,需要使用软件包Graphics中的ImplicitPlot命令。 • 载入该命令: <<Graphics`ImplicitPlot` • 载入整个Graphics软件包 <<Graphics`
1.8 软件包 P16 • 在没有上载相应的软件包就使用该包中的函数时会出现错误 • 例25 ImplicitPlot[x^2+y^2==1,{x,-1,1}]; • 载入该命令: <<Graphics`ImplicitPlot` • 载入后会出现错误,这种情况下要正确使用该函数,需要先从符号表中清除该命令: Remove[ImplicitPlot]
1.8 软件包 • 例23 ImplicitPlot[x^2+y^2==1,{x,-1,1}]; • 上载软件包后可用Names命令查看其函数清单 • 例24 <<Miscellaneous`Calendar` Names["Miscellaneous`Calendar`*"]