第 7 章 matlab 工程计算
DESCRIPTION
第 7 章 MATLAB 工程计算. 本章内容. 第四节 M 文件及其语言基础 第五节 MATLAB 线性方程组求解 第六节 数值分析. 第一节 MATLAB 概述. MATLAB 是“矩阵实验室” (MATrix LABoratory) 的缩写。 最初是 Cleve More 博士用 FORTRAN 语言开发的矩阵分析软件, 80 年代初, Moler 和 John Little 用 C 改写,不久他们成立 MathWorks 公司, 84 年推向市场, 2000 年推出了 MATLAB 6.0 版本。 - PowerPoint PPT PresentationTRANSCRIPT
第 7 章 MATLAB 工程计算
本章内容 第四节 M 文件及其语言基础 第五节 MATLAB 线性方程组求解 第六节 数值分析
第一节 MATLAB 概述 MATLAB 是“矩阵实验室” (MATrix LABora
tory) 的缩写。 最初是 Cleve More 博士用 FORTRAN 语言开
发的矩阵分析软件, 80 年代初, Moler 和 John Little 用 C 改写,不久他们成立 MathWorks公司, 84 年推向市场, 2000 年推出了 MATLAB 6.0 版本。
MATLAB 是应用最广泛的工程计算软件,发达国家理工类学生必须掌握的数学分析工具。
第四节 M 文件及其语言基础 在命令窗口下,键入一行命令后,系统
立即执行。这种方法程序可读性差且难以存储。对于复杂的问题,应编成程序文件。
由 MatLab 语句构成的文件称作 M 文件,它将 m 作为文件的扩展名,可以用任何文件编辑器进行调试。
一、建立主程序文件 选择 File—>New - >M-file ,即进入 M
文件编辑器。 输入程序,完成后,在当前目录下保存
文件名。 在命令窗口,输入文件名,即执行程序。
主程序格式特征 以 % 开始为注释 全局变量定义: Global 变量名 1 变量名 2 人机交互语句 :
x= input(‘n=’) % 将值付给 x, 屏幕显示’ n=‘
二、常量I或 j 虚数单位
pi 圆周率 = 3.1415…
eps 计 算 机 浮 点 数 识 别 精 度eps/2=1.11*10^(-16)
realmin 最 小 正 实 数 realmin^1.051= 4.9407*10^(-324)
realmax 最大正实数 1.7977*10^308
Inf 无穷大
NaN 不定值
三、变量变量命名规则 必须以字母为开头 可以由字母、数字和下划线混合组成,
区分大小写 字符长度不大于 31 个
变量数据类型MatLab 有五种基本数据类型, 数值数组 (double array)
字符串 (char array)
符号对象 (Symbolic object)
单元数组 (Cell array)
结构 (Structure)
四、关系与逻辑运算< 小于<= 小于等于> 大于>= 大于等于= = 等于
~ = 不等于& 与| 或~ 非
五、矩阵运算符转置 A’
加与减 A+B与 A-B
数乘矩阵 k*A或 A*k
矩阵乘方 A^k
数与矩阵加减 k+A与 k-A
矩阵除法 左除 A\B, 右除 B/A
六、数学函数 sin cos tan cot asin exp sqrt
log10 log2 log round fix gcd lcm
七、程序控制语句For 循环 基本格式为: for 循环变量=起始值:步长:终止值 循环体 end
While 循环 While 逻辑表达式 循环体 end
求从 1+2+3+…+100 之和 sum=0; i=1; while i<=100 sum=sum+I; i=i+1; End sum
条件转移语句if 逻辑表达式 执行语句 1 else 执行语句 2 end
多重条件分支 Switch 语句 switch Case 值 1 语句 1 Case 值 2 语句 2 Otherwise 语句 3 end
例题 编写一个 M 文件,画出分段函数所表示的
曲面
15457.0
117575.0
154.0
),(5.175.375.0
6
5.175,375.0
22
22
22
yxe
yxe
yxe
yxpyyx
yx
yyx
第 5 节 线性方程式的求解
mmnmnmmmm
nn
nn
bxaxaxa
bxaxaxa
bxaxaxa
...
..................
...
...
2211
222222121
11112121111
第 5 节 线性方程式的求解 MATLAB 采用除法运算符“ /” 和“ \” 求解 X=A\b’ 表示求矩阵方程 AX=B 的解 X=A/b’ 表示求矩阵方程 XA=B 的解 对方程 X=A\B ,要求矩阵 A 和 B 有相同的行
数, X 和 B 有相同的列数,它的行数等于矩阵 A 的列数。
方程 X=B/A 同理
如果矩阵 A 不是方阵,其维数是 m×n ,则有: m=n 恰定方程,寻求精确解 m>n 超定方程,寻求最小二乘解 m<n 不定方程,寻求基本解,其中至多有 m
个非零元素。针对不同的情况, matlab 采用不同的算法。
一 、恰定方程组 恰定方程组由 n 个未知数的 n 个方程构成,方程有唯一
的一组解。其形式: Ax=b 其中, A 是方阵, b 是一个列向量。 在线性代数中,最常用的方程解法有: 利用 crammer 公式求解 利用矩阵求逆法求解 利用 gaussian消去法 利用 lu 法求解 在 MATLAB 中,直接采用表达式: x=A\b’
求解方程组2x1-x2+3x3=3
4x1+2x2+5x3=4
2x1 +2x3=6
A=[2 -1 3;4 2 5; 2 0 2];
b=[3 4 6]’;
X=A\b
结果: 7.6667 -1.6667 -4.6667
例
0674522
963
852
4321
432
421
4321
xxxxxxx
xxx
xxxx
二、超定方程组 对于方程组 Ax=b , A 为 n×m 矩阵,如果 A
列满秩,且 n>m ,则方程没有精确解,此时方程组称为超定方程组。
线性超定方程经常遇到的问题是数据的曲线拟合。对于超定方程组,在 MatLab 中,利用左除命令 x=A\b,来寻求它的最小二乘解,还可以用广义逆来求,即 x=pinv(A) ,所得到的解不一定满足 Ax=b,x只是最小二乘意义上的解。
求超定方程组
613334
053
332
321
321
321
321
xxxxxx
xxx
xxxA=[2 -1 3;3 1 -5;4 -1 1;1 3 -13]
b=[3 0 3 -6]’
x1=A\b %左除解方程x1 = 1.0000 2.0000 1.0000
X2=pinv(A)*b %广义逆求解
A*x1-b %验证最小二乘解显示: 1.0e-014 * -0.0888 -0.0888 -0.1332 0 说明 x1 不是方程 Ax=b 的精确解。
第六节 数值分析 Matlab提供符号运算,可进行多种数值
分析,包括因式分解、求极限值、求微分、求导数等
符号变量 在使用符号运算工具箱之前,需要把一些变量声明为“符号变量”,以区别于常规的数值变量。
例如声明 a,b,c,d 为符号变量: syms a b c d
一、因式分解 Factor 函数 Syms x s=x^9-1 Factor(s)
二、求极限值 极限可以用 limit 函数求得 Limit(f,x,a) 求符号表达式 f 当 x->a时的极限 Limit(f,a) 对系统默认变量且该变量 x->a时的极限
例如 求下式中默认变量 ->2时的极限
Syms x Limit((x-2)/(x^2-4),2)
4
2lim
42
x
xx
三、计算数值向量的数值差分 差分可以用 diff() 函数求出 语法: Y=diff(F,n,dim) F 是向量; n 是差分阶数; dim 是指沿着数组的哪一维进行差分
例如 F=[(1:6).^3] diff(F)
二、一维数值积分 Quad: 采用 simpson 法计算积分。 调用格式: q=quad(‘fun’,a,b,tol,trace,p1,p2,…) fun:被积函数, a,b:上限 下限 tol: 误差,缺省 0.0001 Trace: 画图 p1,p2:传递参数
求数值积分 function y=funq(x) y=x^3+x^2+2 q=quad(‘funq’,-1,1,1e-4,1)