第7章MATLAB工程计算
一、建立主程序文件
选择File—>New->M-file,即进入M文 件编辑器。
输入程序,完成后,在当前目录下保存 文件名。
在命令窗口,输入文件名,即执行程序。
主程序格式特征
以%开始为注释 全局变量定义:
Global 变量名1 变量名2 人机交互语句:
x= input(‘n=’) % 将值付给x,屏幕显 示’n=‘
符号变量
在使用符号运算工具箱之前,需要把一 些变量声明为“符号变量”,以区别于 常规的数值变量。
例如声明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时的
二、常量
I或j pi eps
realmin
realmax Inf NaN
虚数单位
圆周率 = 3.1415…
计算机浮点数识别精度 eps/2=1.11*10^(-16) 最 小 正 实 数 realmin^1.051= 4.9407*10^(-324) 最大正实数 1.7977*10^308
无穷大
x1 3x2 13x3 6
A*x1-b %验证最小二乘解
显示:
1.0e-014 *
-0.0888
-0.0888
-0.1332
0
说明x1不是方程Ax=b的精确解。
第六节 数值分析
Matlab提供符号运算,可进行多种数值 分析,包括因式分解、求极限值、求微 分、求导数等
求解方程组
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
例
2 x1 x2 5x3 x4 8
x1 3x2 6 x4 9
0.54e0.75x2 3,75 y2 1.5 y
x y 1
p(x, y)
0.7575ex26 y2
1 x y 1
0.5457e0.75x2 3.75 y2 1.5 y
x y 1
第5节 线性方程式的求解
a11x11 a21x1
... am1xm1
不定值
三、变量
变量命名规则 必须以字母为开头 可以由字母、数字和下划线混合组成,
区分大小写 字符长度不大于31个
变量数据类型
MatLab有五种基本数据类型, 数值数组(double array) 字符串(char array) 符号对象(Symbolic object) 单元数组(Cell array) 结构(Structure)
第7章 MATLAB工程计算
本章内容
第四节 M文件及其语言基础 第五节 MATLAB线性方程组求解 第六节 数值分析
第一节 MATLAB概述
MATLAB是“矩阵实验室”(MATrix LABoratory)的缩写。
最初是Cleve More博士用FORTRAN语言开发 的矩阵分析软件, 80年代初, Moler和John Little用C改写,不久他们成立MathWorks公司, 84年推向市场,2000年推出了MATLAB 6.0版 本。
MATLAB是应用最广泛的工程计算软件,发 达国家理工类学生必须掌握的数学分析工具。
第四节 M文件及其语言基础
在命令窗口下,键入一行命令后,系统 立即执行。这种方法程序可读性差且难 以存储。对于复杂的问题,应编成程序 文件。
由MatLab语句构成的文件称作M文件, 它将m作为文件的扩展名,可以用任何 文件编辑器进行调试。
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
求超定方程组
A=[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 %广义逆求解
2x1 x2 3x3 3
3x1 x2 5F=[(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:传递参数
一 、恰定方程组
恰定方程组由n个未知数的n个方程构成,方程有唯一 的一组解。其形式:
Ax=b 其中,A是方阵,b是一个列向量。 在线性代数中,最常用的方程解法有: 利用crammer公式求解 利用矩阵求逆法求解 利用gaussian消去法 利用lu法求解 在MATLAB中,直接采用表达式:x=A\b’
条件转移语句
if 逻辑表达式 执行语句1 else 执行语句2 end
多重条件分支
Switch 语句 switch Case 值1 语句1 Case 值2 语句2 Otherwise 语句3 end
例题
编写一个M文件,画出分段函数所表示的曲 面
极限
例如
求下式中默认变量->2时的极限
lim
x 2
x2 x4 4
Syms x Limit((x-2)/(x^2-4),2)
三、计算数值向量的数值差分
差分可以用diff()函数求出 语法:Y=diff(F,n,dim) F是向量;n是差分阶数;dim是指沿着
数组的哪一维进行差分
求数值积分
function y=funq(x) y=x^3+x^2+2 q=quad(‘funq’,-1,1,1e-4,1)
a12 x12 a22 x22
... am2 xm2
... a1n x1n ... a2n xn ... ... ... amnxmn
b1 b2 ... ... bm
第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采用不同的算法。
四、关系与逻辑运算
<
小于
<=
小于等于
>
大于
>=
大于等于
==
等于
~=
不等于
&
与
|
或
~
非
五、矩阵运算符
转置 加与减 数乘矩阵 矩阵乘方 数与矩阵加减 矩阵除法
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
2 x2 x3 2 x4 5
x1 4 x2 7 x3 6 x4 0
二、超定方程组
对于方程组Ax=b,A为n×m矩阵,如果A列满 秩,且n>m,则方程没有精确解,此时方程组 称为超定方程组。
线性超定方程经常遇到的问题是数据的曲线拟 合。对于超定方程组,在MatLab中,利用左除 命令x=A\b,来寻求它的最小二乘解,还可以用 广义逆来求,即x=pinv(A),所得到的解不一定 满足Ax=b,x只是最小二乘意义上的解。