一. MATLAB主要参考书
此处列举六本与MATLAB计算相关的参考书籍:
《高等应用数学问题的MATLAB求解》 薛定宇、陈阳泉著,清华大学出版
《精通MATLAB科学计算》 王正林等编著 电子工业出版
《科学计算引论–基于MATLAB的数值分析》 【美】Shoichiro Nakamura 电子工业出版
《MATLAB与科学计算》王谟然编著 电子工业出版
《MATLAB 6.0数学手册》 蒲俊等编著 蒲东电子出版
二. 与数学有关的软件
程序设计语言
BASIC, Pascal, FORTRAN, C, C++, Java, R, Python ······
数值计算语言
Matlab, Scilab, Octave······
符 计算软件
Mathematica, Maple······
交互式数学软件
MathCAD, Calcwin······
统计软件
SAS, SPSS, Minitab,······
数学规划软件
Lingo, Lindo······
工程计算软件
Ansys, Fluent, Phoenics······
其他
几何画板, MathLab
三. 数学问题的计算机求解概述
借助手工推导,只能解决部分数学问题。所以,我们需要利用计算机进行求解数学问题。计算机的利用包含以下两个方向:
- 用数值分析技术,从底层编码起:采用成形的数值分析算法或数值软件包,利用纯手工编码进行解决数学问题。
- 用专门的计算机语言进行求解:MATLAB,Mathematic,Maple等
例题1 带参数问题的求解
求以下方程的解。
分析:
在a,c,d是给定数值时,数值分析的方法是可用的;
当不是给定数值时,数值分析的方式不可用。必须使用计算机数学语言来求解。
例题2 时间复杂性
求
分析:
方法:用代数余子式方法。
过程:一个n阶行列式可以表示成n个n-1阶行列式的和,以此类推······。可以把高阶行列式转换为1阶矩阵行列式。
结论:任意矩阵行列式的解析解是存在的。
问题:此方法忽略了可计算性问题。例如n=20,运算次数是
例题3 求解精度的问题
Hilbert矩阵的标准形式如下:
求n=20时,Hilbert矩阵的行列式。
分析:
如果利用传统数值分析的方法,很容易得出矩阵奇异的错误结论。
奇异矩阵:线性代数的概念,对应的行列式等于0的矩阵。
在MATLAB中,在双精度级别下容易快速得到数值解。
MATLAB双精度: 是 MATLAB中的默认数值数据类型,数值变量自动存储为 64 位(8 字节)双精度浮点值
求解:
MATLAB代码如下:
运行结果:
det1 =
1/2377454716768534509091644243427616440175419837753486493033185331234419759310644585187585766816573773440565759867265558971765638419710793303386582324149811241023554489166154717809635257797836800000000000000000000000000000000000
det2 =7.453419356146346e-196
历时 0.001154 秒。
四. 解析解与数值解
4.1 两者的区别
数学家和工程技术人员的关注点是不一样的:
- 数学家:理论严格证明,存在性
- 工程技术人员:如何直接得出解
例如,以下积分的解析解是不存在的:
于是,数学家就引入符 erf(a)来表示它。当然工程技术人员更关心积分的值,也就是积分的数值解。
解析解在有无理数,无限不循环小数
4.2 数值解应用场合
- 在力学领域,常用有限元法求解偏微分方程
- 在航空航天与自动控制领域,经常用到数值线性代数与常微分方程的数值解法来解决实际问题
- 在工程与非工程系统的计算机仿真中,核心问题的求解也需要用到各种差分方程,常微分方程的数值解法
- 在高科技的数字信 处理领域,离散的快速Fourier变换(FFT)已经成为其不可或缺的工具
五. 数学运算问题的软件包
此处列举四个享有国际声望的软件包:
- 线性代数:LINPACK
- 矩阵特征值计算:EISPACK
- NAG:Oxford Numerical Algorithm Group
- 线性代数计算:LaPACK
从历史发展的角度来讲,软件包起了不可替代的作用,同时对计算机数学语言提高了强有力的支撑。由于使用起来比较繁琐,所以我们不能过多依赖它,理应该在计算机语言的意义下更好地利用它。
例题4 设计两个矩阵相乘的计算机通用子程序
底层语言可设计如下:
很明显该矩阵是错误的,未考虑矩阵是否可乘。
添加1:If(L1==L2),相乘;else 出错信息;
很明显依旧错误,未考虑其中某个矩阵为标量。
添加2:继续添加标量判定
很明显依旧错误,未考虑矩阵为复数矩阵的情况。
可见,用最底层的编程语言需要考虑的内容太多,所以调试起来很不容易,容易出现漏洞。
然而,在MATLAB只需要以下命令格式即可实现:
六. 计算机数学语言
Mathematic由Wolfram Research公司开发,Maple由Waterloo Maple公司开发,两者均用来解析运算、数学公式推导和定理证明。
SciLAB软件纯免费,全部的源代码也已经公开。
MATLAB全称MATrix LABoratory,起源于1980年New Mexico University的教授Cleve Moler,当时正赶上状态空间的控制理论的兴起发展阶段,所以此软件主要用于自动控制学科的应用,后来该软件隶属于The Math Works Inc公司。
现如今,MATLAB主要用于数值计算、程序设计等方面,甚至利用符 运算工具箱,可以调用Maple的功能,来进行公式的推导。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!