列举详细的数学相关软件:MATLAB为何可以这么强

一. 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进行处理,非常感谢!

上一篇 2022年3月25日
下一篇 2022年3月25日

相关推荐