1、MATLAB在科学计算中的应用在科学计算中的应用第一章第一章 计算机数学语言概述计算机数学语言概述 1.1 1.1 数学问题计算机求解概述数学问题计算机求解概述 数学问题求解数学问题求解 手工推导(只解决部分问题)手工推导(只解决部分问题)借助计算机借助计算机用数值分析技术,从底层编写起用数值分析技术,从底层编写起 采用成形的数值分析算法、数值软件包采用成形的数值分析算法、数值软件包与手工编程相结合的求解方法。与手工编程相结合的求解方法。用专门计算机语言来求解用专门计算机语言来求解 MATLAB、Mathematica、Maple等等例:求例:求 方程的解方程的解 在在 a,c,d 是给定数值
2、时,数值分析的是给定数值时,数值分析的方式是可用。方式是可用。当不是给定数值时,数值分析的方式当不是给定数值时,数值分析的方式不可用。不可用。必须使用计算机数学语言来求解。必须使用计算机数学语言来求解。3xax c d 例例 矩阵行列式求解问题矩阵行列式求解问题 代数余子式代数余子式 1 个个 n 阶行列式可以表示成阶行列式可以表示成 n 个个 n-1 阶行列式的阶行列式的和,和,可以将高阶矩阵行列式转换成可以将高阶矩阵行列式转换成1阶矩阵行列式阶矩阵行列式 结论:任意矩阵行列式解析解存在结论:任意矩阵行列式解析解存在 问题:忽略了可计算性问题:忽略了可计算性 n=20,银河机,银河机,300
3、0年年n n209.7073 10 例:例:Hilbert 矩阵,矩阵,n=20 传统数值分析结论:矩阵奇异传统数值分析结论:矩阵奇异 双精度级别下的数值解双精度级别下的数值解-1.1004e-195 该矩阵行列式的精确结果该矩阵行列式的精确结果1.1.1 1.1.1 数学问题的解析解与数值解数学问题的解析解与数值解 数学家和其他科学技术工作者的区别数学家和其他科学技术工作者的区别 数学家:理论严格证明、存在性数学家:理论严格证明、存在性 工程技术人员:如何直接得出解工程技术人员:如何直接得出解 解析解不能使用的场合解析解不能使用的场合 不存在不存在 数学家解决方法,引入符号数学家解决方法,引
4、入符号erf(a)工程技术人员更感兴趣积分的值工程技术人员更感兴趣积分的值数值解数值解 解析解不能使用的场合解析解不能使用的场合 解析解不存在:无理数,无限不循环小数解析解不存在:无理数,无限不循环小数 p p 数学家:尽量精确地取值数学家:尽量精确地取值 工程技术人员:足够精确即可工程技术人员:足够精确即可 祖充之祖充之 3.14159263.1415927 解析解存在但不实用或求解不可能解析解存在但不实用或求解不可能 高阶矩阵行列式高阶矩阵行列式1.1.2 1.1.2 数值解应用场合数值解应用场合 在力学领域,常用有限元法求解偏微分方程;在力学领域,常用有限元法求解偏微分方程;在航空、航天
5、与自动控制领域,经常用到数值线性在航空、航天与自动控制领域,经常用到数值线性代数与常微分方程的数值解法等解决实际问题;代数与常微分方程的数值解法等解决实际问题;工程与非工程系统的计算机仿真中,核心问题的求工程与非工程系统的计算机仿真中,核心问题的求解也需要用到各种差分方程、常微分方程的数值解解也需要用到各种差分方程、常微分方程的数值解法;法;在高科技的数字信号处理领域,离散的快速在高科技的数字信号处理领域,离散的快速Fourier 变换变换(FFT)已经成为其不可或缺的工具。已经成为其不可或缺的工具。1.1.3 1.1.3 数学运算问题软件包发展概述数学运算问题软件包发展概述 享有国际声望的软
6、件包享有国际声望的软件包 线性代数线性代数LINPACK,LAPACK 矩阵特征值计算矩阵特征值计算 EISPACK NAG(Oxford:Numerical Algorithm Group)Press W H,Flannery B P,Teukolsky S A,and Vitterling W T.Numerical Recipes,the art of scientific computing:Cambridge University Press,1986(C,Fortran,Pascal算法语言源程算法语言源程序软件包序软件包)线性代数计算线性代数计算 LaPACK软件包作用软件包作用
7、 从历史发展角度,起了不可替代的作用从历史发展角度,起了不可替代的作用 对计算机数学语言的强有力支持对计算机数学语言的强有力支持 但不能过多依赖但不能过多依赖 使用烦琐使用烦琐 应该在计算机数学语言的意义下利用之应该在计算机数学语言的意义下利用之考虑一个实际编程例子考虑一个实际编程例子 如何编写一个能求出两个矩阵相乘的计算机如何编写一个能求出两个矩阵相乘的计算机通用子程序?通用子程序?该程序正确吗?错误,未考虑矩阵是否可乘该程序正确吗?错误,未考虑矩阵是否可乘是否正确?是否正确?错误,未考虑其一为标量错误,未考虑其一为标量加入标量判定,是否就是通用程序了?加入标量判定,是否就是通用程序了?错误
8、,应考虑其一或二者为复数矩阵错误,应考虑其一或二者为复数矩阵可见,用最底层的编程语言需要考虑的内容要可见,用最底层的编程语言需要考虑的内容要多得多,所以调试起来不容易,容易出现漏洞多得多,所以调试起来不容易,容易出现漏洞MATLAB MATLAB 实现:实现:C=AC=A*B B1.2 1.2 计算机数学语言概述计算机数学语言概述 计算机数学语言计算机数学语言 MATLAB 1984 v1 The MathWorks Inc MATrix LABoratory 1980 Cleve Moler,New Mexico University 自动控制学科的应用(状态空间的控制理论的兴自动控制学科的
9、应用(状态空间的控制理论的兴起)起)Mathematica(Wolfram Research公司公司)Maple(Waterloo Maple公司)公司)SciLAB:免费,全部源代码公开:免费,全部源代码公开三个代表性计算机数学语言三个代表性计算机数学语言 MATLAB,Mathematica,Maple MATLAB 数值运算、程序设计,广泛应用数值运算、程序设计,广泛应用 Mathematica、Maple 解析运算、数学公式推导、定理证明解析运算、数学公式推导、定理证明 MATLAB+符号运算工具箱符号运算工具箱+Maple 可以推导公式,可以调用可以推导公式,可以调用Maple功能功
10、能MATLAB 语言的优势语言的优势 编程简单,类似于其他语言,如编程简单,类似于其他语言,如C 集成度更高,扩展性更好集成度更高,扩展性更好 数学问题数值解能力强大数学问题数值解能力强大 由由Maple内核构成的符号运算工具箱可以内核构成的符号运算工具箱可以继承继承Maple所有解析解的求解能力所有解析解的求解能力 在数学、工程领域有各种在数学、工程领域有各种“工具箱工具箱”强大的系统仿真能力,强大的系统仿真能力,Simulink建模建模 在控制界是国际首选的计算机语言在控制界是国际首选的计算机语言1.3 MATLAB1.3 MATLAB科学计算的主要内容科学计算的主要内容 三大基本功能:数
11、值计算、符号计算、图形三大基本功能:数值计算、符号计算、图形处理处理 程序设计与应用程序接口程序设计与应用程序接口 MATLAB科学计算中的应用科学计算中的应用 在数值分析中的应用在数值分析中的应用 多项式与插值、数据的曲线拟合多项式与插值、数据的曲线拟合 数值微分与数值积分数值微分与数值积分 线性代数线性代数 非线性方程求根非线性方程求根 微分方程微分方程 在最优化问题中的应用在最优化问题中的应用 在概率统计中的应用在概率统计中的应用 在偏微分方程解法中的应用在偏微分方程解法中的应用 在复变函数中的应用在复变函数中的应用 数学问题的非传统解法数学问题的非传统解法 模糊逻辑与模糊推理模糊逻辑与模糊推理 神经网络在数据拟合中的应用神经网络在数据拟合中的应用 遗传算法在最优化求解中的应用遗传算法在最优化求解中的应用 在建模仿真中的应用在建模仿真中的应用