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

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学习课件和教程
matlab学习课件教程_计算机软件及应用_IT/计算机_专业资料。课件适合入门,附有更深入教程。第1 章 基础准备及入门 本章有三个目的:一是讲述 MATLAB 正常运行所...
大学生必备软件免费自学视频教程
教程 http://v.dxsbb.com/ruanjian/ppt/461/ 2.WPS2012 演示 视频教程 ...视频教程 http://v.dxsbb.com/ruanjian/solidworks/435/ Matlab 1.Matlab ...
大学生必备软件免费自学视频教程
教程 http://v.dxsbb.com/ruanjian/ppt/461/ 2.WPS2012 演示 视频教程 ...视频教程 http://v.dxsbb.com/ruanjian/solidworks/435/ Matlab 1.Matlab ...
matlab实用入门教程(入门级)
搜试试 2 悬赏文档 全部 DOC PPT TXT PDF XLS 广告 百度文库 专业资料 IT...MATLAB 实用入门教程 1.MATLAB 的基本知识 1-1、基本运算与函数在 MATLAB 下...
matlab课件,初学者必备
搜 试试 帮助 全部 DOC PPT TXT PDF XLS 百度文库 教育专区 高等教育 理学...matlab课件,初学者必备matlab课件,初学者必备隐藏>> 6 符号计算 MATLAB4.2 中,...
石群自动控制原理视频教程免费课件
石群自动控制原理视频教程免费课件_工学_高等教育_教育专区。石群自动控制原理...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,...
Matlab2012最新教程(代码直接复制调试)
搜试试 3 帮助 全部 DOC PPT TXT PDF XLS 百度文库 专业资料 IT/计算机 ...Matlab2012最新教程(代码直接复制调试)_计算机软件及应用_IT/计算机_专业资料。第...
电子课件说明及教师登记表
电子课件说明及教师登记表_英语学习_外语学习_教育专区...主要算法给出了应用 MATLAB 求解的方法,使读者通过...· 电路分析基础教程 刘景夏等 著 ISBN:...
更多相关标签:
matlab 课件ppt | matlab教程ppt | matlab教程ppt 全 | matlab基础教程ppt | ppt课件制作教程 | ppt教程课件 | ppt课件制作教程视频 | 摄影入门ppt课件教程 |