MATLAB在数值分析中的应用
? 开课单位:数学系 1学分
? 张敏洪(数学系)
mh_zhang@gscas.ac.cn
? 考试方式,作业完成
平时占 60%,最后占 40%
有课外上机时间, 讲义, 作业, 部分参考
资料可下载 。
ftp://ftp.gscas.ac.cn/lessons/数学系
主要参考书,
? 科学计算引论-基于 MATLAB的数值分析
[美] Shoichiro Nakamura 电子工业出版社
? 高等应用数学问题的 MATLAB求解 薛定宇
陈阳泉 著 清华大学出版社
? MATLAB与科学计算 王谟然 编著 电子工业
出版社
? MATLAB6.0数学手册 蒲俊等编著 蒲东电子
出版社
第一章 计算机数学语言概述
?1.1 数学问题计算机求解概述
– 数学问题求解
? 手工推导(只解决部分问题)
? 借助计算机
–用数值分析技术,从底层编写起
采用成形的数值分析算法、数值软件包
与手工编程相结合的求解方法。
–用专门计算机语言来求解
MATLAB,Mathematica,Maple等
例:求 方程的解
在 是给定数值时,数值分析的
方式是可用。
当不是给定数值时,数值分析的方式
不可用。
必须使用计算机数学语言来求解。
3x a x c d? ? ?
a c d、、
例 矩阵行列式求解问题
? 代数余子式
– 1 个 n 阶行列式可以表示成 n 个 n-1 阶行列式的
和,…
– 可以将高阶矩阵行列式转换成 1阶矩阵行列式
? 结论:任意矩阵行列式解析解存在
? 问题:忽略了可计算性
? n=20,银河机,3000年
nn?
( 1 ) ( 1 ) !n n n? ? ?
209, 7 0 7 3 1 0?
? 实例,Hilbert 矩阵,n=20
? 传统数值分析结论:矩阵奇异
? 双精度级别下的数值解 -1.1004e-195
? 该矩阵行列式的精确结果
?近似值
?计算时间 0.2 秒
1.1.1 数学问题的解析解与数值解
? 数学家和其他科学技术工作者的区别
– 数学家:理论严格证明、存在性
– 工程技术人员:如何直接得出解
? 解析解不能使用的场合
– 不存在
– 数学家解决方法,引入符号 erf(a)
– 工程技术人员更感兴趣积分的值= >数值解
? 解析解不能使用的场合
– 解析解不存在:无理数,无限不循环小数 p
– 数学家:尽量精确地取值
– 工程技术人员:足够精确即可
– 祖充之 3.1415926—3.1415927
? 解析解存在但不实用或求解不可能
– 高阶矩阵行列式
1.1.2 数值解应用场合
? 在力学领域,常用有限元法求解偏微分方程;
? 在航空、航天与自动控制领域,经常用到数值线性
代数与常微分方程的数值解法等解决实际问题;
? 工程与非工程系统的计算机仿真中,核心问题的求
解也需要用到各种差分方程、常微分方程的数值解
法;
? 在高科技的数字信号处理领域,离散的快速 Fourier
变换 (FFT) 已经成为其不可或缺的工具。
? …… ……
1.1.3 数学运算问题软件包发展概述
? 享有国际声望的软件包
– 线性代数 LINPACK
– 矩阵特征值计算 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,Cambridge
University Press,1986 (C,Fortran,Pascal算法
语言源程序软件包 )
软件包作用
? 从历史发展角度,起了不可替代的作用
? 对计算机数学语言的强有力支持
? 但不能过多依赖
? 使用烦琐
? 应该在计算机数学语言的意义下利用之
考虑一个实际编程例子
? 如何编写一个能求出两个矩阵相乘的计算机
通用子程序?
该程序正确吗?错误,未考虑矩阵是否可乘
是否正确? 错误,未考虑其一为标量
加入标量判定,是否就是通用程序了?
错误,考虑其一或二者为复数矩阵
可见,用最底层的编程语言需要考虑的内容要
多得多,所以调试起来不容易,容易出现漏洞
MATLAB 实现,C=A*B
1.2 计算机数学语言概述
?1.2.1 计算机数学语言
– MATLAB 1984 v1 The MathWorks Inc
– MATrix LABoratory
– 1980 Cleve Moler,New Mexico University
– 自动控制学科的应用
– Mathematica
– Maple
– SciLAB:免费,全部源代码公开
1.2.2 三个代表性计算机数学语言
? ―三个代表”,MATLAB,Mathematica,
Maple
? MATLAB
– 数值运算、程序设计,广泛应用
? Mathematica,Maple
– 解析运算、数学公式推导、定理证明
? MATLAB+符号运算工具箱 +Maple
– 可以推导公式,可以调用 Maple功能
MATLAB 语言的优势
? 编程简单,类似于其他语言,如 C
? 集成度更高,扩展性更好
? 数学问题数值解能力强大
? 由 Maple内核构成的符号运算工具箱可以
继承 Maple所有解析解的求解能力
? 在数学、工程领域各种“工具箱”
? 强大的系统仿真能力,Simulink建模
? 在控制界是国际首选的计算机语言
1.3 MATLAB科学计算的主要内容
? 三大基本功能:数值计算、符号计算、
图形处理
? 程序设计与应用程序接口
? MATLAB科学计算中的应用
– 在数值分析中的应用
– 在复变函数中的应用
– 在偏微分方程解法中的应用
– 在概率统计中的应用
– 在最优化问题中的应用
– 数学问题的非传统解法
? 模糊逻辑与模糊推理
? 神经网络在数据拟合中的应用
? 遗传算法在最优化求解中的应用
? 小波理论在数据处理中的应用
? 粗糙集理论与应用
? 分数阶微积分理论与计算
– 在建模仿真中的应用
– ……
1.4 MATLAB在数值分析中的应用
? 多项式与插值
? 数据的曲线拟合
? 数值微分与数值积分
? 线性代数
? 非线性方程求根
? 常微分方程的初值问题
? 常微分方程的边值问题