当前位置:首页 >> 其它课程 >>

MATLAB教程PPT课件教程


1 MATLAB简介
1

Matlab 简介
? Matlab是一种广泛应用于工程计算及 数值分析领域的新型高级语言, 自 从 1984 年推向市场以来, 历经二十多年 的发展与竞争, 现已成为国际公认的最 优秀的工程应用开发环境。 ? 在欧美各高等院校,Matlab 已经成为线性代数、数值分 析、数理统计、自动控制理论、数字信号处理、

时间序列分 析、动态系统仿真、图像处理等课程的基本教学工具,已成 为大学生必须掌握的基本技能之一。Matlab 功能强大、简单 易学、编程效率高,深受广大科技工作者的欢迎。
2

Matlab 简介
? Matlab: Matrix Laboratory 矩阵实验室
? Matlab 的发展
? 1980年,Moler 教授用 Fortran 语言编写了集命令翻译、 科学计算于一身的一套交互式软件系统。 ? 1984年,Moler 等成立了 The MathWorks 的公司,用 C 语言完全改写 Matlab,并推出第一个商业版。

? 增添图形图像处理、符号运算、以及与其他流行软件 的接口功能,使得 Matlab 的功能越来越强大。
? 到九十年代,在国际上 30 几个数学类科技应用软件中, Matlab 在数值计算方面独占鳌头。
3

Matlab 简介
? 目前,Matlab 已成为世界顶尖的数学应用软件,以其强大 的工程计算、算法研究、工程绘图、应用程序开发、数据分 析和动态仿真等功能,在航空航天、机械制造和工程建筑等 领域发挥着越来越重要的作用。就影响而言,至今仍然没有 一个别的计算软件可与 Matlab 匹敌。 ? Matlab 的发行
1984年,Matlab 1.0 (DOS版,182K,20多个函数) 1992年,Matlab 4.0 (93年推出Windows版,加入 simulink) 1994年,Matlab 4.2(得到广泛重视和应用) 1999年,Matlab 5.3(真正实现32位运算) 2002年,Matlab 6.5(采用JIT加速器) 2004年,Matlab 7.0 自2006年起,Matlab每年更新两次

4

Matlab 的安装
? 购买(下载)Matlab 软件

? 插入光盘,自动运行; 或点击安装程序 setup.exe

? 这里以 Matlab 7.0.4 为例 ? 自 R2008a 开始增加了激活要求 ? 必须安装的部件 ? Matlab ? Symbolic Math Toolbox ? Extended Symbolic Math
5

Matlab 的特点与功能
? Matlab 是一个交互式软件系统
? 输入一条命令,立即就可以得出该命令的结果

? Matlab 具有很强的数值计算功能
? Matlab 以矩阵作为数据操作的基本单位, 但无需预先指定矩阵维数(动态定维) ? 按照 IEEE 的数值计算标准进行计算
? 提供十分丰富的数值计算函数,方便计算,提高效率 ? Matlab 命令与数学中的符号、公式非常接近, 可读性强,容易掌握
6

Matlab 的特点与功能
? Matlab 符号计算功能
Matlab 和著名的符号计算语言 Maple 相结合

? Matlab 的绘图功能
Matlab提供丰富的绘图命令, 很方便实现数据的可视化

? Matlab 的编程功能
Matlab具有程序结构控制、函数调用、数据结构、输入输 出、面向对象等程序语言特征,而且简单易学、编程效率 高。通过 Matlab 进行编程完成特定的任务
7

Matlab 的特点与功能
? Matlab 丰富的工具箱(toolbox)
根据专门领域中的特殊需要而设计的各种可选工具箱 Symbolic Math Signal process PDE Image Process Optimization Statistics Control System System Identification ……

? Matlab 的 Simulink 动态仿真集成环境
提供建立系统模型、选择仿真参数和数值算法、启动仿 真程序对该系统进行仿真、设置不同的输出方式来观察 仿真结果等功能
8

Matlab 的基本用法
? Matlab 系统的启动
? 使用 Windows “开始” 菜单

? 运行 Matlab 系统启动程序 matlab ? 双击 Matlab 快捷图标

? Matlab 系统的退出
? 在 Matlab 主窗口 File 菜单中选择 Exit Matlab ? 在 Matlab 命令窗口输入 exit 或 quit

? 单击 Matlab 主窗口的“关闭”按钮
9

Matlab 的工作界面
当前工 作目录

命令 提示符
当前工 作空间 命令窗口

输入命令的 历史记录

10

矩阵
? Matlab 的操作对象是 ? 定义矩阵:直接输入法
例:>> A = [1 2 3; 4 5 6; 7 8 9] ? 矩阵用方括号 “[ ]” 括起 ? 矩阵同一行中的元素之间用 空格 或 逗号 分隔

矩阵

? 矩阵行与行之间用 分号 分开 ? 直接输入法中,分号可以用 回车 代替
例:

? >> :命令提示符,不用输入 ? 回车 :运行所输入的命令
11

矩阵元素赋值
? 矩阵元素可以是任何数值表达式
例:>> x=[-1.3, sqrt(3), (1+2+3)*4/5]

? 矩阵元素的单独赋值
例:>> x(5)=abs(x(1)) Matlab自动将向量 x 的长度扩展到 5, 并将未赋值部分置零。 例:>> x(5)=abs(x(6)) ??
12

矩阵元素赋值
? 大矩阵可以把小矩阵作为其元素
例:>> A=[A ; 11 12 13]

在原矩阵的下方加一行

如何在原矩阵的右边添加一列?

13

矩阵元素的引用
? 单个元素的引用
例:>> A(2,3) 利用小括弧和元素所在的位置(下标)

x( i ) :向量 x 中的第 i 个元素 A( i, j ) :矩阵 A 中的第 i 行,第 j 列元素

? 多个元素的引用:冒号的特殊用法
a:b:c
产生一个由等差序列组成的向量; a 是首项,b 是公 差,c 确定最后一项;若 b=1,则 b 可以省略。

例:>> x=1:2:5 >> y=1:2:6

例:>> x=2:1:5 例:>> x=3:2:1

>> y=2:5
14

矩阵元素的引用
例:>> x(1:3) >> A(3,1:3) A(i:j, m:n) 表示由矩阵 A 的第 i 到第 j 行和第 m 到第 n 列交叉线上的元素组成的子矩阵。 可利用冒号提取矩阵 的整行或整列。 例:>> A(1, :) >> A(:, 1:3) >> A(:, :)
15

Matlab帮助系统
? 联机帮助
? help 显示指定命令的简短使用说明
例:>> help eig >> help help

? 详细使用帮助 ? doc 以网页形式显示指定命令的帮助页
例:>> doc eig

? 其它相关命令 helpdesk、helpwin

16

Matlab 查找命令
? lookfor 按指定的关键词查询与之相关的命令
例:>> lookfor inverse

? which 显示指定函数所在的目录
例:>> which eig

? 其它相关命令 cd、dir、more

17

Matlab 变量
? 变量命名原则
以字母开头 ? 后面可以跟 字母、数字 和 下划线 ? 长度不超过 63 个字符(6.5 版本以前为 19 个) ? 变量名 区分字母的 大小 写
?

? Matlab 语句的通常形式
变量 = 表达式
表达式是用运算符将有关运算量连接起来的式子, 其结果被赋给赋值号“=”左边的变量
18

Matlab 变量
? 分号和续行符的作用
? 若不想在屏幕上输出结果,可以在语句最后加分号 ? 如果语句很长,可用续行符 “…”(三个点)续行 续行符的前面最好留一个空格 例:

19

Matlab 变量
? 变量的查询
? who
显示工作空间中的所有变量

? whos 查看工作空间中变量的详细属性

20

Matlab 变量
? 系统预定义变量
? ? ?

pi : 圆周率 ? ,其值为 imag(log(-1)) inf,Inf :无穷大

nan,NaN :Not-a-Number,一个不定值,如 0/0 ? eps :浮点运算相对精度
?

i,j :虚部单位,即

?1

应尽量避免给系统预定义变量重新赋值! ? 特殊变量 ans
21

Matlab 数值运算
? 数与算术表达式
?

Matlab 中的数默认是双精度实数,表示方法同 C 语言 3, -9, 0.4, 1.603e-12, 3.23e+20

? ? ?

浮点运算的相对误差为 eps 浮点数表示范围为:10-308 ~ 10308 复数的输入 ? z=3+4i (4 与 i 之间不能有空格) ? z=3+4*i

复数作为矩阵元素输入时,加号两边不能有空格!
22

Matlab 数值运算
? 数学运算符
? ? ? ? ?

+ 加法 - 减法 * 乘法 / 和 \ 除法(右除和左除) ^ 幂运算

? 命令分隔符:逗号和分号
23

Matlab 的输出
? 输出格式
Matlab 以双精度执行所有的运算,运算结果可以在 屏幕上输出,同时赋给指定变量;若无指定变量,则系 统会自动将结果赋给变量 “ans”
? ?

Matlab 中数的输出格式可以通过 format 命令指定

format 只改变变量的输出格式, 但不会影响变量的值!

24

各种 format 格式
格式
format
format short

解释
短格式(缺省显示格式),同short
短格式(缺省显示格式),只显示5位


3.1416
3.1416

format long
format short e

长格式,双精度数15位,单精度数7位
短格式e方式(科学计数格式)

3.14159265358979
3.1416e+000

format long e
format short g format long g

长格式e方式
短格式g方式 长格式g方式

3.141592653589793e+000
3.1416 3.14159265358979

format compact
format loose

压缩格式
自由格式

format + / format bank / format rat / format hex (详情查看联机帮助)
25

变量的存储
? 存储当前工作空间中的变量
? ? ?

save 将所有变量存入文件 matlab.mat save mydata 将所有变量存入指定文件 mydata.mat save mydata.mat 将所有变量存入文件 mydata.mat

? 存储指定的变量
save 文件名 变量名列表

变量名列表中各变量之间用空格分隔
例:>> save mydata A x z
26

变量的读取
? 将数据文件中的变量载入当前工作空间
? ?

load mydata 载入数据文件中的所有变量 load mydata A x 从数据文件中提取指定变量

? 清除当前工作空间中的变量
? ?

clear

清除当前工作空间中的所有变量 清除指定的变量

clear A x

27

几个小技巧
? Matlab 的命令记忆功能:上下箭头键
可以先输入命令的前几个字符,再按上下键缩小搜索范围

? 命令补全功能: Tab 键 ? 用 Esc 键 删除命令行

28

Lecture 2 MATLAB矩阵(数值)运算

29

1.建立矩阵
利用函数建立数值矩阵:MATLAB提供了许多生成 和操作矩阵的函数,可以利用它们去建立矩阵。
?
?
? ?

例如: reshape函数和diag函数等。 reshape函数用于建立数值矩阵。 diag函数用于产生对角阵。
?

利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以

为它专门建立一个M文件。其步骤为: ? 第一步:使用编辑程序输入文件内容。 ? 第二步:把输入的内容以纯文本方式存盘(设文件名为 mymatrix.m)。 ? 第三步:在MATLAB命令窗口中输入mymatrix,就会自动建立一 个名为AM的矩阵,可供以后显示和调用。
30

1.建立矩阵
?

利用M文件建立矩阵:

对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。 其步骤为: ? 第一步:使用编辑程序输入文件内容。 ? 第二步:把输入的内容以纯文本方式存盘(设文件名为 mymatrix.m)。 ? 第三步:在MATLAB命令窗口中输入mymatrix,就会自动建立一 个名为AM的矩阵,可供以后显示和调用。
?

子矩阵操作

31

?

2.矩阵的基本运算
(1)矩阵转置 (2)矩阵加和减 (3)矩阵乘法 (4)矩阵除法 A\b=inv(A)*b (5)矩阵的乘方 a^2

? ?

?
? ?

32

?
?

3.矩阵的函数
>> help matfun Matrix functions - numerical linear algebra.

? ? ? ? ? ? ?

?
? ? ? ?

Matrix analysis. norm - Matrix or vector norm. normest - Estimate the matrix 2-norm. rank - Matrix rank. det - Determinant. trace - Sum of diagonal elements. null - Null space. orth - Orthogonalization. rref - Reduced row echelon form. subspace - Angle between two subspaces.
33

?
? ? ? ? ? ? ? ? ?

3.矩阵的函数
Linear equations. \ and / - Linear equation solution; use "help slash". inv - Matrix inverse. rcond - LAPACK reciprocal condition estimator cond - Condition number with respect to inversion. condest - 1-norm condition number estimate. normest1 - 1-norm estimate. chol - Cholesky factorization. cholinc - Incomplete Cholesky factorization. lu - LU factorization. luinc - Incomplete LU factorization. qr - Orthogonal-triangular decomposition. lsqnonneg - Linear least squares with nonnegativity constraints. pinv - Pseudoinverse. lscov - Least squares with known covariance.
34

?
? ? ? ? ? ?

?
? ? ? ? ? ? ? ? ?

3.矩阵的函数
Eigenvalues and singular values. eig - Eigenvalues and eigenvectors. svd - Singular value decomposition. gsvd - Generalized singular value decomposition. eigs - A few eigenvalues. svds - A few singular values. poly - Characteristic polynomial. polyeig - Polynomial eigenvalue problem. condeig - Condition number with respect to eigenvalues. hess - Hessenberg form. qz - QZ factorization for generalized eigenvalues. schur - Schur decomposition.

?
? ? ? ?

35

?
? ? ? ? ? ? ? ? ?

3.矩阵的函数
Matrix functions. expm - Matrix exponential. logm - Matrix logarithm. sqrtm - Matrix square root. funm - Evaluate general matrix function. Factorization utilities qrdelete - Delete a column or row from QR factorization. qrinsert - Insert a column or row into QR factorization. rsf2csf - Real block diagonal form to complex diagonal form. cdf2rdf - Complex diagonal form to real block diagonal form. balance - Diagonal scaling to improve eigenvalue accuracy. planerot - Givens plane rotation. cholupdate - rank 1 update to Cholesky factorization. qrupdate - rank 1 update to QR factorization.
36

?
? ? ? ? ?

?
?
? ? ? ? ? ?

4.建立矩阵的函数
常用函数有:
eye(size(A)) 产生与A矩阵同阶的单位矩阵 zeros(m,n) 产生0矩阵 ones(m,n) 产生幺矩阵 rand (m,n) 产生随机元素的矩阵 Size(a) 返回包含两个元素的向量。 Length(a) 返回向量的长度。

37

常见矩阵生成函数
zeros(m,n) ones(m,n) eye(m,n) diag(X) tril(A) triu(A) rand(m,n) randn(m,n) 生成一个 m 行 n 列的零矩阵,m=n 时可简写为 zeros(n) 生成一个 m 行 n 列的元素全为 1 的矩阵, m=n 时可写为 ones(n) 生成一个主对角线全为 1 的 m 行 n 列矩阵, m=n 时可简写为 eye(n),即为 n 维单位矩阵 若 X 是矩阵,则 diag(X) 为 X 的主对角线向量 若 X 是向量,diag(X) 产生以 X 为主对角线的对角矩阵 提取一个矩阵的下三角部分 提取一个矩阵的上三角部分 产生 0~1 间均匀分布的随机矩阵 m=n 时简写为 rand(n) 产生均值为0,方差为1的标准正态分布随机矩阵 m=n 时简写为 randn(n)
38

其它特殊矩阵生成函数:magic、hilb、pascal

?
? ? ?

5.数组运算
(1) 数组的加和减 (2) 数组的乘和除 (3) 数组的乘方

39

6 应用举例
?

?
?

1、行列式计算; 2、求解线性方程组; 3、解特征值问题

40

Lecture 3 MATLAB图形与可视化 (Graphic)

41

Lecture 3
基本要求

Matlab图形可视化

(1)掌握图形窗口的创建与控制,以及图形窗口的基本操作; (2)熟练掌握二维和三维绘图基本的命令、线型控制; (3)初步掌握用特殊的图形来表现特殊数据的性质,如面积图、直方 图、饼图等。 (4)掌握坐标轴的控制和图形标注命令及其用法。

42

Lecture 3 Matlab图形可视化
A、二维平面图形与坐标系 1. 几个基本的绘图命令 a. 线性坐标曲线 plot 函数命令 plot 是 MATLAB 二维曲线绘图中最简单、最重 要、使用最广泛的一个线性绘图函数。它可以生成线段、 曲线和参数方程曲线的函数图形。 命令格式: ?plot(X,Y) ?plot(x1,y1,x2,y2,…):综合调用方式

43

Lecture 3 Matlab图形可视化
用命令 plot(x,y)绘制函数 y=cos(x)在两个周期内的图形。
x=0:0.01:2*pi; y=cos(x); plot(x,y)

在同一图形窗口中用命令 plot(x,y)绘出正弦余弦函数的图形。
x=0:0.01:2*pi; y=[sin(x);cos(x)]; plot(x,y)

44

Lecture 3

Matlab图形可视化

? 二维函数曲线专用命令 fplot
用plot绘图在确定自变量的取值间隔时,一般采用平均间隔,有时会因 某处 间距太大,而不能反映出函数的变化情况。fplot是绘制函数 y=f(x)图形的专用命令,它的数据点是自适应产生的,对那些导数变化较 大的函数,用 fplot 函数绘出的曲线比等分取点所画出的曲线更加接近 真实。 fplot 函数命令的调用格式为: [X,Y]=fplot(‘fun’,lims) ?fun:函数名字符串; ?lims:定义 x 的取值区间,lims=[xmin,xmax];

? 二维函数曲线专用命令

ezplot
45

Lecture 3

Matlab图形可视化

2.线型和颜色 plot 函数可以设置曲线的线段类型、定点标记和线段颜色。 常用的线段、颜色与定点标记参数

46

Lecture 3

Matlab图形可视化

调用格式:plot(x,y,s) ,s 为类型说明参数,是字符串。
?s 字符串可以是三种类型的符号之一,也可以是线型与颜色和定点标记 与颜色的组合; ?如果没有 s 参数,plot 将使用缺省设置(实线,前七种颜色顺序着色) 绘制曲线; ?在当前坐标系中绘图时,每调入一次绘图函数,MATLAB将擦掉坐标 系中已有的图形对象。可以用 hold on 命令在一个坐标系中增加新的图 形对象。注意MATLAB会根据新图形的大小,重新改变坐标系的比例。

用不同的线型和标注来绘制两条曲线。
t1=0:0.1:2*pi; t2=0:0.1:6; y1=sin(t1); y2=sqrt(t2); plot(t1,y1,':hb',t2,y2,'--g')
47

Lecture 3
3. 图形窗口的分割

Matlab图形可视化

有时需要在一个图形窗口中显示几幅图,以便对几个函数进行直观、 便捷的比较。由于每个绘图命令在绘制数据图像时都会将已有图形 覆盖掉,而用 hold 命令不能实现同时显示几个不同坐标尺寸下的图 形,用 figure 命令再创窗口又很难同时比较由不同的数据绘得的图 像。

实现在同一个窗口中同时显示多个图像的命令subplot。 使用格式为: subplot(m,n,i) 其含义为 :把图形窗口分割为 m 行 n 列子窗口,然后选 定第 i 个窗口为当前窗口。
subplot 命令不仅用于二维图形,对三维图形一样适用。其本质是将 figure 窗口分为几个区域,再在每个区域内分别绘图。
48

Lecture 3
subplot(2,2,1) t=0.1:0.1:2*pi; y=sin(t); semilogx(t,y) grid on subplot(2,2,2) t=0:0.1:4*pi; y=sin(t); plot(t,y) subplot(2,2,3) x=1:0.01:5; y=exp(x); plotyy(x,y,x,y,’semilogx’,’plot’) subplot(2,2,4) x=1:0.1:10; y=sqrt(x); plot(x,y,’:rd’)

Matlab图形可视化

用 subplot 函数把两种不同的图形综合在一个图形窗口中。

49

Lecture 3

Matlab图形可视化

4. 坐标系的调整 实现坐标系的调整的命令是 axis 函数。 调用格式为: axis([xmin,xmax,ymin,ymax,zmin,zmax])
坐标的最小值( xmin,ymin,zmin)必须小于相应的最大值 ( xmax,ymax,zmax),否则会出错。

自动坐标系与用 axis 函数调整后的坐标系的比较。
subplot(2,1,1) t=0:0.1:4*pi; y=sin(t); plot(t,y) subplot(2,1,2) t=0:0.1:4*pi; y=sin(t); plot(t,y) axis([0,max(t),min(y),max(y)])
50

Lecture 3
B、三维绘图 1. 三维曲线绘图命令

Matlab图形可视化

三维函数 plot3主要用来表现单参数的三维曲线,与二维绘图函数 plot 相比,只 多了第三维数据。 其调用格式为: plot3(X1,Y1,Z1,s1,X2,Y2,Z2,s2,…) 参数的含义如下: ?Xn、Yn、Zn:第一到三维数据,是尺寸相等的向量/矩阵; ?s、s1、s2:是字符串,用来设置线型、颜色、数据点标记。

51

Lecture 3

Matlab图形可视化

x、y、z 是向量时,plot3 命令的使用
t=0:0.1:8*pi; plot3(sin(t),cos(t),t) title(’绘制螺旋线’) %用命令 title 对图形主题进行标注 xlabel(’sin(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’) ylabel(’cos(t)’,’FontWeight’,’bold’,’FontAngle’,’italic’) zlabel(’t’,’FontWeight’,’bold’,’FontAngle’,’italic’) %命令 zlabel 用来指定 z 轴的数据名称 grid on

x、y、z 都是矩阵时,plot3 命令的使用
[X,Y]=meshgrid(-pi:0.1:pi); Z=sin(X)+cos(Y); plot3(X,Y,Z)
52

Lecture 3
2.三维曲面绘图命令

Matlab图形可视化

为了绘制定义在平面区域 D =[x0,xm]×[y0,yn ]上的三维曲面 z=f(x,y) ,首先将[x0,xm]在 x 方向分成 m 份,将[y0,yn]在 y 方 向分成 n 份,由各划点分别作平行于坐标轴的直线,将区域 D 分成 m×n 个小矩形;对于每个小矩形,计算出网格点的函数值,决定出空 间中四个顶点( xi,yi,f(xi,yi)),连接四个顶点得到一个空间的四 边形片;所有四边形片连在一起构成函数 z=f(x,y)定义在区域 D 上 的空间网格曲面。 因此,三维曲面绘图命令可分为平面网格点的生成、在平面网格基础 上绘制三维网格及对三维表面进行处理三个步骤。

53

Lecture 3
a.平面网格点的生成

Matlab图形可视化

函数命令meshgrid 用来生成 x-y 平面上的网格点矩阵。 调用形式为: [X,Y]=meshgrid(x,y) [X,Y]=meshgrid(x) 等价于[X,Y]=meshgrid(x,x) 参数含义如下: ?x:是区间[x0,xm]上分划的向量; ?y:是区间[y0,yn]上分划的向量; ?X,Y:输出变量矩阵,矩阵 X 的行向量都是向量 x,矩阵 Y 的列向 量都是向量 y。 函数 meshgrid 将由两个向量决定的区域转换为对应的网格点矩阵。

54

Lecture 3
? x2 ? y 2

Matlab图形可视化

函数z ? x ? e ,定义区域为[-2,2]×[-2,2]。生成网格 并计算其网格点上的函数值。
[X,Y] = meshgrid(-2:2:2, -2:2:2); [X,Y] %将划分结果输出至矩阵 ans = -2 0 2 -2 -2 -2 -2 0 2 0 0 0 -2 0 2 2 2 2 Z = X .* exp(-X.^2 - Y.^2); %计算网格点上的函数值赋予变量 Z Z= -0.0007 0 0.0007 -0.0366 0 0.0366 -0.0007 0 0.0007
55

Lecture 3
b.三维网格命令 mesh

Matlab图形可视化

利用函数mesh生成网格曲面。 调用格式为: ?mesh(X,Y,Z,C):X、Y、Z、C 是同维数的矩阵,X、Y、Z 对 应空间上的网格点,网格线颜色由C决定; ?mesh(X,Y,Z):相当于上面的 C=Z 的情况; ?mesh(x,y,Z,C):x 和 y 是向量,Z 和 C 是同维数的矩阵,网格 曲面的网格顶点是( x(j),y(i),Z(i,j)),网格线的颜色由矩阵 C 决 定; ?mesh(x,y,Z):相当于上面的 C=Z 的情况; ?mesh(Z,C):等价于 mesh(x,y,Z,C),此时向量x=1:n,向量 y=1:m; ?mesh(Z):相当于上面的 C=Z 的情况 ?mesh(...,’PropertyName’,PropertyValue,...):给函mesh设置曲面属性。
56

Lecture 3
[X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); mesh(Z)

Matlab图形可视化

用 mesh 命令绘制上例中的网格曲面。

与 mesh 相关的 另外两个函数是 meshc 和 meshz ,它们的调用形 式与 mesh 相同。

57

Lecture 3

Matlab图形可视化

c. 三维表面命令 surf 函数 surf 可实现对网格曲面片进行着色,将网格曲面转化 为实曲面。surf 命令的调用格式与 mesh 相同。
利用三维网格表面命令 surf 绘制图形。
z=peaks; %绘制山峰的图像,将函数值赋予变量z surf(z) %对山峰的图像进行着色处理 shading interp %函数 shading 改变着色方式

58

Lecture 3
3.等高线图形的绘制

Matlab图形可视化

4.三维视图可视效果的控制 5.柱面和球面的三维表达(<高数>书)

59

Lecture 3

Matlab图形可视化

a.柱面的表达cylinder
cylinder命令中,柱面的轴线定义为 z 轴,只要给出母线的描述就可完 成一个柱面。 调用格式为: ?[X,Y,Z] = cylinder(R,N); ?[X,Y,Z] = cylinder(R):缺省值 N=20; ?[X,Y,Z] = cylinder:缺省值 N=20,R=[1,1]。 R:是一描述柱面母线的向量; N:是旋转柱面上的分割线条数; [X,Y,Z] :是返回的x,y,z坐标向量。 绘制一个柱面。
t=pi:0.01:3*pi; r=sin(t)+t; cylinder(r,30) shading interp 60

Lecture 3

Matlab图形可视化

b.球面的表达sphere 调用格式为: ?[X,Y,Z]=sphere(N):产生一个( N+1)×( N+1)的矩阵, 然后用函数 surf 命令绘制一个单位的球面,N 为设置分割线 的条数; ?[X,Y,Z] = sphere:缺省 值 N = 20。
画一个球面。
[X,Y,Z]=sphere; surf(X,Y,Z)

61

Lecture 3

Matlab图形可视化

四、特殊图形绘制 为了将抽象的数据表达得更形象,除了绘制二维、三维图 形外,还要用到直方图、面积图、饼图等特殊图形。
特殊图形指令

62

Lecture 3

Matlab图形可视化

1.面积图命令 area 表现各个不同部分对整体所作的贡献 ?area(X,Y):与 plot 的命令的使用方法相似,将连线图 到 x 轴的那部分填上了颜色; ?area(Y):缺省值 X=1:SIZE(Y); ?area(X,Y,LEVEL)或 area(Y,LEVEL):填色部分为由连 线图到 y=level 的水平线之间的部分。 绘制一面积图
X=-2:2; Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1]; area(X',Y') legend('因素 1','因素 2','因素 3') grid on
63

Lecture 3

Matlab图形可视化

2.直方图命令 bar 直方图常用于统计数据的作图, 有bar、bar3、barh 和 bar3h几种函数,其调用格式类似。
以函数 bar 为例: ?bar(X,Y):X 是横坐标向量,Y 可以是向量或矩阵。Y 是向量时,每 一个元素对应一个竖条;Y 是 m 行 n 列矩阵时,将画出 m 组竖条, 每组包括 n 个竖条; ?bar(Y):横坐标使用缺省值 X=1:M; ?bar(X,Y,WIDTH) 或 bar(Y,WIDTH):用 WIDTH 指定竖条的宽度, 如果 WIDTH>1,条与条之间将重合。缺省宽度为 0.8; ?bar(...,’grouped’):产生缺省的组合直方图; ?bar(...,’stacked’):产生累积的直方图; ?bar(...,linespec):指定条的颜色; ?H = bar(...):返回条形图对象的句柄。 64

Lecture 3

Matlab图形可视化
subplot(2,2,4) barh(X,Y','stacked') xlabel('y');ylabel('\Sigma x') colormap(summer)

用绘制直方图的几种命令绘制直方图。
X=-2:2; Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1]; subplot(2,2,1) bar(X,Y','r') xlabel('x') ylabel('y') colormap(cool) subplot(2,2,2) barh(X,Y','grouped') xlabel('y') ylabel('x') colormap(cool) subplot(2,2,3) bar(X,Y','stacked') xlabel('x') ylabel('\Sigma y') colormap(summer)

65

Lecture 3
绘制三维直方图。

Matlab图形可视化
subplot(2,2,4) bar3h(X,Y’,’stacked’) zlabel(’x’) ylabel(’\Sigma y’) colormap(summer)

X=-2:2; Y=[3,5,2,4,1;5,4,2,3,5;3,4,5,2,1]; subplot(2,2,1) bar3(X,Y','r') zlabel('y') ylabel('x') colormap(cool) subplot(2,2,2) bar3h(X,Y','grouped') ylabel('x') zlabel('y') colormap(cool) subplot(2,2,3) bar3(X,Y','stacked') ylabel('x') zlabel('\Sigma y') colormap(summer)

66

Lecture 3

Matlab图形可视化

3.饼图命令 pie 饼图又叫扇形图,用于显示向量中元素所占向量元素总和 的百分比。 pie 和 pie3分别用于绘制二维和三维饼图。 调用格式: ?pie(X):向量 X 的饼图。把 X 的每一个元素在所有元 素总和中占的比例表达出来; ?pie(X,EXPLODE): 向 量 EXPLODE( 和 向 量 X长 度 相 等)用于指定饼图中抽出一部分的块(非零值对应的块); ?pie(...,LABELS):LABELS 是用于标注饼图的字符串数 组,其长度必须和向量 X相等; ?H = pie(...):返回包括饼图和文本对象句柄。
67

Lecture 3
x=[200,360,120,400,320]; subplot(2,2,1), pie(x,[0 0 0 1 0]) subplot(2,2,2), pie3(x,[0 0 0 1 0])

Matlab图形可视化

用函数 pie 和 pie3 绘制饼图。

subplot(2,2,3), pie(x(2:5))
subplot(2,2,4), x=[0.1,0.12,0.21,0.34,0.11]; pie3(x ,{'A','B','C','D','E'})
68

Lecture 3

Matlab图形可视化

五、极坐标、柱坐标和球坐标系下绘制图形 1.极坐标系下绘制图形 ploar是直接在极坐标系下绘图的命令 调用格式为: ploar(THETA, RHO,S) 其中 S 是字符串,用来控制图形的线型。
绘制半径为 2 的渐开线。
rhe=2; theta=0:pi/20:4*pi; rho=rhe+theta*rhe; polar(theta,rho,'r')

69

Lecture 3

Matlab图形可视化

六、坐标轴的调整和图形的标注 1.坐标轴调整命令

70

Lecture 3

Matlab图形可视化

2.图形标注 a.坐标轴和图形标题标注 ?标注坐标轴 x、y 和 z 的命令函数为 xlabel、ylabel 和 zlabel ,调用格式为: ?xlabel(’text’) ?xlabel(’text’,’Property1’,PropertyValue1,’Property2’,Prope rtyValue2,...) ?H = xlabel(...) 返回坐标轴标注的句柄。 其中,’text’是要添加的标注文本。’Property’是文本的 属性名,’PropertyValue’是属性值(所用字体、大小、标 注角度等)。 ?图形加标题的函数为 title,其调用格式与坐标轴标注类似。
71

Lecture 3

Matlab图形可视化

b. 图例的标注 legend命令实现不同图例的说明。其调用格式为: legend(string1,string2,string3, ...) legend(string1,string2,string3,...,Pos) 按顺序把字符串添加到相应的曲线线型符号之后;Pos对图 例的位置作出设置和调整: ?0 = 自动把图例置于最佳位置( 和图中曲线重复最少); ?1 = 置于图形窗口的右上角( 缺省值); ?2 = 置于图形窗口的左上角; ?3 = 置于图形窗口的左下角; ?4 = 置于图形窗口的右下角; ?-1 = 置于图形窗口的右侧( 外部)。
72

Lecture 3
3. 控制分格线

Matlab图形可视化

对二维和三维图形都适用。 有三种用法: ?grid on:打开分格线控制开关,以后绘制的图形都带 有分格线; ?grid off:关闭分格线控制开关,以后绘制的图形都不 带分格线; ?grid:用于实现分格线绘制切换。
73

Lecture 3

Matlab图形可视化

绘制图形,并用函数 xlabel、title 和 legend 命令进行标注。
t=0:0.1:4*pi; y=sin(t); y1=cos(t); plot(t,y,':',t,y1,'r*') xlabel('x 轴 (0--4\pi)','fontsize',12,'fontweight','bold') ylabel('y 轴','fontsize',12,'fontweight','bold') title('绘制正弦波和余弦波 Pos=1','fontsize',10,'fontweight','bold','fontangle','italic') text(pi,0,'\leftarrowsin(\pi)=0') text(pi,-1,'\leftarrowcos(\pi)=-1') text(pi/2,0.9,['\uparrowsin(\pi/2)=',num2str(sin(pi/2))]) text(0,-0.6,['绘图日期:',date]) text(0,-0.8,['MATLAB 版本:',version]) legend('正弦波','余弦波') figure(2) plot(t,y,':',t,y1,'r*') title('绘制正弦波和余弦波 Pos=0','fontsize',10,'fontweight','bold','fontangle','italic') legend('正弦波','余弦波',0) grid on figure(3) plot(t,y,':',t,y1,'r*') title('绘制正弦波和余弦波 Pos=-1','fontsize',10,'fontweight','bold','fontangle','italic')

74

Lecture 3

Matlab图形可视化

text(7*pi/2,0,'\rightarrowcos(\pi*7/2)=0') legend('正弦波','余弦波',-1) grid off

75

Lecture 4
MATLAB符号运算 (Symbolic)

76

MATLAB

Matlab 符号运算
77

Matlab 符号运算介绍
? Matlab 符号运算是通过符号数学工具箱(Symbolic Math Toolbox)来实现的。Matlab 符号数学工具箱是建 立在功能强大的 Maple 软件的基础上的,当 Matlab 进 行符号运算时,它就请求 Maple 软件去计算并将结果返 回给 Matlab。 ? Matlab 的符号数学工具箱可以完成几乎所有得符号运算 功能。主要包括:符号表达式的运算,符号表达式的复合、 化简,符号矩阵的运算,符号微积分、符号作图,符号代 数方程求解,符号微分方程求解等。此外,该工具箱还支 持可变精度运算,即支持以指定的精度返回结果。
78

Matlab 符号运算特点
? 计算以推理方式进行,因此不受计算误差累积所带来的 困扰。

? 符号计算可以给出完全正确的封闭解,或任意精度的数
值解(封闭解不存在时)。
? 符号计算指令的调用比较简单,与数学教科书上的公式 相近。 ? 符号计算所需的运行时间相对较长。

79

Matlab 符号运算举例
? 求一元二次方程 ax2 + bx + c = 0 的根 >> solve('a*x^2+b*x+c=0') ? 求的根 f (x) = (cos x)2 的一次导数 >> x=sym('x'); >> diff(cos(x)^2) ? 计算 f (x) = x2 在区间 [a, b] 上的定积分

>> syms a b x; >> int(x^2,a,b)
80

符号对象与符号表达式
? 在进行符号运算时,必须先定义基本的符号对象,可以是 符号常量、符号变量、符号表达式等。符号对象是一种数据 结构。 ? 含有符号对象的表达式称为符号表达式,Matlab 在内部 把符号表达式表示成字符串,以与数字变量或运算相区别。 ? 符号矩阵/数组:元素为符号表达式的矩阵/数组。

81

符号对象的建立
? 符号对象的建立:sym 和 syms
? sym 函数用来建立单个符号变量,一般调用格式为:
符号变量 = sym(A) 参数 A 可以是一个数或数值矩阵,也可以是字符串

例: >> a=sym('a')
>> b=sym(1/3)

a 是符号变量 b 是符号常量 C 是符号矩阵
82

>> C=sym('[1 ab; c d]')

符号对象的建立
? 符号对象的建立:sym 和 syms
? syms 命令用来建立多个符号变量,一般调用格式为:

syms 符号变量1 符号变量2 ... 符号变量n
例: >> syms a b c
>> a=sym('a'); >> b=sym('b'); >> c=sym('c');

83

符号表达式的建立
? 符号表达式的建立:
建立符号表达式通常有以下2种方法: (1) 用 sym 函数直接建立符号表达式。 (2) 使用已经定义的符号变量组成符号表达式。

例: >> y=sym('sin(x)+cos(x)')
>> x=sym('x'); >> y=sin(x)+cos(x) >> syms x; >> y=sin(x)+cos(x)
84

符号对象的基本运算
Matlab 符号运算采用的运算符和基本函数,在形状、名称 和使用上,都与数值计算中的运算符和基本函数完全相同

? 基本运算符
? 普通运算:+ ? 数组运算:.* ? 矩阵转置:'

-

* \ / ^ .\ ./ .^

.'

例:>> X=sym('[x11,x12;x21,x22;x31,x32]');
>> Y=sym('[y11,y12,y13;y21,y22,y23]'); >> Z1=X*Y; Z2=X'.*Y;
85

符号对象的基本运算
? 基本函数
三角函数与反三角函数、指数函数、对数函数等

sin、cos、tan、cot、sec、csc、… asin、acos、atan、acot、asec、acsc 、…

exp、log、log2、log10、sqrt abs、conj、real、imag
rank、det、inv、eig、lu、qr、svd

diag、triu、tril、expm

86

查找符号变量
? 查找符号表达式中的符号变量
findsym(expr)
按字母顺序列出符号表达式 expr 中的所有符号变量

findsym(expr, N) 按顺序列出 expr 中离 x 最近的 N 个符号变量
若表达式中有两个符号变量与 x 的距离相等, 则ASCII 码大者优先。

常量 pi, i, j 不作为符号变量
87

findsym 举例
例: >> f=sym('2*w-3*y+z^2+5*a')
>> findsym(f) >> findsym(f,3) >> findsym(f,1)

88

符号表达式的替换
? 用给定的数据替换符号表达式中的指定的符号变量
subs(f,x,a) 用 a 替换字符函数 f 中的字符变量 x a 是可以是 数/数值变量/表达式 或 字符变量/表达式
若 x 是一个由多个字符变量组成的数组或矩阵, 则 a 应该具有与 x 相同的形状的数组或矩阵。

89

? 例:指出下面各条语句的输出结 subs 举例 f=2*u >> 果 f=sym('2*u');
>> subs(f,'u',2) >> f2=subs(f,'u','u+2') >> a=3; >> subs(f2,'u',a+2) >> subs(f2,'u','a+2') >> syms x y >> f3=subs(f,'u',x+y) >> subs(f3,[x,y],[1,2])
ans=4

f2=2*(u+2)
ans=14 ans=2*((a+2)+2 ) f3=2*x+2*y ans=6

90

符号矩阵
? 使用 sym 函数直接生成 >> A=sym('[1+x, sin(x); 5, exp(x)]') ? 将数值矩阵转化成符号矩阵 >> B=[2/3, sqrt(2); 5.2, log(3)]; >> C=sym(B) ? 符号矩阵中元素的引用和修改 >> A=sym('[1+x, sin(x); 5, exp(x)]'); >> A(1,2) % 引用 >> A(2,2)=sym('cos(x)') % 重新赋值

91

六类常见符号运算
? 因式分解、展开、合并、简化及通分等 ? 计算极限 ? 计算导数 ? 计算积分 ? 符号求和 ? 代数方程和微分方程求解
92

因式分解
? 因式分解
factor(f)
>> syms x; f=x^6+1; >> factor(f)

? factor 也可用于正整数的分解
>> s=factor(100) >> factor(sym('12345678901234567890'))
? 大整数的分解要转化成符号常量
93

函数展开
? 函数展开
expand(f)

? 多项式展开
>> syms x; f=(x+1)^6; >> expand(f)

? 三角函数展开
>> syms x y; f=sin(x+y); >> expand(f)
94

合并同类项
? 合并同类项
collect(f,v): 按指定变量 v 进行合并 collect(f): 按默认变量进行合并
>> syms x y; >> f= x^2*y + y*x - x^2 + 2*x ; >> collect(f) >> collect(f,y)

95

函数简化
? 函数简化
y=simple(f): 对 f 尝试多种不同的算法进行
简化,返回其中最简短的形式

[How,y]=simple(f): y 为 f 的最简短形式
,How 中记录的为简化过程中使用的方法。

f
2*cos(x)^2sin(x)^2
(x+1)*x*(x-1)

R

HOW

3*cos(x)^2-1 simplify
x^3-x combine(tri g)

96

函数简化
? 函数简化
y=simplify(f): 对 f 进行简化
>> syms x; f=sin(x)^2 + cos(x)^2 ; >> simplify(f) >> syms c alpha beta; >> f=exp(c*log(sqrt(alpha+beta))); >> simplify(f)

97

函数简化举例
例:简化 f ( x ) ? 3 13 ? 62 ? 12 ? 8 x x x
>> syms x; >> f=(1/x^3+6/x^2+12/x+8)^(1/3); >> y1=simplify(f) >> g1=simple(f) >> g2=simple(g1)

? 多次使用 simple 可以达到最简表达。
98

分式通分
? 函数简化
[N,D]=numden(f):
N 为通分后的分子,D 为通分后的分母 >> syms x y; >> f=x/y+y/x; >> [N,D]=numden(f) >> [n,d]=numden(sym(112/1024))

99

horner 多项式
? horner 多项式:嵌套形式的多项式 例: f ( x) ? x n ? x n?1 ? ? ? x ? 1

? x(? x( x( x ? 1) ? 1)?) ? 1
>> syms x; >> f=x^4+2*x^3+4*x^2+x+1; >> g=horner(f)

100

计算极限
limit(f,x,a): 计算 lim f ( x ) x?a limit(f,a): 当默认变量趋向于 a 时的极限 limit(f): 计算 a=0 时的极限 limit(f,x,a,'right'): 计算右极限 limit(f,x,a,'left'): 计算左极限
ln( x ? h ) ? ln( x ) 例:计算L ? lim h?0 h

? x? M , ?1 ? ? ? lim n ?? ? n?

n

>> syms x h n; >> L=limit((log(x+h)-log(x))/h,h,0) >> M=limit((1-x/n)^n,n,inf)

101

计算导数
? diff g=diff(f,v):求符号表达式 f 关于 v 的导数 g=diff(f):求符号表达式 f 关于默认变量的导数 g=diff(f,v,n):求 f 关于 v 的 n 阶导数
>> syms x; >> f=sin(x)+3*x^2; >> g=diff(f,x)

102

计算积分
int(f,v,a,b): 计算定积分

?

b

a

f ( v )dv

int(f,a,b): 计算关于默认变量的定积分

int(f,v): 计算不定积分
x2 ? 1 例:计算I ? ? 2 dx 2 ( x ? 2 x ? 2)

? f (v )dv
和 K??
?? 0

int(f): 计算关于默认变量的不定积分

e

? x2

dx

>> syms x; f=(x^2+1)/(x^2-2*x+2)^2; >> I=int(f,x) >> K=int(exp(-x^2),x,0,inf)

103

符号求和
symsum(f,v,a,b): 求和
?

? f (v )
v ?a

b

symsum(f,a,b): 关于默认变量求和
1 例:计算级数 S ? ? 2 及其前100项的部分和 n ?1 n >> syms n; f=1/n^2; >> S=symsum(f,n,1,inf) >> S100=symsum(f,n,1,100) ? x 例:计算函数级数? ? 2 S n ?1 n
>> syms n x; f=x/n^2; >> S=symsum(f,n,1,inf)
104

代数方程求解
solve(f,v):求方程关于指定自变量的解,f 可以是
用字符串表示的方程、符号表达式或符号方程; ? solve 也可解方程组(包含非线性); ? 得不到解析解时,给出数值解。

105

微分方程求解
? dsolve
y=dsolve('eq1','eq2', ... ,'cond1','cond2', ... ,'v') 其中 y 为输出的解, eq1、eq2、. . . 为微分方程, cond1、cond2、...为初值条件, v 为自变量

dy ? x2 例 1:求微分方程 的通解,并验证。 ? 2 xy ? xe dx
>> y=dsolve('Dy+2*x*y=x*exp(-x^2)','x') >> syms x; diff(y)+2*x*y - x*exp(-x^2)

106

微分方程求解
? 几点说明
? 微分方程中用 D 表示对 自变量 的导数,如: Dy y'; D2y y''; D3y y'''

? 如果省略初值条件,则表示求通解; ? 如果省略自变量,则默认自变量为
dsolve('Dy=2*x','x'); dsolve('Dy=2*x');

t

% dy/dx = 2x % dy/dt = 2x

? 若找不到解析解,则返回其积分形式。
107

微分方程求解
例 2:求微分方程 xy '? y ? e x ? 0 满足初值条件
y(1) ? 2e 的特解,并画出解函数的图形。
>> y=dsolve('x*Dy+y-exp(x)=0', ... 'y(1)=2*exp(1)', 'x') >> ezplot(y);

108

微分方程求解
? dx ? 5x ? y ? e t ? dt ? x |t ?0 ? 1 ? 例3:求微分方程组 ? 在初值条件 ? dy ? y |t ?0 ? 0 ? ? x ? 3y ? 0 ? dt ?
下的特解,并画出解函数的图形。
[x,y]=dsolve('Dx+5*x+y=exp(t)','Dy-x-3*y=0', ... 'x(0)=1', 'y(0)=0', 't') ezplot(x,y,[0,1.3]);

注:解微分方程组时,如果所给的输出个数与方程个数相同, 则方程组的解 按词典顺序 输出。
109

其它运算
? 反函数
finverse(f,v):求 f 关于指定变量 v 的反函数 finverse(f):求 f 关于默认变量的反函数

例:计算函数 ? x 2 ? 2t f
>> syms x t; f=x^2+2*t; >> g1=finverse(f,x) >> g2=finverse(f,t)

的反函数

110

Lecture 5
MATLAB程序设计

111

Lecture5 Matlab语言程序设计
? 基本要求:
(1)学会 Matlab 的M文件的编写方法,包括命令文件和函数文件。了 解M件的调试命令和调试方法; (2) 熟练掌握 Matlab 的程序结构(顺序结构、循环结构和分支结构) 与流程控制语句 .

? Outline
? ? ? ? ? M-file(M文件); 数据的输入和输出; 程序设计; 函数文件; 全局变量和局部变量
112

MATLAB有两种工作方式:

?

? 交互式的命令行工作方式
? M文件的程序工作方式

113

一. M文件

114

一. M文件

用MATLAB语言编写的程序,称为M文件。 M文件有两类:命令文件和函数文件。
命令文件:没有输入参数,也不返回输出参数。 函数文件:可以输入参数,也可返回输出参数。

115

一. M文件

1.M文件的建立与编辑
? ?

建立新的M文件:

从MATLAB命令窗口的File菜单中选择New菜 单项,再选择M-file命令。

编辑已有的M文件:
从MATLAB命令窗口的Flie菜单中选择Open M-file命令。
116

一. M文件

2.命令文件
将需要运行的命令编辑到一个命令文件中,然后在 MATLAB命令窗口输入该命令文件的名字,就会顺序执 行命令文件中的命令。
? ? ?
? ? ? ? ?

【例1】 建立一个命令文件将变量a,b的值互换。
a=1:9; b=[11,12,13;14,15,16;17,18,19]; c=a;a=b;b=c; a b 在MATLAB的命令窗口中输入e31,将会执行该命令文件。
117

二.数据的输入输出

118

二.数据的输入输出

?
? ? ? ?

1. input函数:用于向计算机输入一个参数。
调用格式: A=input(提示信息,选项); 注:‘s’选项,则允许用户输入一个字符串。 例如想输入一个人的姓名,可采用命令 xm=input('What''s your name:','s') 【例2】 求一元二次方程a2 +bx+c=0的根。

?
?
? ? ? ? ?

a=input('a=?'); b=input('b=?'); c=input('c=?'); d=b*b-4*a*c; x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)] 将该程序以aa.m文件存盘,然后运行aa.m文件。
119

二.数据的输入输出

?
?

2. pause函数:暂停程序的执行。

调用格式: pause(延迟秒数) ? 注:如果省略延迟时间,直接使用pause,则将暂停程序,直到用 户按任一键后程序继续执行。

?
? ? ? ?

3. disp函数:命令窗口输出函数。
调用格式: disp(输出项) 注:输出项为字符串或矩阵。 例如 A='Hello,MATLAB'; disp(A) 输出为: Hello,MATLAB

?
?

120

三.程序设计

121

三.程序设计
1、程序结构与流程控制语句 a) 顺序结构

122

三.程序设计
b) 条件结构



if- else- end 语句
123

三.程序设计
绘出函数
>> x=-3:0.1:3; >> if x>=1 y=2*x.^2+1; plot(x,y) elseif -1<x<1 y=5; plot(x,y) else y=-x.^3; plot(x,y) end

?2 x 2 ? 1 x ?1 ? y ?? ?0 ?1 ? x ? 1 的图像。 ? ? x3 x ?1 ?

折扣问题
>> book=20; >> number=40; >> sums=0.0; >> if number>=30 sums=book*number*0.7; end >> sums sums = 560

124

三.程序设计

switch语句
125

三.程序设计

(一)选择结构
?

选择结构的语句有if语句和switch语句。

?
? ? ?

1. if语句
格式一: if 条件 语句组 end

? ? ? ? ?

格式二: if 条件 语句组1 else 语句组2 end
126

三.程序设计
(一)选择结构

? ?

?
? ? ? ? ? ? ?

格式三: if 条件1 语句组1 elseif 条件2 语句组2 …… elseif 条件m 语句组m else 语句组m+1 end
127

三.程序设计
(一)选择结构

【例4】 输入三角形的三条边,求面积。
? ? ? ? ? ? ? ?

A=input('请输入三角形的三条边:'); if A(1)+A(2)>A(3) & A(1)+A(3)>A(2) & A(2)+A(3)>A(1) p=(A(1)+A(2)+A(3))/2; s=sqrt(p*(p-A(1))*(p-A(2))*(p-A(3))); disp(s); else disp('不能构成一个三角形。') end

? ?

运行:

请输入三角形的三条边:[4 5 6] 9.9216
128

三.程序设计
(一)选择结构

【例5】 输入一个字符,若为大写字母,则输出其后继 字符,若为小写字母,则输出其前导字符,若为其他字 符则原样输出。
? ? ? ? ? ? ?

?

c=input('','s'); if c>='A' & c<='Z' disp(setstr(abs(c)+1)); elseif c>='a'& c<='z' disp(setstr(abs(c)-1)); else disp(c); end
129

三.程序设计
(一)选择结构

2 switch语句
?

switch语句根据变量或 表达式的取值不同, 分 别 执 行 不同 的 语 句 。 其格式为:
switch 表达式 case 值1 语句组1 case 值2

语句组2

? ? ?

?

…… case 值m 语句组m otherwise 语句组m+1 end

130

三.程序设计
(一)选择结构

【例6】 根据变量 num 的值来决定显示的内容。
?
? ? ? ?

num=input('请输入一个数');

?
? ? ? ? ?

switch num case -1 disp('I am a teacher.'); case 0 disp('I am a student.'); case 1 disp('You are a teacher.'); otherwise disp('You are a student.'); end
131

三.程序设计
多项选择
>> No=input('Please input your choice! '); Please input your choice! 1 >> switch No case 0 disp('return to main menu'); case 1 disp('She is a girl'); case 2 disp('He is a boy'); otherwise disp('I can''t determine') end She is a girl

132

三.程序设计
c) 循环结构 while 语句:

for语句:
for 变量=初值:增量:结束值 程序模块; end
133

三.程序设计
举例:
>> sum=0; >> i=0; >> while(i<=100) sum=sum+1; i=i+1; end >> sum sum = 14196774 >> for I=1:10 A(I)=1/(I+1) ; end >> A A= Columns 1 through 7 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 Columns 8 through 10 0.1111 0.1000 0.0909

134

三.程序设计
d) 其它与流程控制有关的语句

if

if

break语句循环结构

continue 语句循环结构135

三.程序设计

(二)循环结构
?

实现循环结构的语句:for语句和while语句。

?
? ? ? ?

1. for语句:
格式: for 循环变量=表达式1:表达式2:表达式3 循环体语句 end 注:其中表达式1的值为循环变量的初值,表达式2的值为步长, 表达式3的值为循环变量的终值。步长为1时,表达式2可以省略。

136

三.程序设计
(二)循环结构
?
? ? ? ? ? ? ?

2. while语句
格式为: while (条件) 循环体语句 end 【例7】 根据例3.6中求y的表达式,求: (1)y<3时的最大n值。 (2)与(1)的n值对应的y值。

137

三.程序设计
(二)循环结构

求y的表达式
? ?

? ? ? ? ? ? ? ?

?

y=0; i=1; while 1 %循环的条件为1,即循环条件总是满足的,这是 一个永真循环 f=1/(2*i-1); y=y+f; if y>3 break; end i=i+1; end n=i-1 y=y-f
138

三.程序设计
(二)循环结构

3. 循环的嵌套
如果一个循环结构的循环体又包括一个循环结构,就 称为循环的嵌套,或称为多重循环结构。
?

多重循环的嵌套层数可以是任意的。可以按照嵌套层 数,分别叫做二重循环、三重循环等。处于内部的循环 叫作内循环,处于外部的循环叫作外循环。
?

139

三.程序设计
(二)循环结构

【例8】 求[100,1000]以内的全部素数。
?
? ? ?

n=0;
for m=100:1000 flag=1; j=m-1; i=2; while i<=j & flag if rem(m,i)==0 flag=0; end

?
? ? ?

?

i=i+1; end if flag n=n+1; prime(n)=m; end end prime %变量prime存放素数

140

三.程序设计
pause 指令使程序运行停止,等待用户按任意键继续; input 指令提示用户从键盘输入数值、字符串或表达 式,并接受输入; disp指令在屏幕上显示字符串; echo on指令显示其后所有执行文件的指令;

echo off指令关闭其后所有执行文件的指令显示。

141

四.函数文件

142

四. 函数文件 ? 函数文件是另一种形式的M文件,每一个函数文件都 定义一个函数。事实上,MATLAB提供的标准函数大部 分都是由函数文件定义的。

1.函数文件格式
? ? ? ? ?

函数文件由function语句引导,其格式为: function 输出形参表=函数名(输入形参表) 注释说明部分 函数体 注:其中函数名的命名规则与变量名相同。输入形参为函数的输 入参数,输出形参为函数的输出参数。当输出形参多于1个时, 则应该用方括号括起来。

143

四. 函数文件

【例9】 编写函数文件求小于任意自然数n的 Fibonacci数列各项。
? ? ? ? ? ? ? ?

?
?

function f=ffib(n) %用于求Fibonacci数列的函数文件 %f=ffib(n) %1999年9月30日编 f=[1,1]; i=1; while f(i)+f(i+1)<n f(i+2)=f(i)+f(i+1); i=i+1; end

将以上函数文件以 文件名ffib.m存盘, 然 后 在 MATLAB 命 令窗口输入以下命 令,可求小于2 000 的Fibonacci数。 ffib(2000)

144

四. 函数文件

2.函数调用
?

?

函数文件编制好后,就可调用函数进行计 算了。如上面定义ffib函数后,调用它求小于 2000的Fibonacci数。 函数调用的一般格式是:

?

[输出实参表]=函数名(输入实参表)

145

四. 函数文件

【例10】 利用函数文件,实现直角坐标(x,y)与 极坐标(γ,θ)之间的转换。
已知转换公式为:
极坐标的矢径: γ= 极坐标的幅角: θ=
? ? ? ? ? ? ? ?

?
?

函数文件tran.m: function [gama,theta]=tran(x,y) gama=sqrt(x*x+y*y); theta=atan(y/x); 调用tran.m的命令文件main1.m: x=input('Please input x=:'); y=input('Please input y=:'); [gam,the]=tran(x,y); gam the

146

四. 函数文件

【例11】 利用函数的递归调用,求n!。
? ? ? ?

?
? ? ?

?
? ? ?

function f=factor(n) if n<=1 程序运行结果是: f=1; fac = else Columns 1 through 6 1 2 6 24 f=factor(n-1)*n; 120 720 Columns 7 end through 10 return; %返回 504 40320 362880 在命令文件main2.m中调用函数文件factor.m: 3628800 for i=1:10 fac(i)=factor(i); end fac
147

四. 函数文件

3 .函数所传递参数的可调性
MATLAB在函数调用上有一个与众不同之处:函数所传 递参数数目的可调性。凭借这一点,一个函数可完成多 种功能。
?

在调用函数时,MATLAB用两个永久变量nargin和 nargout分别记录调用该函数时的输入实参和输出实参的 个数。只要在函数文件中包含这两个变量,就可以准确 地知道该函数文件被调用时的输入输出参数个数,从而 决定函数如何进行处理。
?

148

四. 函数文件

【例12】 nargin用法示例
? ?
?

函数文件examp.m:

?
? ? ? ? ?

命令文件mydemo.m: x=[1:3];y=[1;2;3]; function fout=charray(a,b,c) examp(x) if nargin==1 examp(x,y') fout=a; examp(x,y,3) elseif nargin==2
fout=a+b; elseif nargin==3 fout=(a*b*c)/2; end

执行mydemo.m后的输出是:
ans = 1 2 ans = 2 4 ans = 21 3 6

149

五.全局变量和局部变量

150

四. 函数文件

在MATLAB中,全局变量用命令global定义。函数文件的 内部变量是局部的,与其他函数文件及MATLAB工作空间相 互隔离。但是,如果在若干函数中,都把某一变量定义为全 局变量,那么这些函数将公用这一个变量。全局变量的作用 域是整个MATLAB工作空间,即全程有效。所有的函数都可 以对它进行存取和修改。因此,定义全局变量是函数间传递 信息的一种手段。
?

151

四. 函数文件 【例13】 全局变量应用示例

先建立函数文件wadd.m,该函数 将输入的参数加权相加。 function f=wadd(x,y) %add two variable global ALPHA BETA f=ALPHA*x+BETA*y;

在命令窗口中输入: global ALPHA BETA ALPHA=1; BETA=2; s=wadd(1,2) 输出为: s= 5

152

Lecture 6
Linear Algebra with MATLAB

线性变换及其特征 (MATLAB)
153

? Linear Algebra with Applications using MATLAB
?

?

?

线性代数很抽象吗? 你应该感到它的概念都以形象作基础。 线性代数很冗繁吗? 你应该懂得它的计算全有简明的程序。 线性代数很枯燥吗? 你应该发现它的应用极其精彩而广泛。 通过的主要方法是利用软件工具的空间绘图能力、快 捷计算能力和大量工程问题的解,建立学习线性代数 的目标和热情。
154

Lecture 6

Linear Algebra with MATLAB
1 平面上线性变换的几何意义 2 二维矩阵特征值的几何意义

155

1 平面上线性变换的几何意义
?

例1 设x为二维平面上第一象限中的一个单位方块,其四 个顶点的数据可写成

?0 1 1 0? x?? 0 0 1 1? ? ?
把不同的A矩阵作用于此组数据,可以得到多种多样的结 果yi=Ai*x。用程序实现变换计算,并画出x及yi图形:
x?[0,1,1,0;0,0,1,1]; subplot(2,3,1), fill([x(1,:),0],[x(2,:),0],'r') A1?[?1,0;0,1], y1?A1*x subplot(2,3,2), fill([y1(1,:),0],[y1(2,:),0],'g') …
156

157

几种变换的行列式与特征值
D1 ? det( A1) ? ?1, ?1 ? ? ? 1 1 ?, ? 1 p1 ? ? ? 0 0? 1? ? 1? 0? ? ? 0 D 2 ? det( A2) ? 1.5, ? 2 ? ? 1.0 1.5 ? , p 2 ? ? ? 1 ?0 1? D3 ? det( A3) ? 0.2, ? 3 ? ? 0.2 1.0 ? , p3 ? ? 1 0? ? ?

? 1.0 ? 1.0 ? D 4 ? det( A4) ? 1, ? 4 ? ? 1 1 ? , p4 ? ? 0. ? ? 0. ? 0.7071 ? 0.7071 ? D5 ? 1, ? 5 ? ? 0.866 + 0.5i 0.866 ? 0.5i ? , p5 ? ? 0 ? 0.7071i 0 + 0.7071i ? ? ?
158

看出的基本关系
?

可以看出,矩阵A1使原图对纵轴生成镜像,矩阵 A2使原图在横轴方向膨胀,矩阵A3使原图在纵轴 方向压缩,矩阵A4使原图向右方剪切变形,矩阵 A5使原图沿反时针方向旋转t?pi/6。分别计算出 这五个矩阵的行列式和特征值;

?

对二维空间(平面),一个变换所造成的图形的 面积变化,取决于该变换的行列式。A1,A4和A5 的行列式绝对值都是1,所以它们不会使变换后图 形的面积发生改变。而A2和A3的行列式分别为 1.5和0.2, 159

2
?

二维矩阵特征值的几何意义

二维矩阵的特征值表示该变换在原图形的特征向量的 方向上的放大量。 ?1 ? 例如矩阵A1在第一特征向量 p1(:,1) ? ?0? 方向的特征 ? ? 值为 ?1(1) ? ?1 ,即横轴
正方向的增益为?1,其结果是把原图中横轴正方向的 部分变换到新图的负方向去了; ?0 ? A1在第二特征向量 p1(:, 2) ? ? ? 的方向的特征值为 ?1 ? λ 1(2)=1, 即纵轴正方向的增益为1,因而保持了新图和原图在纵 轴方向尺度不变。
160

用eigshow函数看特征值
?

对于比较复杂的情况,完全凭简单的几何关系去想像是困 难的,应当用eigshow函数,联系x和Ax的向量图来思考。 键入eigshow(A4) 。绿色的x表示原坐标系中的单位向量, 可以用鼠标左键点住x并拖动它围绕原点转动。图中同时出 现以蓝色表示的Ax向量,它表示变换后的新向量。当两个 向量处在同一条直线上时(包括同向和反向),表示两者 相位相同,只存在一个(可正可负的)实数乘子λ, Ax?λx
161

?

?

Eigshow(A4)产生的图形

162

eigshow([1,2; 2,2])的图形

163

A是对称实矩阵的情况
?

特别要注意A是对称实矩阵的情况,所谓对称矩阵是满 足AT?A的矩阵。
对2?2矩阵,只要求A(1,2)?A(2,1)。例如令, A=[1,2;2,2] 再键入eigshow(A), 这时的特点是:Ax?λx出现在Ax椭圆轨迹的主轴上,所 以两个特征值分别对应于单位圆映射的椭圆轨迹的长 轴和短轴。此时A的特征值为 -0.5616和 3.5616,可 以和图形对照起来看。 (注意:对称实矩阵,一般矩阵也是这个意义吗? why?)
164

?

?

?

例:斜体字的生成(wzs091224.m)
?

数据矩阵

0? ? 0 0.50 0.50 6.00 6.00 5.50 5.50 x?? 0 0 6.42 0 8.00 8.00 1.58 8.00 ? ? ?

表示英文大写空心字母N的各个节点 (1)用plot语句在子图1中画出其形状; (2)取

?1 0.25? A?? ?作为变换矩阵对x进行变换, 1 ? ?0

并在子图2中画出其图形; 画图的要点是要在给定的数据右方,补上第一点的坐 标,使画出的图形封闭。
165

程序与图形结果
x0?[0,0.5,0.5,6,6,5.5,5.5,0;0,0,6.42,0,8,8,1.58,8]; x?[x0,x0(:,1)]; % 把首顶点坐标补到末顶点后 A?[1,0.25;0,1]; y?A*x; subplot(1,2,1),plot(x(1,:),x(2,:)) subplot(1,2,2),plot(y(1,:),y(2,:)) 画出的两个图形如右:

166

?

线性代数模型举例 (略)

167

1
?

刚体平面运动描述

设三角形的三个顶点坐标为(?1,1),(1,1),(0,2),今要 使它旋转30度,右移2,上移3,以试设计变换矩阵A, 并画出变换前后的图形。 ? 解:程序的要点是: 1。列出三角形的数据矩阵 2。扩展为齐次坐标(第三行加1) 3。平移和转动变换矩阵也 要用三维的变换矩阵 4。按变换次序左乘 5。绘图
168

2 空间线性变换的几何意义
?

三维空间线性变换最直接的几何意义和应用价值可以从飞 行器的三维转动坐标中得到解释。飞行器在空中可以围绕 三个轴旋转。假如它在向北飞行,机头正对北方,则它围 绕铅垂轴的旋转角称为偏航角(Yaw),它描述了飞机左 右的偏转,用u表示;围绕翼展轴的旋转角称为倾斜角 (Pitch),它描述了飞机俯仰姿态,用v表示;围绕机身 轴的旋转角称为滚动角(Roll),用w表示;u,v和w三个 变量统称为欧拉角,它们完全地描述了飞机的姿态。

169

演示程序quatdemo

170

演示画面的说明
?

画面中。左方为飞行器在三维空间中的模型,其中红色的 是飞行器。右上方为三个姿态角u,v,w的设定标尺和显示 窗,右下方为在地面坐标系中的另外的三个姿态角:方位 角、俯仰角和倾侧角。左下方还有【静态】和【动态】两 个复选钮,我们只介绍【静态】,读者可自行试用【动态】 进行演示。 用键入参数或移动标尺的方法分别给u,v,w赋值并回车后, 就可以得出相应的飞行器姿态,同时出现一根蓝色的线表 示合成旋转的转轴。
171

?

程序的实现方法
?

把飞行器的三维图像用N个顶点描述,写成一个3?N的数 据矩阵G。用plot3命令时按顶点连线能绘制出飞行器的外 观。例如以下的程序ag904a即可画出一个最简单的飞行器 立体图。
Gw=[?4,?3,0;4,?3,0;0,7,0;?4,?3,0]'; % 主翼的顶点坐标 Gt=[0,?3,0;0,?3,3;0,2,0;0,?3,0]'; % 尾翼的顶点坐标 G=[Gw,Gt] % 整个飞行器外形的数据集 plot3(Gw(1,:),Gw(2,:),Gw(3,:),'r'),hold on plot3(Gt(1,:),Gt(2,:),Gt(3,:),'g'), axis equal

? ?4 G ? ? ?3 ? ? 0 ?

4 ?3 0

0 7 0

?4 ?3 0

0 ?3 0

0 ?3 3

0 2 0

0? ?3? ? 0? ?
172

围绕各个轴的旋转变换矩阵
?

飞行器围绕各个轴的旋转 的结果,表现为各个顶点 坐标发生变化,也就是G 的变化。只要把三种姿态 的变换矩阵Y,P和R乘以图 形数据矩阵G即可。其中

0? ? cos(u) sin(u) Y ? ? ?sin(u) cos(u) 0? ? ? ? 0 0 1? ? ? 0 0 ? 1 ? R ? ? 0 cos(w) ? sin(w) ? ? ? ? 0 sin(w) cos(w) ? ? ?

? cos(v) P?? 0 ? ? sin(v) ?

0 ? sin(v) ? 1 0 ? ? 0 cos(v) ? ?
173

综合旋转的变换矩阵
?

?

单独变化某个姿态角所生成的图形由G1?Y*G,G2?P*G, G3?R*G算出,如果同时变化三个姿态角,则最后的图像数 据成为Gf?Y*P*R*G?Q*G。这里假定转动的次序为:先滚 动R,再倾斜P,最后偏航Y,由于矩阵乘法不服从交换律, 转动次序不同时结果也不同。 用MATLAB实现的程序ag904b如下:
syms u w v Y=[cos(u),sin(u),0;?sin(u cos(u),0;0,0,1)] R=[1,0,0;0,cos(w),?sin(w);0,sin(w),cos(w)] P=[cos(v),0,?sin(v);0,1,0;sin(v),0,cos(v)] Q=Y*P*R
174

空间的齐次坐标系
?

三维空间考虑了平移运动后,如同二维情况那样,也必须 扩展一维,成为4?N数据集G4,成为空间的齐次坐标系:
? G3 ? G4 ? ? ? ?ones (1, N ) ?

?

在四维空间的4?4变换矩阵为:
? ? Y ,( R , P ) 3 3 3 Y4 ,( R4 , P4 ) ? ? ? ? 0 0 ?0 c1 ? c2 ? ? c3 ? ? 1 ?

?

其中c1,c2,c3为在三个轴x1,x2,x3方向上的平移距离。这 种方法在机器人运动学研究中很有用处。
175

3 基变换与坐标变换
?

在线性空间中常常需要进行坐标变换。用下图可以形象 地说明这点。按照左图的笛卡儿坐标 ,x向量应该表为 (1,6),这是x按标准基[e1,e2]度量的结果,在斜坐标纸 上的x点坐标就成为沿b1方向为?2个单位而沿b2方向3个 单位,即(-2,3)了。这反映了不同的基对坐标值的影响。

176

基坐标变换的公式
?

?

?

设线性空间Rn中的两组基向量u 和v都是n维列向量,它们 在基准坐标系中的n个分量都是已知的,因此u和v都可表 示为n?n矩阵。如果Rn中的一个向量w在以u为基的坐标系 内的坐标为wu(n?1数组),在以v为基的坐标系内的坐 标为wv(n?1数组),它们在基准坐标系内的坐标应分别 为u*wu和v*wv,这两者应该相等。 u* wu ?v*wv (9.18) 所谓基坐标的变换就是已知wu,求出wv。将上式左右均 左乘以inv(v),得到 wv ? inv(v) * u ? wu ? v \ u * wu (9.19) 可见,坐标变换矩阵P可由u和v求得: P(u→v)?v \ u (9.20)
177

基变换的算例
?

已知R4空间的两组基向量u,v如下:
? 1 ? 2 u?? ? ?1 ? ? 0 ? 1 ?1 1 1 ?1 2 1 1 ?1 ? ? ? ?1 ? ?, v ? ? ? 0? ? ? 1? ? ? ? 2 1 0 1

0 1 2 2

?2 1 1 2

1? 3? ? 1? ? 2? ?

试求把u变换为v的坐标变换矩阵P(u→v)。 1 ?1 1 ? 解的方法为:输入u和v矩阵后 ? 0 ? ?1 1 0 0 键入u\v ,得到 ? P (u ? v) ? ? 0 0 0 1 给出某点w的u坐标wu, ? 即可求其v坐标wv=P*wu ? 1 ?1 1 ?1

? ? ? ? ? ?
178

4
?

对称矩阵与二次型主轴

对称矩阵的特点是所有元素关于主对角线对称,即A’?A。 所以对称矩阵一定是方阵。前面曾要求读者特别注意A是 对称矩阵时x与Ax的对应关系,其特点就是Ax呈椭圆形状, 在椭圆的两个主轴方向,Ax与x在一条直线上长度差λ倍, 即Ax?λx。当Ax与x方向相同时,λ为正数;当Ax与x方向 相反时,λ为负数;2?2变换有两个特征值,在相互正交的 两个主轴方向,各有一个λ。 作为2?2正交变换的一个应用,我们来看看它对二次型图 形的影响。二次型本身已经不是线性范围,不属于线性代 数的范畴。现在要研究的是基坐标的线性变换对二次型图 形发生何种影响。 179

?


?

二次型例
T

设A=[5,-2;-2,5],则令A的二次型xT*A*x等于常数

? 5 ? 2? ? x1 ? 2 2 x Ax ? ? x1 x2 ? ? ? 5x1 ? 4 x1 x2 ? 5x2 ? 48 ?2 5 ? ? x2 ? ? ?? ?
得到的是一个椭圆方程,其图形如下图(a)所示。 ? 如果做一个基坐标的旋转变换,让坐标轴转过45度,此椭圆的主轴就 与新的坐标方向y1,y2相同,如图(b)所示,即令 y1?x1cosθ?x2sinθ y2??x1sinθ?x2cosθ 用矩阵乘法表为

? y1 ? ?cos? sin ? ? ? x1 ? ? ??? ? ? ? x ? ? y ? Px ? y2 ? ?? sin ? cos? ? ? 2 ?

180

线性变换后的二次型
?

其逆变换R为,

?cos? R ? inv( P) ? ? ? sin ?
?1 ?

? sin ? ? cos? ? ?

因此

?

用此变换式代入二次型的表达式,有
5 ? 2? ? y1 ? x Ax ? y R ARy ? ? y1 y2 ? R ? R ? ? ? y T Dy ? 48 ?2 5 ? ? y2 ? ? ?
T T T

?3 R AR ? ? ?0 本题中,θ=45? ,代入P和R,可得
T

0? ??D 7?

于是得到

y Dy ? ? y1 , y2 ?
T

?3 ?0 ?

0 ? ? y1 ? 2 ? 3 y12 ? 7 y2 ? 48 7 ? ? y2 ? ?? ?
181

182

二次型主轴等价于矩阵对角化
?

所以从几何图形上寻找二次型主轴的问题,在线性代 数中就等价于使矩阵经过正交变换或相似变换R(注意 这又是一个几何名词,说明被变换的图形的形状和尺 寸保持不变),使矩阵A对角化。图中的(c)和(d)表示 了对另一种双曲线二次型(它的两个特征值一正一负) 的坐标变换, 求主轴的方法就是把矩阵A对角化。找其主轴的大小和 方向,也就是找它的特征值lamda和特征向量e。

?

183

双曲线二次型的算例 ? 1 ?4 ?
?

根据

A? ? ? ?4

? 5? ?

列出程序

A=[1,-4;-4,-5] [lamda,e]=eig(A) 得到 ? ?7 lamda ? ? ? 0

% 或R=orth(A)
0? ?, 3? ? 0.4472 ? 0.8944 ? e?? 0.8944 0.4472 ? ? ?

把两个特征向量e并列起来,即正交矩阵。landa就是对角 化的矩阵D,故标准化的二次型方程为
? ?7 x Ax ? y R ARy ? ? y1 y2 ? ? ? 0
T T T

0 ? ? y1 ? 2 2 ? ?7 y1 ? 3 y2 ? 48 3 ? ? y2 ? ?? ? 184

185

高维空间的算例
化二次型 f ( x , x , x ) ? x 2 ? 2x 2 ? 5x 2 ? 2x x ? 6x x ? 2x x 1 2 3 1 2 3 1 2 1 3 2 3 为标准型。 ? 解:可以看出系数矩阵A,程序ag907为 A?[1,1,3;1,2,1;3,1,5], R?orth(A), D?inv(R)*A*R 得知二次型最后的标准型为 2 2 2 f ( x1.x2 , x3 ) ? 6.9754y1 + 1.6994y 2 ? 0.6749y 3 其中
?

? y1 ? ? ?0.4677 ? 0.2636 ? 0.8437 ? ? x1 ? y ? ? y 2 ? ? R ?1 * x ? R T * x ? ? 0.0253 0.9501 ? 0.3108 ? ? ? x2 ? ? ? ? ? ? ? ? y3 ? ? 0.8835 ? 0.1667 ? 0.4377 ? ? x3 ? ? ? ? ? ? ?
186

5 人口迁徙模型
?

?

设在一个大城市中的总人口是固定的。人口的分布则因居 民在市区和郊区之间迁徙而变化。每年有6%的市区居民 搬到郊区去住,而有2%的郊区居民搬到市区。假如开始 时有30%的居民住在市区,70%的居民住在郊区,问10年 后市区和郊区的居民人口比例是多少?30年、50年后又如 何? 这个问题可以用矩阵乘法来描述。把人口变量用市区和郊 区两个分量表示,一年以后,市区人口为xc1? (1?0.06) xc0?0.02xs0,郊区人口xs1? 0.06xc0 ? (1?0.02)xs0,

187

问题的矩阵描述
?

用矩阵乘法来描述,可写成:
? xc1 ? ?0.94 0.02? ?0.3 ? ? 0.2960? x1 ? ? ? ? ? ? ? ?0.7 ? ? Ax0 ? ? 0.7040? ? xs1 ? ?0.06 0.98? ? ? ? ?

?

从初始到k年,此关系保持不变,因此上述算式可 扩展为 xk ? Axk ?1 ? A2 xk ?2 ? ? ? Ak x0 , 故可用程序ag961进行计算:
A?[0.94,0.02;0.06,0.98], x0?[0.3;0.7]

x1?A*x0, x10?A^10*x0, x30?A^30*x0, x50?A^50*x0

得到: ? 0.2960? , x1 ?

? 0.2717 ? ? 0.2541? ? 0.2508? ? 0.7040? x10 ? ? 0.7283 ? , x30 ? ? 0.7459? , x50 ? ? 0.7492? , ? ? ? ? ? ? ? 188 ?

本题特征值和特征向量的意义
?

无限增加时间k,市区和郊区人口之比将趋向一组常数 0.25/0.75。为了弄清为什么这个过程趋向于一个稳态值, 我们改变一下坐标系统。在这个坐标系统中可以更清楚地 看到乘以矩阵A的效果,先求A的特征值和特征向量,得到
0 ? ? 0.9200 ? -0.7071 -0.3162 ? lamda ? ? ? , e ? ? 0.7071 -0.9487 ? 0 1.0000? ? ? ? ? ?1? ?1 ? 它是特征向量的整数化,得到 u1 ? ? ? , u2 ? ? ? ?1 ? ?3?

?



xk ? A x0 ? 0.25u2 ? 0.05(0.92) u1
k k
189

6 产品成本的计算
某厂生产三种成品,每件产品的成本及每季度生产件 数如表9.1及表9.2所示。试提供该厂每季度在每种产 品上的成本表。 0.30 0.15? ?0.10 ? 解:应当用矩阵 M ? ?0.30 0.40 0.25? , ? ? 来描述此问题,列 ?0.10 0.20 0.15? ? ? 出成本矩阵为M, 4500 4500 4000 ? ? 4000 季度产量矩阵为P P ? ? 2000 2800 2400 2200 ? ? ? ?5800 6200 6000 6000 ? ? ?
?
190

本例矩阵相乘的变换意义
?

将M和P相乘,得到的矩阵设为Q,Q的第一行 第一列元素为 Q(1,1)?0.1?4000?0.3?2000?0.15?5800?1870
? 1870 Q ? ? 3450 ? ? 1670 ? 2220 4020 1940 2070 3810 1830 1960 ? 3580 ? ? 1740 ? ?

?

不难看出,Q表示了夏季消耗的原材料总成本。 从线性变换的角度来看,Q矩阵把以件数为单 位的产品空间映射到了以元为单位的成本空间。
191

7
?

情报检索模型

假如数据库中包括了n个文件,而搜索所用的关键词有 m个。可以把数据库表示为m?n的矩阵A。比如有7本书, 6个关键词x(初等,代数,矩阵,理论,线性,应 用):则A就是6×7的矩阵。书名中有此关键词的就将 该对应元素置1。 搜索结果可以表示为乘积y?ATx,它是n×1列向量。于 是y的各个分量就表示各书与搜索向量匹配的程度。y值 最大的元素对应于匹配最好的书籍,是读者可能最需要 的。

?

?

可见‘变换’有很广泛的意义。在本例中,它是从‘关 键词’子空间变换为‘文献目录’的子空间。

192


相关文章:
Matlab学习教程 第五章课件4
Matlab学习教程 第五章课件4 暂无评价|0人阅读|0次下载|举报文档 第5章 MATLAB 程序设计入门 本章将以最简洁的方式,使读者快速地学会基本的 MATLAB 程序编写技巧...
matlab课件,初学者必备
搜 试试 帮助 全部 DOC PPT TXT PDF XLS 百度文库 教育专区 高等教育 理学...matlab课件,初学者必备matlab课件,初学者必备隐藏>> 6 符号计算 MATLAB4.2 中,...
石群自动控制原理视频教程免费课件
石群自动控制原理视频教程免费课件_工学_高等教育_教育专区。石群自动控制原理...Matlab ?草稿纸式编程语言 ?良好的人机界面 ?结论可做一定等级的理论论据 ?...
GoldWave入门教程
搜试试 2 悬赏文档 全部 DOC PPT TXT PDF XLS 广告 百度文库 专业资料 IT...并且 GoldWave 还可以把 Matlab 中的 MAT 文件当作声音文件来 处理,这些功能...
多媒体CAI课件基础教程期末复习
ppt制作教程图解 140页 1下载券 《CAI课件制作》实验 41页 免费 多媒体CAI课件...Matlab、Photoshop、 Authorware、3DMAX、方正奥思、FrontPage 等等,但是这些软件作为...
《超级画板》第十一篇 课件制作
《超级画板》第十一篇 课件制作_初二英语_英语_初中教育_教育专区。《超级画板...文稿演示软件 PPT, 统计图表软件 Excel,数学 软件如 Matlab、Mathematica、Maple,...
Matlab实用教程
MATLAB 的概况 MATLAB矩阵实验室(Matrix Laboratory)之意。除具备卓越的数值...MATLAB实用教程PPT 1130页 3下载券 matlab实用教程 28页 1下载券 MATLAB简明...
matlab课件
x = 1.0000 0.2311 0 1.0000 0.8913 3.3 二维数组的创建 3.3.1 直接输入法【*例 3.3.1-1】在 MATLAB 环境下,用下面三条指令创建二维数组 C。 a...
超级画板《动态几何教程》11课件制作
超级画板《动态几何教程》11课件制作_教学反思/汇报_教学研究_教育专区。张景中超级...文稿演示软件 PPT, 统计图表软件 Excel,数学 软件如 Matlab、Mathematica、Maple,...
详解MATLAB在科学计算中的应用(含源码及教程PPT)_Matla...
相关从业者MATLAB在科学计算中的应用视频教程,新征程职业技术培训网校全套教学,在线学习Matlab课程,详解MATLAB在科学计算中的应用(含源码及教程PPT)视频下载
更多相关标签:
matlab ppt 课件 | matlab教程ppt | ppt制作教程课件 | 摄影入门ppt课件教程 | ppt课件制作教程视频 | ppt教程课件 | 教师ppt课件制作教程 | ppt入门教程课件 |