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

本文介绍了MATLAB在科学计算中的应用,包括参考书籍、数学软件、数值与符号计算、计算机求解数学问题的策略。通过实例分析了数值解与解析解的区别,强调了数值解在工程实际中的重要性,并提到了相关软件包和计算机数学语言。MATLAB在矩阵运算和数值解上的高效性得到展示。
摘要由CSDN通过智能技术生成

一. 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  带参数问题的求解

求以下方程的解。

x^3+ax+c=d

分析:

在a,c,d是给定数值时,数值分析的方法是可用的;

当不是给定数值时,数值分析的方式不可用。必须使用计算机数学语言来求解。

例题2 时间复杂性

n\times n矩阵的行列式。

分析:

方法:代数余子式方法。

过程:一个n阶行列式可以表示成n个n-1阶行列式的和,以此类推······。可以把高阶行列式转换为1阶矩阵行列式。

结论:任意矩阵行列式的解析解是存在的。

问题:此方法忽略了可计算性问题。例如n=20,运算次数是9.7073\times 10^{20},用每秒亿次的银河机需要3000年。所以此方法忽略了复杂度可行性

例题3  求解精度的问题

Hilbert矩阵的标准形式如下:

求n=20时,Hilbert矩阵的行列式。

分析:

如果利用传统数值分析的方法,很容易得出矩阵奇异的错误结论。

奇异矩阵:线性代数的概念,对应的行列式等于0的矩阵。 

在MATLAB中,在双精度级别下容易快速得到数值解。

MATLAB双精度:double 是 MATLAB中的默认数值数据类型,数值变量自动存储为 64 位(8 字节)双精度浮点值

求解:

MATLAB代码如下:

clc;clear;

%准确值
H=sym(hilb(20));
det1=det(H)

%近似值
det2=det(hilb(20))

%分析运行时间
tic;det(hilb(20));toc

运行结果:

det1 =
1/2377454716768534509091644243427616440175419837753486493033185331234419759310644585187585766816573773440565759867265558971765638419710793303386582324149811241023554489166154717809635257797836800000000000000000000000000000000000

det2 =7.453419356146346e-196

历时 0.001154 秒。

四. 解析解与数值解

4.1 两者的区别

数学家和工程技术人员的关注点是不一样的:

  • 数学家:理论严格证明,存在性
  • 工程技术人员:如何直接得出解

例如,以下积分的解析解是不存在的:

\frac{2}{\sqrt\pi}\int_0^ae^{-x^2}dx

于是,数学家就引入符号erf(a)来表示它。当然工程技术人员更关心积分的值,也就是积分的数值解。

解析解在有无理数,无限不循环小数\pi时,是不存在的。于是,数学家便尽量精确取值,而工程技术人员只需要足够精度即可。例如,工程技术人员就常常把\pi取在3.1415926~3.1415927之间。另外,对于高阶矩阵的行列式,解析解虽然存在但是不实用。

4.2 数值解应用场合

  • 在力学领域,常用有限元法求解偏微分方程
  • 在航空航天与自动控制领域,经常用到数值线性代数常微分方程的数值解法来解决实际问题
  • 在工程与非工程系统的计算机仿真中,核心问题的求解也需要用到各种差分方程,常微分方程的数值解法
  • 在高科技的数字信号处理领域,离散的快速Fourier变换(FFT)已经成为其不可或缺的工具

五. 数学运算问题的软件包

此处列举四个享有国际声望的软件包:

  • 线性代数:LINPACK
  • 矩阵特征值计算:EISPACK
  • NAG:Oxford  Numerical Algorithm Group
  • 线性代数计算:LaPACK

从历史发展的角度来讲,软件包起了不可替代的作用,同时对计算机数学语言提高了强有力的支撑。由于使用起来比较繁琐,所以我们不能过多依赖它,理应该在计算机语言的意义下更好地利用它。

例题4 设计两个矩阵相乘的计算机通用子程序

底层语言可设计如下:

for (i=0;i<n;i++){
  for (j=0;j<m;j++){
    c[i][j]=0;
    for (k=0;k<L1;k++){
      c[i][j]=c[i][j]+a[i][k]*b[k][j];
}}}

很明显该矩阵是错误的,未考虑矩阵是否可乘。

添加1:If(L1==L2),相乘;else 出错信息;

很明显依旧错误,未考虑其中某个矩阵为标量。

添加2:继续添加标量判定

很明显依旧错误,未考虑矩阵为复数矩阵的情况。

可见,用最底层的编程语言需要考虑的内容太多,所以调试起来很不容易,容易出现漏洞。

然而,在MATLAB只需要以下命令格式即可实现:

C=A*B

六. 计算机数学语言

Mathematic由Wolfram Research公司开发,Maple由Waterloo Maple公司开发,两者均用来解析运算、数学公式推导和定理证明。

SciLAB软件纯免费,全部的源代码也已经公开。

MATLAB全称MATrix LABoratory,起源于1980年New Mexico University的教授Cleve Moler,当时正赶上状态空间的控制理论的兴起发展阶段,所以此软件主要用于自动控制学科的应用,后来该软件隶属于The Math Works Inc公司。

现如今,MATLAB主要用于数值计算、程序设计等方面,甚至利用符号运算工具箱,可以调用Maple的功能,来进行公式的推导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

唠嗑!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值