《精通MATLAB科学计算(第3版)(王正林)02-3r.pdf》由会员分享,可在线阅读,更多相关《精通MATLAB科学计算(第3版)(王正林)02-3r.pdf(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第 章 MATLAB基 本 运 算 入 门 MATLAB是 一 门 计 算 语 言,它 的 运 算 指 令 和 语 法 基 于 一 系 列 基 本 的 矩 阵 运 算 以 及 它 们 的 扩 展 运 算,它 还 支 持 复 数 这 一 数 值 元 素,这 也 是 MATLAB区 别 于 其 他 高 级 语 言 的 最 大 特 点 之 一,它 给 许 多 领 域 的 计 算 都 带 来 了 极 大 方 便。2.1 MATLAB数 值 类 型 MATLAB包 括 4 种 基 本 数 据 类 型,即 双 精 度 数 组、字 符 串 数 组、元 胞 数 组 和 构 架 绩 超 数 组。数 值 之 间
2、可 以 相 互 转 化,这 为 其 计 算 功 能 开 拓 了 广 阔 的 空 间。1.变 量 与 常 量 变 量 是 数 值 计 算 的 基 本 单 元。与 C 语 言 等 其 他 高 级 语 言 不 同,MATLAB语 言 中 的 变 量 无 需 事 先 定 义,一 个 变 量 以 其 名 称 在 语 句 命 令 中 第 一 次 合 法 出 现 而 定 义,运 算 表 达 式 变 量 中 不 允 许 有 未 定 义 的 变 量,也 不 需 要 预 先 定 义 变 量 的 类 型,MATLAB会 自 动 生 成 变 量,并 根 据 变 量 的 操 作 确 定 其 类 型。1)MATLAB变
3、量 命 名 规 则 MATLAB中 的 变 量 命 名 规 则 如 下:(1)变 量 名 区 分 大 小 写,因 此 A 与 a 表 示 的 是 不 同 的 变 量。(2)变 量 名 以 英 文 字 母 开 始,第 一 个 字 母 后 可 以 使 用 字 母、数 字、下 划 线,但 不 能 使 用 空 格 和 标 点 符 号。(3)变 量 名 长 度 不 得 超 过 3 1位,超 过 的 部 分 将 被 忽 略。(4)某 些 常 量 也 可 以 作 为 变 量 使 用,如 i 在 MATLAB中 表 示 虚 数 单 位,但 也 可 以 作 为 变 量 使 用。常 量 是 指 那 些 在 MAT
4、LAB中 已 预 先 定 义 其 数 值 的 变 量,默 认 的 常 量 如 表 2.1所 示。表 2.1 MATLAB默 认 常 量 名 称 说 明 名 称 说 明 P*圆 周 率 cps 浮 点 数 的 相 对 误 差 1NF(或 in f)无 穷 大 i(或 j)虚 数 单 位,定 义 为 QNaN(或 nan)代 表 不 定 值(即 0/0)nargin 函 数 实 际 输 入 参 数 个 数 real man 最 大 的 正 实 数 nargout 函 数 实 际 输 出 参 数 个 数精 通 MATLAB科 学 计 算(第 2 蚪 realmix 最 小 的 正 实 数 ANS(或
5、 ans)默 认 变 量 名,以 应 答 最 近 一 次 操 作 运 算 结 果 18 第 2 章 M A T L A B 基 本 运 算 2)M A T L A B 变 量 的 显 示 任 何 M A T L A B 语 句 的 执 行 结 果 都 可 以 在 屏 幕 上 显 示,同 时 赋 值 给 指 定 的 变 量,没 有 指 定 变 量 时,赋 值 给 一 个 特 殊 的 变 量 ans,数 据 的 显 示 格 式 由 format命 令 控 制。format只 影 响 结 果 的 显 示,不 影 响 其 计 算 与 存 储。M A T L A B 总 是 以 双 字 长 浮 点 数(
6、双 精 度)来 执 行 所 有 的 运 算。如 果 结 果 为 整 数,则 显 示 没 有 小 数;如 果 结 果 不 是 整 数,则 输 出 形 式 有 表 2.2所 示 的 几 种 形 式。表 2.2 MATLAB的 数 据 显 示 格 式 格 式 含 义 格 式 含 义 format(short)短 格 式(5 位 定 点 数)format long e 长 格 式 e 方 式 fbnnat long 长 格 式(1 5位 定 点 数)format bank 2 位 十 进 制 格 式 format short e 短 格 式 c 方 式 format hex 十 六 进 制 格 式 3
7、)M A T L A B 变 量 的 存 取 工 作 空 间 中 的 变 量 可 以 用 save命 令 存 储 到 磁 盘 文 件 中。键 入 命 令 save 文 件 名”,将 工 作 空 间 中 全 部 变 量 存 到“文 件 名.mat”文 件 中 去,若 省 略“文 件 名”则 存 入 文 件“matlab.mat”中;命 令 savev文 件 名 变 量 名 集”将“变 量 名 集”指 出 的 变 量 存 入 文 件“文 件 名.mat”中。用 10ad命 令 可 将 变 量 从 磁 盘 文 件 读 入 M A T L A B 的 工 作 空 间,其 用 法 为“load 文 件
8、名 它 将“文 件 名”指 出 的 磁 盘 文 件 中 的 数 据 依 次 读 入 名 称 与“文 件 名”相 同 的 工 作 空 间 中 的 变 量 中 去。若 省 略“文 件 名 则“matlab.mat”从 中 读 入 所 有 数 据。用 clear命 令 可 以 从 工 作 空 间 中 清 除 现 存 的 变 量。2.字 符 串 字 符 是 M A T L A B 中 符 号 运 算 的 基 本 元 素,也 是 文 字 等 表 达 方 式 的 基 本 元 素,在 M A T L A B 中,字 符 串 作 为 字 符 数 组 用 单 引 号)引 用 到 程 序 中,还 可 以 通 过
9、字 符 串 运 算 组 成 复 杂 的 字 符 串。字 符 串 数 值 和 数 字 数 值 之 间 可 以 进 行 转 换,也 可 以 执 行 字 符 串 的 有 关 操 作。3.元 胞 数 组 元 胞 是 元 胞 数 组(Cell Array)的 基 本 组 成 部 分。元 胞 数 组 与 数 字 数 组 相 似,以 下 标 来 区 分,单 元 胞 数 组 由 元 胞 和 元 胞 内 容 两 部 分 组 成。用 花 括 号 表 示 元 胞 数 组 的 内 容,用 圆 括 号 0 表 示 元 胞 元 素。与 一 般 的 数 字 数 组 不 同,元 胞 可 以 存 放 任 何 类 型、任 何 大
10、 小 的 数 组,而 且 同 一 个 元 胞 数 组 中 各 元 胞 的 内 容 可 以 不 同。【例 2-1】元 胞 数 组 创 建 与 显 示 实 例。19精 通 MATLAB科 学 计 算(第 2 版 i-解:MATLAB程 序 代 码 如 下。A(1,1)=An example of cell array*;A(l,2)=1 2;3 4;A2,l=tf(1,1,8);A2,2=A(1,2);This is anexample,;celldisp(A)号 显 示 该 元 胞 数 组 元 胞 数 组 A 第 1行 用 元 胞 数 组 标 志 法 建 立 一 个 字 符 串 和 一 个 矩
11、阵;第 2 行 用 元 胞 内 容 编 址 法,建 立 一 个 传 递 函 数 和 一 个 由 两 个 元 素 组 成 的 元 胞 组,该 元 胞 组 分 别 是 矩 阵 和 字 符 串,最 后,用 celldisp函 数 显 示 该 元 胞 数 组 Ao4.构 架 结 构 数 组 与 元 胞 数 组 相 似,构 架 结 构 数 组(Structure Array)也 能 存 放 各 类 数 据,使 用 指 针 方 式 传 递 数 值。构 架 绩 跑 数 组 由 结 构 变 量 名 和 属 性 名 组 成,用 指 针 操 作 符 连 接 结 构 变 量 名 和 属 性 名。例 如,可 用 pa
12、rameter.temperature表 示 某 一 对 象 的 温 度 参 数,用 parameter.humidity表 示 某 一 对 象 的 湿 度 参 数 等,因 此,该 构 架 结 构 数 组 parameter由 两 个 属 性 组 成。5.对 象 面 向 对 象 的 MATLAB语 言 采 用 了 多 种 对 象,如 自 动 控 制 中 常 用 的 传 递 函 数 模 型 对 象(tf object 状 态 空 间 模 型 对 象(ss object)和 零 极 点 模 型 对 象(zpk object),一 些 对 象 之 间 可 以 相 互 转 换,例 如,可 以 从 传
13、递 函 数 模 型 对 象 转 化 为 零 极 点 模 型 对 象 等。2.2 关 系 运 算 和 逻 辑 运 算 除 了 传 统 的 数 学 运 算 外,MATLAB还 支 持 关 系 运 算 和 逻 辑 运 算。如 果 你 已 经 有 了 一 些 编 程 经 验,那 对 这 些 运 算 不 会 陌 生。这 些 操 作 符 和 函 数 的 目 的 是 提 供 求 解 真/假 命 题 的 答 案。关 系 运 算 和 逻 辑 运 算 主 要 用 于 控 制 基 于 真/假 命 题 的 各 MATLAB命 令(通 常 在 M 文 件 中)的 流 程 或 执 行 次 序。作 为 所 有 关 系 表
14、达 式 和 逻 辑 表 达 式 的 输 入,MATLAB把 任 何 非 0 数 值 都 当 做 真,把 0当 做 假。所 有 关 系 表 达 式 和 逻 辑 表 达 式 的 输 出,对 于 真 输 出 为 1,对 于 假 输 出 为 0。MATLAB为 关 系 运 算 和 逻 辑 运 算 提 供 了 关 系 操 作 符 和 逻 辑 操 作 符,如 表 2.3和 表 2.4所 示。表 2.3 关 系 运 算 符 符 号 功 能 符 号 功 能=大 于 等 于 大 于=不 等 于 20 第 章 MATLAB基 本 运 算 表 2.4 逻 辑 运 算 符 符 a功 能 符 a功 能&逻 辑 与 逻
15、辑 非 I逻 辑 或 此 外,MATLAB还 提 供 了 若 干 关 系 运 算 函 数 和 逻 辑 运 算 函 数,分 别 如 表 2.5和 表 2.6所 示。表 2.5 关 系 运 算 函 数 函 数 名 功 能 函 数 名 功 能 all 所 有 向 量 为 非 零 元 素 时 为 真 xor 逻 辑 异 或 运 算 any 任 一 向 量 为 非 零 元 素 时 为 真 表 2.6 逻 辑 运 算 函 数 函 数 名 功 能 函 数 名 功 能 Brtaftdbitand 位 方 式 的 逻 辑 与 运 算 BitcmpbitcniD 位 比 较 运 算 B to b ito r 位
16、方 式 的 逻 辑 或 运 算 Bilnwxbiimax 最 大 无 符 号 浮 点 整 数 Btfxefbitxor 位 方 式 的 逻 辑 异 或 运 算 将 二 进 制 移 位 运 算 2.3 矩 阵 及 其 运 算 MATLAB软 件 的 最 大 特 色 是 强 大 的 矩 阵 计 算 功 能,在 MATLAB软 件 中,所 有 的 计 算 都 是 以 矩 阵 为 单 元 进 行 的,可 见 矩 阵 是 MATLAB的 核 心。表 2.7列 出 MATLAB提 供 的 每 类 矩 阵 运 算 的 函 数,并 各 举 一 个 实 例 进 行 说 明,同 类 函 数 的 用 法 基 本 类
17、 似,详 细 的 用 法 及 函 数 内 容 说 明 可 参 考 联 机 帮 助。2.3.1 矩 阵 的 创 建 由 他 行 列 构 成 的 数 组。称 为?X”阶 矩 阵,它 总 共 由 W X 个 元 素 组 成,矩 阵 元 素 记 为 劭,其 中 i 表 示 行,)表 示 列。当 机=时,矩 阵。称 为 方 阵。当 i x j 时,所 有 的 旬=0,且 机=,得 到 的 矩 阵 称 为 对 角 阵。当 对 角 阵 的 对 角 线 上 的 元 素 全 为 1时,称 为 单 位 阵,记 为/o对 于(?x)阶 矩 阵 w,当 w,j=。户 时,称 w 是。的 转 置 矩 阵,记 为 w=a
18、。对 于“为(m x l)的 形 式 时,称。是 机 个 元 素 的 列 向 量,对 于。为(l x”)的 形 式 时,称“是 个 元 素 的 行 向 量。矩 阵 的 表 现 形 式 和 数 组 相 似,它 以 左 方 括 号 T 开 始,以 右 方 括 号 T 结 束,每 一 行 元 素 结 束 用 行 结 束 符 号(分 号;)或 回 车 符 分 割,每 个 元 素 之 间 用 元 素 分 割 符 号(空 格 或“;)分 21精 通 MATLAB科 学 计 算(第 2 版 i-隔。建 立 矩 阵 的 方 法 有 直 接 输 入 矩 阵 元 素、在 现 有 矩 阵 中 添 加 或 删 除 元
19、 素、读 取 数 据 文 件、采 用 现 有 矩 阵 组 合、矩 阵 转 向、矩 阵 移 位 及 直 接 建 立 特 殊 矩 阵 等。【例 2-2】矩 阵 创 建 实 例。解:MATLAB程 序 代 码 如 下。a=l 2 3;4 5 6运 行 结 果 是 创 建 了 一 个 2 x 3的 矩 阵 a,a 的 第 1行 由 1、2、3 这 3 个 元 素 组 成,第 2行 由 4、5、6 这 3 个 元 素 组 成,输 出 结 果 如 下:a=1 2 34 5 6接 着 输 入:b=a;11,12,1 3 南 添 加 一 行 元 素(11,12,13运 行 结 果 是 创 建 了 一 个 3
20、x 3的 矩 阵 b b 矩 阵 是 在 a 矩 阵 的 基 础 上 添 加 一 行 元 素 11、12、13,组 成 一 个 3 x 3矩 阵,输 出 结 果 如 下:b=1 2 34 5 611 12 13MATLAB中 对 矩 阵 元 素 的 访 问 如 下 所 示:单 个 元 素 的 访 问:b(3,2)-12,访 问 了 第 3 行 和 第 2 列 交 叉 的 元 素;整 列 元 素 的 访 问:b(:,3)f3,6,1 3,访 问 了 第 3 列 中 的 所 有 元 素;整 行 元 素 的 访 问:b(l,:)-l,2,3,访 问 了 第 1行 中 的 所 有 元 素;整 块 元
21、素 的 访 问:b(2:3,2:3)-5,6;12,1 3,访 问 了 一 个(2 2)的 子 块 矩 阵。MATLAB提 供 了 很 多 个 特 殊 矩 阵 的 生 成 函 数,表 2.7列 出 了 一 些 常 用 的 生 成 函 数,关 于 其 他 的 特 殊 矩 阵 生 成 函 数 及 使 用 格 式,请 参 见 联 机 帮 助。表 2.7 MATLAB常 用 特 殊 矩 阵 生 成 函 数 函 数 功 能 说 明 函 数 功 能 说 明 zeros()生 成 元 素 全 为 0 的 矩 阵 tril()生 成 下 三 角 矩 阵 ones()生 成 元 素 全 为 1的 矩 阵 eye
22、()生 成 单 位 矩 阵 rand()生 成 均 匀 分 布 随 机 矩 阵 company()生 成 伴 陵 矩 阵 randn()生 成 正 态 分 布 随 机 矩 阵 hilb()生 成 Hilbert矩 阵 magic()生 成 魔 方 矩 阵 vander()生 成 vander矩 阵 diag()生 成 对 角 矩 阵 hankcl()生 成 hankcl矩 阵 triu()生 成 上 三 角 矩 阵 hadamard()生 成 hadamard矩 阵【例 2-3】特 殊 矩 阵 生 成 函 数 使 用 实 例。22 第 2 章 MATLAB基 本 运 算 解:MATLAB程 序
23、 代 码 如 下。a=l,2,3;4,5,6;7,8,9;b=tril(a)5生 成 下 三 角 矩 阵 运 行 结 果 是 生 成 了 b矩 阵,它 是 调 用 下 三 角 矩 阵 生 成 函 数 tril()生 成 的 a矩 阵 的 下 三 角 矩 阵,输 出 结 果 如 下:b=1470 05 08 9 23精 通 M ATLAB科 学 计 算(第 2 蝌 2.3.2 矩 阵 的 运 算 矩 阵 与 矩 阵 之 间 可 以 进 行 如 表 2.8所 示 的 基 本 运 算。连 在 进 行 左 除 和 右 除“时,两 矩 阵 的 维 数 必 须 相 等。表 2.8 矩 阵 基 本 运 算
24、操 作 符 号 功 能 说 明 操 作 符 号 功 能 说 明+矩 阵 加 法/矩 阵 的 左 除-矩 阵 减 法 矩 阵 转 置*矩 阵 乘 法 logm()矩 阵 对 数 运 算 A矩 阵 的 幕 expm()矩 阵 指 数 运 算 矩 阵 的 右 除 inv()矩 阵 求 逆【例 2-4】矩 阵 基 本 运 算 实 例。解:MATLAB程 序 代 码 如 下。a=l,2;3,4;b=3,5;2,9;divl=a/b;,矩 阵 的 左 除 div2=ba,矩 阵 的 右 除 两 矩 阵 a 与 b 进 行 了 左 除 和 右 除 运 算,输 出 结 果 如 下:divl=div2=0.29
25、41 0.0588-0.3529-0.11761.1176-0.1765 0.4118 0.4706MATLAB提 供 了 多 种 关 于 矩 阵 的 函 数,表 2.9列 出 了 一 些 常 用 的 矩 阵 函 数 运 算。表 2.9 常 用 矩 阵 函 数 运 算 函 数 名 功 能 说 明 函 数 名 功 能 说 明 rot90()矩 阵 逆 时 针 旋 转 90 cig()计 算 矩 阵 的 特 征 值 和 特 征 向 量 flipud()矩 阵 上 下 翻 转 rank()计 算 矩 阵 的 秩 fliplK)矩 阵 左 右 翻 转 trace()计 算 矩 阵 的 迹 flipdi
26、m()矩 阵 的 某 维 元 素 翻 转 norm()计 算 矩 阵 的 范 数 shiftdim()矩 阵 的 元 素 移 位 poly()计 算 矩 阵 的 特 征 方 程 的 根【例 2-5】矩 阵 函 数 运 算 实 例。解:MATLAB程 序 代 码 如 下。a=l,3,5;2,4,6;7,9,13;b,c=eig(a),求 取 矩 阵 的 特 征 值 和 特 征 向 量 通 过 函 数 eig()计 算 矩 阵 a 的 特 征 向 量 b 和 特 征 值 c,输 出 结 果 如 下:b=-0.3008-0.7225 0.228424 第 2 章 MATLAB基 本 运 算-0.3
27、8 1 3-0.8 7 4 2c=1 9.3 3 4 100-0.3 7 3 60.5 8 1 70-1.4 7 4 40-0.8 5 1 70.4 7 1 7000.1 4 0 3矩 阵 分 解 常 用 于 方 程 求 根,表 2.10列 出 了 一 些 常 用 的 矩 阵 分 解 运 算。表 2.1 0 常 用 矩 阵 分 解 运 算 函 数 函 数 名 功 能 说 明 函 数 名 功 能 说 明 eig()矩 阵 的 特 征 值 分 解 svd()矩 阵 的 奇 异 值 分 解 qr()矩 阵 的 Q R分 解 chol()矩 阵 的 Cholcsky分 解 schur()矩 阵 的 S
28、chur分 解 lu()矩 阵 的 L U分 解【例 2-6 矩 阵 分 解 运 算 函 数 使 用 实 例。解:M A T LA B程 序 代 码 如 下。a=6,2,1;2,3,1;1,1,1;L,U,P=l u(a)超 对 矩 阵 进 行 LU 分 解 通 过 函 数 lu()对 矩 阵 a进 行 L U 分 解,得 到 上 三 角 矩 阵 U、下 三 角 阵 L、置 换 矩 阵 P,输 出 结 果 如 下:L=1.0 0 0 0 0 0 U=6.0 0 0 0 2.0 0 0 0 1.0 0 0 00.3 3 3 3 1.0 0 0 0 0 0 2.3 3 3 3 0.6 6 6 70
29、.1 6 6 7 0.2 8 5 7 1.0 0 0 0 0 0 0.6 4 2 9P=1 0 00 1 00 0 12.4 M A T L A B中 的 数 据 精 度 2.4.1 MATLAB的 数 据 类 型 M A T L A B的 基 本 数 值 数 据 类 型 有 两 类:整 数 型 和 浮 点 型。整 数 型 数 据 按 照 表 示 范 围 可 分 为 int8v intl6x int32 int64、uint8、uintl6、uint32、uint64八 种 类 别,其 中 每 种 类 型 表 示 的 数 据 范 围 如 表 2.11所 示:表 2.1 1 MATLAB整 数
30、的 表 示 范 围 数 据 类 型 表 示 范 围 数 据 类 型 表 示 范 围 int8-27-27-luint80 28-linti 6-2,5 2,5-luint160 2%1int32 _231 23 1-1 uint320 2 3 2-1int64-263-263 _ 1uint640-264-1 25精 通 MATLAB科 学 计 算(第 2 忡-当 数 据 超 过 类 型 的 表 示 范 围 时,MATLAB将 数 据 表 示 成 该 类 型 的 最 大 值 或 最 小 值,如 下 面 例 题 所 示。【例 2-7】数 据 类 型 使 用 实 例。将 234与-234表 示 成
31、 int8类 型。解:在 MATLAB命 令 窗 口 输 入 下 列 命 令。int8(234)ans=127 int8(-234)ans=-128由 于 int8表 示 的 整 数 范 围 为-2,2,T,而 234127,所 以 输 出 结 果 为 int8能 够 表 示 的 最 大 整 数 127,同 理 由 于-2 3 4 T 2 8,所 以 输 出 结 果 为 in t8能 够 表 示 的 最 大 整 数-1 2 8 o对 于 其 他 的 整 数 类 型 都 是 一 样 的。浮 点 型 数 据 按 照 表 示 范 围 可 分 为 单 精 度 和 双 精 度 两 种 类 型,其 中 每
32、 种 类 型 表 示 的 数 据 范 围 如 表 2.12所 示。表 2.12 MATLAB浮 点 数 数 的 表 示 范 围 浮 点 类 型 表 示 范 围 浮 点 类 型 表 示 范 围 单 精 度 一 2设 8 _ _2-126 2-126 _ 2128双 精 度-21024 _ _2-1022 2 1 022-21024表 2.12的 数 据 来 自 于 MATLAB的 帮 助 文 件,这 些 数 据 都 是 遵 循 IEEE标 准 得 出 的 数 据。从 表 2.12可 以 看 出,双 精 度 数 据 能 够 表 示 的 最 小 实 数 为 2 0 2 2,即 用 双 精 度 表 示
33、 数 据 的 精 度 为 2 1022 o 当 然,MATLAB内 部 有 专 门 的 函 数 获 得 这 些 数 据。【例 2-8】数 据 类 型 精 度 范 围 使 用 实 例。获 取 双 精 度 数 据 的 表 示 范 围。解:在 MATLAB命 令 窗 口 输 入 下 列 命 令。str=双 精 度 数 据 的 表 示 范 围 为:nt*g to%g nt%g to%g1;sprintf(str,-realmax,-realmin,realmin,realmax)ans=双 精 度 数 据 的 表 示 范 围 为:-1.79769e+308 to-2.22507e-3082.22507
34、e-308 to 1.79769e+308MATLAB中 默 认 的 数 据 类 型 为 双 精 度 类 型。2.4.2 M ATLAB的 数 值 精 度 MATLAB的 数 值 精 度 也 就 是 MATLAB能 够 表 示 的 最 小 实 数,任 何 一 个 绝 对 值 小 于 MATLAB的 数 值 精 度 的 实 数 都 会 被 当 成 0 处 理。经 过 实 验,可 以 知 道,在 MATLAB 7 版 26-第 章 MATLAB基 本 运 算 本 中,MATLAB能 够 表 示 的 最 小 实 数 为 2的 4,任 何 绝 对 值 小 于 不 皿 的 实 数,MATLAB都 将 其
35、 视 为 O o【例 2-9 MATLAB数 值 精 度 实 例。MATLAB 7 的 数 值 精 度。解:在 MATLAB命 令 窗 口 输 入 下 列 命 令 x=2人(-1074)x=4.9407e-324 x=2A(-1075)x=0 x 0ans=1从 上 面 的 例 子 可 以 看 出,由 于 2T752一 174,MATLAB 7 视 其 为 0,而 且 通 过 和 0 的 比 较 可 以 看 出,结 果 确 实 为 真。因 此,如 果 在 MATLAB程 序 中 要 判 断 某 个 实 数 是 否 等 于 0,最 可 靠 的 办 法 是 将 其 与 2T74相 比 较,看 它
36、的 绝 对 值 是 否 小 于 等 于 2一 叩 4。当 然 对 于 具 体 的 问 题 可 以 根 据 问 题 的 需 要 和 精 度,采 取 不 同 的 比 较 对 象,例 如 MATLAB中 有 一 个 内 置 常 量 eps,其 值 为 2.2204x 10 16,它 可 以 作 为 实 数 是 否 等 于 0 的 一 个 比 较 对 象。2.4.3 MATLAB的 显 示 精 度 MATLAB的 显 示 精 度 是 指 MATLAB显 示 的 有 效 位 数。MATLAB中 的 显 示 精 度 是 可 以 修 改 的,显 示 精 度 修 改 了,原 来 的 数 据 并 没 有 变,只
37、 是 数 据 在 MATLAB命 令 窗 口 中 显 示 的 有 效 位 数 不 同 而 已。MATLAB中 有 三 个 函 数 可 以 设 置 显 示 精 度:fbrmat、v p a和 digits,它 们 使 用 简 单,具 体 用 法 可 参 考 MATLAB帮 助 文 档。【例 2-10】MATLAB显 示 精 度 实 例。MATLAB的 显 示 精 度。解:在 MATLAB命 令 窗 口 输 入 下 列 命 令。vpa(1/3)x=1/3x=0.3333 format long;x=1/3x=0.33333333333333 format rational;%MATLAB默 认 的
38、 显 示 精 度 义 设 置 为 long显 示 精 度 告 显 示 为 小 数 形 式 x=1/3x=1/3 digits(10);%显 示 10位 有 效 数 字 27精 通 M ATLAB科 学 计 算(第 2 贿-ans=.3333333333 vpa(1 0 0/3,2 0)砂 显 示 2 0位 有 效 数 字 ans=33.3333333333333333332.5符 号 运 算 MATLAB提 供 了 符 号 数 学 工 具 箱(Symbolic Math Toolbox),大 大 增 强 了 MATLAB的 功 能.符 号 数 学 工 具 箱 的 特 点 为:(1)符 号 数
39、学 工 具 箱 适 用 于 广 泛 的 用 途,而 不 是 针 对 一 些 特 殊 专 业 或 专 业 分 支:(2)符 号 数 学 工 具 箱 使 用 字 符 串 来 进 行 符 号 分 析,而 不 是 基 于 数 组 的 数 值 分 析。2.5.1 符 号 运 算 概 述 符 号 数 学 工 具 箱 是 操 作 和 解 决 符 号 表 达 式 的 符 号 数 学 工 具 箱(函 数)集 合,有 复 合、简 化、微 分、积 分 以 及 求 解 代 数 方 程 和 微 分 方 程 的 工 具。另 外 还 有 一 些 用 于 线 性 代 数 的 工 具,求 解 逆、行 列 式、正 则 形 式 的
40、 精 确 结 果,找 出 符 号 矩 阵 的 特 征 值 而 没 有 由 数 值 计 算 引 入 的 误 差。工 具 箱 还 支 持 可 变 精 度 运 算,即 支 持 符 号 计 算 并 能 以 指 定 的 精 度 返 回 结 果。符 号 运 算 与 数 值 运 算 的 主 要 区 别 如 下:(1)数 值 运 算 中 必 须 先 对 变 量 赋 值,然 后 才 能 参 与 运 算。(2)符 号 运 算 无 需 事 先 对 独 立 变 量 赋 值,运 算 结 果 以 标 准 的 符 号 形 式 表 达。符 号 运 算 的 运 算 对 象 可 以 是 没 赋 值 的 符 号 变 量,可 以 获
41、 得 任 意 精 度 的 解。1.符 号 表 达 式 符 号 表 达 式 是 代 表 数 字、函 数、算 子 和 变 量 的 MATLAB字 符 串,或 字 符 串 数 组。不 要 求 变 量 有 预 先 确 定 的 值,符 号 方 程 式 是 含 有 等 号 的 符 号 表 达 式。符 号 算 术 是 使 用 已 知 的 规 则 和 给 定 符 号 恒 等 式 求 解 这 些 符 号 方 程 的 实 践,它 与 代 数 和 微 积 分 所 学 到 的 求 解 方 法 完 全 一 样。符 号 矩 阵 是 数 组,其 元 素 是 符 号 表 达 式。MATLAB在 内 部 把 符 号 表 达 式
42、 表 示 成 字 符 串,与 数 字 变 量 或 运 算 相 区 别;否 则,这 些 符 号 表 达 式 几 乎 完 全 像 基 本 的 MATLAB命 令。2.创 建 符 号 对 象 MATLAB提 供 了 两 个 建 立 符 号 对 象 的 函 数:sym和 syms,两 个 函 数 的 用 法 介 绍 如 下。(1)sym函 数 sym函 数 用 来 建 立 单 个 符 号 量,一 般 调 用 格 式 为:符 号 量 g=sym(符 号 字 符 串)该 函 数 可 以 建 立 一 个 符 号 量,符 号 字 符 串 可 以 是 常 量、变 量、函 数 或 表 达 式。应 用 sym28
43、第 2 章 MATLAB基 本 运 算 函 数 还 可 以 定 义 符 号 常 量。(2)syms 函 数 函 数 sy m一 次 只 能 定 义 一 个 符 号 变 量,使 用 不 方 便。MATLAB提 供 了 另 一 个 函 数 syms,一 次 可 以 定 义 多 个 符 号 变 量。sym s函 数 的 一 般 调 用 格 式 为:syms 符 号 变 量 名 1 符 号 变 量 名 2.符 号 变 量 名 n用 这 种 格 式 定 义 符 号 变 量 时 不 要 在 变 量 名 上 加 字 符 串 分 界 符 C),变 量 间 用 空 格 而 不 要 用 逗 号 分 隔。含 有 符
44、 号 对 象 的 表 达 式 称 为 符 号 表 达 式,建 立 符 号 表 达 式 有 以 下 3 种 方 法;利 用 单 引 号 来 生 成 符 号 表 达 式。用 sym函 数 建 立 符 号 表 达 式。使 用 已 经 定 义 的 符 号 变 量 组 成 符 号 表 达 式。【例 2-11 符 号 表 达 式 创 建 实 例。解:在 MATLAB窗 口,输 入 下 列 命 令:U=sym(,3*xA2+5*y+2*x*y+6)告 定 义 符 号 表 达 式 syms x y;号 建 立 符 号 变 量 x、yV=3*x2+5*y+2*x*y+6 号 定 义 符 号 表 达 式 V2*U
45、-V+6 3求 符 号 表 达 式 的 值 3.符 号 矩 阵 符 号 矩 阵 也 是 一 种 符 号 表 达 式,所 以 前 面 介 绍 的 符 号 表 达 式 运 算 都 可 以 在 矩 阵 意 义 下 进 行。但 应 注 意 这 些 函 数 作 用 于 符 号 矩 阵 时,是 分 别 作 用 于 矩 阵 的 每 一 个 元 素。通 过 sym函 数 创 立 符 号 矩 阵,矩 阵 元 素 可 以 是 任 何 不 带 等 号 的 符 号 表 达 式,各 符 号 表 达 式 的 长 度 可 以 不 同,矩 阵 元 素 之 间 可 用 空 格 或 逗 号 分 隔。例 如,在 命 令 窗 口 中
46、 输 入 A=sym(*a,2*b;3*a,O1),就 完 成 了 一 个 符 号 矩 阵 A=a 的 创 建,输 出 的 结 果 为:3 0A=a,2*b3*a,0需 要 注 意 的 是:符 号 矩 阵 的 每 一 行 的 两 端 都 有 方 括 号,这 是 与 MATLAB数 值 矩 阵 的 一 个 重 要 区 别。在 MATLAB中,数 值 矩 阵 不 能 直 接 参 与 符 号 运 算,必 须 先 转 化 为 符 号 矩 阵。29精 通 M ATLAB科 学 计 算(第 2 忡-(1)将 数 值 矩 阵 转 化 为 符 号 矩 阵 函 数 调 用 格 式 为:sym(数 值 矩 阵)(
47、2)将 符 号 矩 阵 转 化 为 数 值 矩 阵 函 数 调 用 格 式:numeric(A)由 于 符 号 矩 阵 是 一 个 矩 阵,所 以 符 号 矩 阵 还 能 进 行 有 关 矩 阵 的 运 算。MATLAB还 有 一 些 专 用 于 符 号 矩 阵 的 函 数,这 些 函 数 作 用 于 单 个 的 数 据 毫 无 意 义。例 如:transpose(s):返 回 s 矩 阵 的 转 置 矩 阵。determ:返 回 s 矩 阵 的 行 列 式 值。其 实,许 多 应 用 于 数 值 矩 阵 的 函 数,如 diagx triu,trik inv、det、rank、e ig等,也
48、 可 以 直 接 应 用 于 符 号 矩 阵。4.符 号 表 达 式 的 四 则 运 算 符 号 表 达 式 的 四 则 运 算 比 较 简 单,常 用 的 函 数 介 绍 如 下。factor(S):对 S 分 解 因 式,S 是 符 号 表 达 式 或 符 号 矩 阵。expand(S):对 S 进 行 展 开,S 是 符 号 表 达 式 或 符 号 矩 阵。collect(S):对 S 合 并 同 类 项,S 是 符 号 表 达 式 或 符 号 矩 阵。collect(S,v):对 S 按 变 量 v 合 并 同 类 项,S 是 符 号 表 达 式 或 符 号 矩 阵。simplify(
49、S):应 用 函 数 规 则 对 S 进 行 化 简。sim ple(S):调 用 MATLAB的 其 他 函 数 对 表 达 式 进 行 综 合 化 简,并 显 示 化 简 过 程。2.5.2 常 用 的 符 号 运 算 符 号 变 量 和 数 字 变 量 之 间 可 转 换,也 可 以 用 数 字 代 替 符 号 得 到 数 值。符 号 运 算 种 类 非 常 多,常 用 的 符 号 运 算 有 代 数 运 算、积 分 和 微 分 运 算、极 限 运 算、级 数 求 和、进 行 方 程 求 解 等。出 于 篇 幅 的 考 虑,下 面 仅 对 数 值 计 算 中 常 用 的 符 号 运 算
50、进 行 介 绍,其 他 的 符 号 运 算 的 使 用 方 法 大 同 小 异,读 者 可 通 过 MATLAB的 帮 助 文 档 或 其 他 关 于 符 号 函 数 工 具 箱 的 书 籍 进 行 学 习,此 处 不 再 赘 述。数 值 计 算 中 常 用 的 符 号 运 算 有 微 积 分 计 算,下 面 分 别 进 行 介 绍。d iff是 求 微 分 最 常 用 的 函 数,其 输 入 参 数 既 可 以 是 函 数 表 达 式,也 可 以 是 符 号 矩 阵。常 用 的 格 式 是:diff(f,x,n),表 示 f 关 于 x 求 n 阶 导 数。in t是 求 积 分 最 常 用