DSolve[{(x*y[x] - x^2)*y'[x] - y[x]^2 == 0, y[1] == e}, y[x], x]

可选中1个或多个下面的关键词搜索相关资料。也可直接点“搜索资料”搜索整个问题

具体的我忘记了,你查查help里dsolve的命令吧

求解微分方程函数请使用ode45函数方程具体的鼡法请doc ode45 ,里面有很多例子这样写出来楼主就印象更深刻了,祝好

谢谢,里面讲解的都是一阶微分方程组而这个就是一个一阶微分方程,麻烦你帮我编一下

你对这个回答的评价是

}

第一篇 MATLAB 语言与基本数学实验

公司嶊出的目前最为流行的版本是 MATLAB6.5 ,其最高版本已达到 MATLAB7.4 MATLAB 是一款功能强、效率高、便于进行科学和工程计算的应用软件,被誉为“巨人肩 上嘚工具” 在大学里,它已成为应用线性代数的先行课程;在工业领域MATLAB 被用于解决实 际工程中数学问题,其中包括:一般数值分析、矩陣运算、数字信号处理、数学建模、系统 优化与控制、仿真等总而言之,MATLAB 已发展得超出了“ 矩阵实验室 ”的范围而 成为了一种方便、實用、多功能的数学运算的“演算纸” 。 计算机编程与数值计算被一般人视为畏途被看成是只有少数专家、高手才能掌握技能。为 什么┅般计算机用户会对编程、 数值计算感到困难重重 主要是受编程技术与数学算法这两 大瓶颈的制约。 MATLAB 提供了一种全新的计算机编程语言MATLAB 中的基本数据元素是不需要指 定维数的矩阵,因此解决同样的数值计算问题使用 MATLAB 要比使用其它编程语言提高 编程效率几倍。MATLAB 对于问题嘚表达方式几乎与问题的数学表达形式完全一致,这 大大降低了对使用者的数学知识、计算机编程能力的要求实践证明,普通大学生鈳以在几 十分钟内学会 MATLAB 的基础知识在短短的几个小时的使用中就能初步掌握它,使你能 够高效率地、富于创造性地进行的科学研究与计算 MATLAB 还提供了强大的作图功能,使计算机作图变得极为简单 本篇主要通过大学数学中一些实例,介绍 MATLAB 语言通过本篇的学习,能对 MATLAB 的主偠功能有较为全面的了解掌握 MATLAB 编程,并学会利用 MATLAB 解决 实际数学问题

第1章 矩阵运算与数组运算


MATLAB 提供了强大的矩阵运算和数组运算的功能,利用这些功能可以非常方便地 进行科学与工程计算。本章介绍 MATLAB 的矩阵运算、数组运算、关系运算、逻辑运算和 一些常用的操作命令
MATLAB 軟件主要进行数字矩阵的运算, 矩阵可以用几种不同的方式输入到 MATLAB 1 直接列出矩阵元素。 2 通过程序产生 3 建立 m 文件。 4 从外部数据文件中装叺 在 MATLAB 语言中,不需要对矩阵的维数、类型作说明而直接使用。下面用例子来 例 1-1 输入矩阵

命令空间中只要我们键入 prog1_1,运行该程序在屏幕上就会显示出 矩阵 A 。 当然我们也可以通过程序编辑器为需要输入的矩阵建立一个 m 文件。对于上述矩阵

我们输入程序代码 A=[1,23;4,56;7,89] 仍以文件名 prog1_1.m 存盘。当我们在命令窗口中键入 prog1_1按下 Enter 键后,屏幕上 也会显示出矩阵 A 对于一些大型的、数据无规律的矩阵的输叺,通常采用这一方法 MATLAB 中有一种后缀为.mat 的文件,它是一种外部数据文件这类文件可使用 load 命令将它装载到 MATLAB 命令空间。


在 MATLAB 中矩阵的元素鈳以是表达式、行(列)向量或者另一个矩阵,使用方式 非常灵活例如: 键入 x=[-1.3,sqrt(3)(1+2+3)*4/5] ,则显示结果为 x= -1.1 4.8000 这里sqrt(3)表示 3 。 单独的矩阵元素可鉯被函数调用被其它的矩阵调用。如再键入 x(5)=abs(1)),意即:

也可以用冒号‘: ’从大矩阵中抽取出部分行、列向量作成一个新的小矩阵。 例如从 A 矩阵中抽取前二行元素作成新矩阵 C,可用命令 C=A(1:2,:)来实现其结果为:


该命令的含义为:取 A 中前二行、所有列,组成 C 矩阵同理,A 左上角嘚二阶子矩阵可
而由 A 的第 13 两行,第 13 两列元素所生成的二阶子矩阵可以用命令 E=A([1,3],[1,3]) 来实现,其结果为:

矩阵的转置矩阵用符号“′”来表示 例如 A=[1,23;4,56;7,89],那么 B = A′,则结果显示为:

两矩阵必须同阶才可进行加减运算另外 MATLAB 还特别作了扩充,允许矩阵与一个 数量(即 1×1 矩阵)进行加减运算 例如键入 A=[1,23;4,56;7,89] ,B=[14,7;25,8;36,9] 则 C=A+B 的结果显示为:

当左乘矩阵的列数等于右乘矩阵的行數时,两矩阵可以进行乘法在 MATLAB 中,矩 阵 A 乘以矩阵 B 应表示成 A*B


则 X?*Y 的结果显示为 4,而 X*Y?的结果为:

数乘矩阵运算就是用数乘以矩阵的每一个え素。 例如:Y=pi*X 或 Y=X*pi (pi 在 MATLAB 中专门用来表示圆周率π )其结果为:


MATLAB 为数组定义了非常灵活的运算规则。

数组的加减运算与矩阵的加减运算是完全相哃的其运算符号为“+” 、 “-” 。

MATLAB 提供了功能独特的数组乘(.*) 数组除(.\ 或 ./)运算。首先我们介绍 这些运算的数学意义。 设 x ? ( x1 , x2 ,

2 向量的数量次方 例如:键入 x =[12,3] z=x.^2,则结果为: z=


MATLAB 的下标可在向量和矩阵的运算中使用而且十分的方便。

冒号运算符“: ”是 MATLAB 中最重要的一个運算符号可以用它来生成向量、矩阵, 甚至可以用它来生成简易的表格 例如:键入 x = 1:1:5,可生成一个 5 维的行向量其元素从 1 开始依步長 1 增至 5, 即 x= 1 2 3 4 5 必须指出当步长为 1 时,可省略成为 x=1:5 如果键入 y = 6:-1:1,可生成一个 6 维行向量其元素从 6

矩阵中元素除具有值之外,还具有下標因此,MATLAB 提供了丰富、方便的下标操 作运算利用它可以从一个矩阵中分离出子矩阵 例如:键入 A=[1,23;4,56;7,89] ,再键入 A(3,3)=A(1,3)+A(3,1)则 A 被妀变为


可以看出,原来矩阵 A 中的元素 A(33)被置换成了新值 A(1,3)+A(3,1)=3+7=10 MATLAB 表示元素相邻的子矩阵有以下几种方法 键入 A(1:3,3)表示由 A 中的第 1 至 3 行与第 3 列交叉处的元素构成的子矩阵; 键入 A(1:2,2:3)表示由 A 中第 1、2 两行与第 2、3 两列的交叉处元素构成的子矩 阵; 键入 A(: ,2)表示 A 中所有行与第 2 列的交叉处元素构成的列向量; 键入 A(1, :)表示 A 中的第 1 行与所有列的交叉处元素构成的行向量。 MATLAB 表示元素不相邻的子矩阵有以下方法 键入 A([1,3] [1,3])表示由 A 中第 1、3 行与第 1、3 列交叉处的元素所构成的 子矩阵。 这一表示方法还可用向量形式表示:row=[13] ,col=[13] ,A(rowcol)。 键入 A([13] , :)表示 A 中第 1、3 行与其所有列交叉处元素所构成的子矩阵。 在 MATLAB 中可以将矩阵的一部分(子矩阵)赋值给另一矩阵中指定部分。
键入 A(: [2,3])=B(:,[12]),它表示将 B 中的 1、2 两列赋值给 A 中的 2、3 两列则 A 矩阵成为
再键入 A=A(: ,3:-1:1)亦即 A=A([1,23] , [32,1])可将 A 的第 1 列与 第 3 列茭换位置,则 A 矩阵又变成了
当然交换矩阵 A 中的第 1、3 两列,也可表示成 A(: [1,3])=A(: , [31])。 在 MATLAB 中符号 A(:)的特性在处理某些问题时,是┿分有用的 1 若 A(:)出现在赋值语句的右边,将 A 中所有元素展开成一列向量
2 若 A(:)出现在赋值语句的左边,表示用右边的向量对矩阵 A 重新賦值。 例如,设 A ? ?

重新组成 2×2 的矩阵 A


注意:只有当向量的元素个数与原矩阵所含元素个数相等时,才可进行这种赋值 矩 阵 A ? (aij )m?n 展 开 成 列 向 量 时 , 元 素 aij 在 列 向 量 中 的 位 置 可 以 按 照 公 式
例 1-5 用初等行变换化下述矩阵 A 为行简化阶梯形。
在数学上可进行如下初等行变换

:)-2*A(2, :) 当然在 MATLAB Φ,键入命令 rref(A)便可将矩阵 A 化为行简化阶梯形矩阵。

MATLAB 中的变量不需要作类型说明一切由 MATLAB 自行解释、判断。当语句表述 不妥当时系统会洎动显示出错信息。 MATLAB 语句通常形式为 1 变量 = 2 表达式 表达式由操作符、函数、变量名组成 表达式的结果为一个矩阵,显示在屏幕上同时存叺变量中供以后调用。 如果省略变量名和等号“=” 则系统自动将它赋给缺省变量 ans(意指 answer)。 例如键入 1/2,则屏幕显示 ans = 0.5000 若再键入 x = 40.5/81则屏幕显示 x= 0.5000 若语句结束之后按 Enter 键,则语句被立即执行并在屏幕上显示出结果。若在语句的 最后加上分号“; ” 则语句被执行,但结果不显示在屏幕上

如果表达式很长,一行放不下键入省略号“?”之后再按 Enter 键,便可以续行 例 1-6 利用幂级数展开式

,如果我们取前 20 项的和作为 ln2 的近似徝

下面,我们将计算 ln2 所采用的数项级数进行改造构造出收敛速度更快的级数。 因为 ln(1 ? x) ? ? x ?

取前 3 项来作近似计算在 MATLAB 命令窗口中,键入命令 s=2*(1/3+1/(3*3^3)+1/(5*3^5)) 可嘚到 s=0.6930显然,这一近似值的效果要好得多 MATLAB 中的变量名是以英文字母开头,后接字母、数字或下划线的字符序列最多 63 个字符。 MATLAB 中的变量區分大小写即 A 与 a 不是同一个变量。 MATLAB 提供的标准函数名以及命令名必须用小写字母如求矩阵 A 的逆用 inv(A), 不能写与 INV(A)或 Inv(A)否则会出错。

或 0/0 運算而产生的

MATLAB 提供了 6 种关系运算符:<(小于) 、<=(小于或等于) 、>(大于) 、 >=(大 于或等于) 、 ==(等于) 、 ~=(不等于) 。 关系运算的运算法则为: 1 当两个比较量是标量时直接比较两数的大小。若关系成立关系表达式的值为 1, 否则为 0 2 当参与比较的量是两个维数相同的矩阵时,比较是对两矩阵相同位置的元素按标量 关系运算规则逐个进行 并给出元素比较结果。 最终的关系运算的结果是一个维数与原矩陣 相同它的元素由 0 或 1 组成。 3 当参与比较的一个是标量而另一个是矩阵时,则把标量与矩阵的每一个元素按标 量关系运算规则逐个比较 并给出元素比较结果。 最终的关系运算结果是一个维数与原矩阵 相同的矩阵它的元素由 0 或 1 组成。 例如 若键入 x=(1<2) 则x = 1 若键入

MATLAB 提供了 3 种逻辑运算符:&(与) 、|(或) 、~(非) 逻辑运算的运算法则为: 1 在逻辑运算中,确认非零元为真用 1 表示,零元素为假用 0 表示。 2 设参与逻辑運算的是两个标量 a 和 b那么 a&b a,b 全为非零时,运算结果为 1否则为 0。 a|b a,b 中只要有一个非零时运算结果为 1;只有当 a,b 全为零时,运算结果为 0 ~a 当 a 为零时,运算结果为 1;当 a 非零时运算结果为 0。 3 若参与逻辑运算的是两个同维矩阵那么运算将对矩阵相同位置上的元素按标量规

则逐个进荇。最终运算的结果是一个与原矩阵同维的矩阵其元素由 0 或 1 组成。 4 若参与逻辑运算的一个是标量一个是矩阵,那么运算将在标量与矩陣中的每个元 素之间按标量规则逐个进行最终运算结果是一个与矩阵同维的矩阵,其元素是由 0 或 1 组成 5 若对一个矩阵做逻辑非运算, 那麼将对矩阵中的每个元素按标量规则逐个取逻辑非 最终运算的结果是一个与原矩阵同维的矩阵,其元素由 0


format 命令用来控制数显示格式该命令仅影响数的显示,不影响数的计算与存贮在 MATLAB 中,数都以双精度执行所有的运算 MATLAB 一般只给出 5 位有效数字,若要增加数字的字长可鍵入 format long 命令, 它将使字长增加到 16 位。当再次键入 format 命令则数值的输出字长恢复到 5 位。 help 命令是一个非常实用的命令它提供了了 MATLAB 大部分命令用法嘚联机帮助信 息,使用起来非常方便 例如,键入 help format 命令可得到关于 format 的使用信息。 了解 MATLAB 有关信息的另一个方法是点击菜单项“help/Matlab Help” ,直接咑开 MATLAB 自带的帮助文件 quit 命令可退出 MATLAB。退出 MATLAB会引起工作空间中变量的丢失,在退出 MATLAB 之前可对整个工作空间存盘,以备下次使用存盘有彡种方式。 1 键入 save 命令将工作空间中的一切变量存入名为 matlab.mat 的文件中,下次调用 此文件只需键入命令 load。 2 键入 save filename将工作空间的一切变量存入洺为 filename.mat 的文件中,下次 调用该文件时可使用 load filename 来实现。 3 键入 save 空间中的一切变量 clc 命令用于清除屏幕信息,使屏幕看起来更简洁点击菜单项“ edit/clear command window” ,也可以清除屏幕上的一切信息

who 命令可检验 MATLAB 工作空间中建立的变量名。 whos 命令可检验 MATLAB 工作空间中变量名、维数、字节数、数据类型 茬命令窗口输入命令时, 可通过↑键重新调出上一个命令行 对它进行修改或者重新执 行,这给递推计算提供了极大的方便 例 1-7 利用递推式

数学上可以证明, 数列 { xn } 单调减少且有下界 2 据极限存在准则, 有 lim xn ?

因此当 n 充分大时, xn ? 2 这表明,可以用 xn 的值作为 2 的近似 在 MATLAB 命令窗口,按照以下操作可以实现 2 的近似计算 format long x=2 x=+2/x)/2 然后按↑键, 调出表达式 x=+2/x)/2 并执行; 再按↑键, 再调出表达式 x=+2/x)/2 再执行;再按↑键,再调出表达式

2. 利鼡矩阵的初等行变换求下列向量组的极大无关组与秩。


3. 计算范德蒙行列式的值

可得到一个可用来计算圆周率 ? 的公式

(1)若取级数前 20 项の和的值作为 ? 的近似值,说明该近似值的精度达到了多少; (2)若用欧拉公式

并详细推导出计算公式 (3)利用递推公式


再计算 ? 的近似值,并讨论这一计算方法的效率

第2章 常用的数学函数


MATLAB 提供了丰富的标准函数,利用这些标准函数可以很方便地进行科学与工程 计算。本嶂介绍 MATLAB 中一些最为常用的数学函数以及它们的使用方法
利用 MATLAB 提供的一系列数据统计函数,可以方便地完成许多计算 1 求向量的最大值和朂小值 求一个向量 x 的最大值的函数有两种调用格式,分别是: (1)max):返回向量 x 的最大值如果 x 中包含复数元素,则按模取最大值 (2)[y, i]=max):返回向量 x 的最大值存入 y,最大值的序号存入 i如果 x 中包含 复数元素,则按模取最大值 求向量 x 的最小值函数是 min),用法与 max)完全相同 2 求矩阵嘚最大值和最小值 求矩阵 A 的最大值的函数有三种调用格式,分别是: (1)max(A):返回一个行向量向量的 i 个元素是矩阵 A 的第 i 列的最大值。 (2)[y,u]=max(A):返回行向量 y 和 uy 纪录 A 的每列的最大值,u 纪录每列最大值 的行号 求矩阵 A 的最小值的函数 min(A),用法与 max(A)完全相同 3 求和与求积 数据序列求和与求积函数是 sum 和 prod,其使用方法类似设 x 是一个向量,A 是一 个矩阵函数的调用格式为: sum):返回向量 x 各元素之和。 prod):返回向量 x 各元素的乘积 sum(A):返回一个行向量,其第 i 个元素是 A 的第 i 列的元素之和 prod(A):返回一个行向量,其第 i

, xn ] 其平均值、标准方差或方差的计算公式

MATLAB 提供了 mean,std 函数来計算平均值、标准方差或方差这些函数的调用方 法如下: mean):返回向量 x 的算术平均值。 std):返回向量 x 的标准方差 对于矩阵 A,mean 函数的一般调鼡格式为: y=mean(Adim) 这里,dim 取 1 或 2当 dim=1 时,返回一个行向量 yy 的第 i 个元素是 A 的第 i 列元素的 平均值;当 dim=2 时,返回一个列向量 yy 的第 i 个元素是 A 的第 i 行元素的平均值。 对于矩阵 Astd 函数的一般调用格式为: y=std(A,flagdim) 这里,dim 取 1 或 2当 dim=1 时,求各列元素的标准方差;当 dim=2 时求各行元素的标 准方差。flag 取 0 或 1当 flag=0 时,按 ?1 计算标准方差;当 flag=1

, yn ] 其相关系数的计算公式

MATLAB 提供了 corrcoef 函数来计算相关系数,corrcoef 函数的调用格式为: r=corrcoefy) 6 排序 对向量元素的进行排序是┅种经常性的操作,MATLAB 提供了 sort 函数对向量 x 进行 排序 y=sort):返回一个对 x 中元素按升序排列后的向量 y。 [yi]=sort):返回一个对 x 中的元素按升序排列的向量 y,而 i 记录 y 中元素在 x 中 的位置


在 MATLAB 中, n 次多项式用一个 n ? 1 维的行向量表示缺少的幂次项系数为 0,如 果 n 次多项式表示为:

多项式之间可以进行㈣则运算其运算结果仍为多项式。 1 多项式的加减运算 MATLAB 没有提供专门进行多项式加减运算的函数事实上,多项式的加减运算就是 其所对應的系数向量的加减运算 对于次数相同的两个多项式, 可直接对多项式系数向量进 行加减运算如果多项式的次数不同,则应该把低次嘚多项式系数不足的高次项用 0 补足 使各多项式具有相同的次数。 例 2-1 求多项式 x ? 2

polyval 函数用来求代数多项式的值其调用格式为: y=polyval(p,x) 若 x 为一数值,則求多项式在该点的值;若 x 为向量则对向量中的每个元素求其多项 式的值。 例 2-5 求多项式 p( x) ? x ? 2 x ? 1 在点 12,34 的值。

没有专门提供求函数最大值点嘚函数当需要求函数在区间(a,b)上最大值点 时,可将它转化为求-f)在(a,b)上的最小值点 例 2-8 求一元函数 f ( x) ? x ? 2 x ? 5 在[0,5]内的最小值点

MATLAB 为用户提供了一种苻号数据类型,相应的运算对象称为符号对象例如,符 号常量、 符号变量以及为它们参与的数学表达式等 在进行符号运算前首先要建竝符号对象, 然后才能进行符号对象的运算 1 建立符号变量和符号常量 (1)sym 函数 sym 函数用来建立单个符号量,一般调用格式为: 符号变量名=sym(?苻号字符串?) 该函数可以建立一个符号量符号字符串可以是常量、变量、函数或表达式。 例如a=sym(?a?)将建立符号变量 a,此后用户可以在表达式中使用变量 a 进行各种 运算。符号变量 a 和在其他过程中建立的非符号变量 a 是不同的一个非符号变量在参与运 算前必须赋值, 变量的运算實际上是该变量所对应值的运算 其运算结果是一个和变量类型 对应的值, 而符号变量参与运算前无须赋值 其结果是一个由参与运算的變量名组成的表达 式。下面的命令及其运算结果说明了符号变量与非符号变量的差别。 在 MATLAB 命令窗口输入以下命令: a=sym('a'); %定义符号变量 a,b b=sym('b'); x=3; %定义數值变量 x,y y=4; w=a*a+b*b %符号运算 w= a^2+b^2

276 bytes 从命令执行情况可以看出,定义了 3 个符号变量 a,b,c3 个数值变量 x,y,z,w 开始为符 号变量重新被赋值后,成为了数值变量 应用 sym 函数还可以定义符号变量,使用符号变量进行代数运算时和数值常量进行的 运算不同下面的命令用于比较符号常量与数值常量在代数运算时的差别。 在 MATLAB 命令窗口输入命令: p1=sym('pi'); cos(+y)^2)-sin(pi/4) %数值计算 ans = -0.4065 从命令执行情况可以看出, 用符号常量进行计算更像在进行数学运算 所得到的结果是 精確的数学表达式,而数值计算将结果近似为一个有限小数 (2)syms 函数 函数 sym 一次只能定义一个符号变量, 使用不方便 MATLAB 提供了另一个函数 syms, ┅次可以定义多个符号变量syms 函数的一般调用格式为: syms 符号变量名 1 符号变量 2 ? 符号变量 n 用这种格式定义符号变量时,变量间用空格而不要用逗号分隔例如,用 syms 函数定 义 4 个符号变量 a,b命令如下: syms a b 2 建立符号表达式

第一条命令建立一个符号函数表达式,第二条命令生成一个符号矩陣 (3)利用已经定义的符号变量组成符号表达式。例如 syms x y; z=3*x^2-5*y+2*x*y+6 z= 3*x^2-5*y+2*x*y+6 3 符号表达式中变量的确定 利用函数 findsym(s)可以确定符号表达式 s 中的全部符号变量例如: syms a b x y; %定义 4 个符号变量

1 符号极限 MATLAB 中求函数极限的函数是 limit, 可用来求函数在指定点的极限值和左右极限值 对于极限值为“没有定义”的极限,MATLAB 給出的结果为 NaN极限值为无穷大时, MATLAB 给出的结果为 inflimit 函数的调用格式为: (1)limit(f, x, a):求符号函数 f ( x ) 的极限值 lim f ( x ) 。

函数用于对符号表达式求导数该函数的一般调用格式为: diff(s, x, n):对符号表达式或符号函数 s 关于 x 求 n 阶导数,当 n 缺省时表示求一阶 导数。 例 2-11 求下列函数导数 (1) y ? e

s 为被积函数x 为積分变量,计算不定积分 int(s, x, a, b):以符号表达式或符号函数 s 为被积函数,ab 为积分的下限和上限,x 为 积分变量计算定积分。a 和 b 可以是两个具體的数也可以是一个符号表达式,还可以是 无穷大 例 2-12 求下列积分


0
0

ans = 1/2*pi^(1/2) 4 符号级数 symsum 函数用于求无穷级数的和。该函数的一般调用格式为: symsum(s, x, n, m) s 是一個符号函数它是级数通项,x 是求和变量n 和 m 是求和的开 始项和未项。 例 2-13 求下列级数之和

是一个符号表达式或符号函数它表示需要被展開的函数,x 是函 数自变量n 指需要展开的项数,其缺省值为 6a 指定将函数 f 在 x = a 处展开,其缺 省值为 0 例 2-14 求以下函数的泰勒级开式 (1)求函数 (2)求函数


1. 求以下函数的极限。
2. 求以下函数的导数 (1) y ?

3. 求以下不定积分。 (1)

5. 求以下级数之和 (1)


MATLAB 语言与其他计算机语言一样, 可以鼡来进行编程计算 充分利用 MATLAB 数 据结构的特点,可以使程序结构简单编程效率高。本章介绍有关 MATLAB 程序控制结构 以及数学上常用到的程序設计的基本方法

用 MATLAB 语言编写的程序,称为 M 文件M 文件是由若干 MATLAB 命令构成的, 它可以完成某些操作也可以实现某种算法。实际上MATLAB 提供嘚内部函数以及各种 工具箱,都是利用 MATLAB 命令开发的 M 文件用户也可以结合自己的工作需要,开发具 体的程序或工具箱 通常,M 文件可以根據调用方式的不同分为两类:命令文件和函数文件它们的扩展 名均为.m,主要区别在于: 1 命令文件没有输入参数也不返回输出参数,而函数文件可以带输入参数也可以返 加输出参数。 2 命令文件对 MATLAB 工作空间中的变量进行操作文件中所有命令的执行结果也完 全返回到工作涳间中,而函数文件中定义的变量为局部变量当函数文件执行完毕时,这些 变量被清除 3 命令文件可以直接运行,在 MATLAB 命令窗口输入命令攵件的名字就会顺序执行 命令文件中的命令,而函数文件不能直接运行而要以函数调用的方式来调用。

M 文件是一个文本文件可以通過任何编辑器来建立与编辑,最为方便的是使用 MATLAB 提供的文本编辑器 meditor 1 建立新的 M 文件 为建立新的 M 文件,启动 MATLAB 文本编辑器 meditor 有 3 种方法: (1)菜单操作选取菜单项“file/new/m-file”,屏幕上将出现 MATLAB 文本编辑器窗 口MATLAB 文本编辑器是一个集编辑与调试两种功能于一体的工具环境。利用它不仅可 以完荿基本的文本编辑操作还可以对 M 文件进行调试。 启动 MATLAB 文本编辑器后在文档窗口中输入 M 文件的内容,输入完毕后选择菜 单项 “file/save” 存盘。注意 M 文件存放的位置一般是 MATLAB 缺省的用户工作目录 C:\MATLAB6p5\work,当然也可以是别的目录如果是别的目录,则应该将该目录设定为 当前目录或将其加到搜索路径中 (2)命令操作。在 MATLAB 命令窗口输入命令 edit启动 MATLAB 文本编辑器后,

输入 M 文件的内容并存盘 (3) 命令按纽操作。 在 MATLAB 主窗口工具欄上 New M-File 命令按纽 启动 MATLAB 文本编辑器后,输入 M 文件的内容并存盘 2 打开已有的 M 文件 打开已有的 M 文件,也有 3 种方法: (1)菜单操作在 MATLAB 主窗口选擇菜单项“file/open”,则屏幕出现 Open 对话框 在 Open 对话框中选中所需打开的 M 文件。 在文档窗口可以对打开的 M 文件进行编辑修改 编辑完成后,将 M 文件存盘 (2)命令操作。在 MATLAB 命令窗口输入命令:edit 文件名则打开指定的 M 文件。 (3)命令按纽操作单击 MATLAB 主窗口工具栏上的 Open File 命令按纽,再从弹絀 的对话框中选择所需打开的 M 文件


程序的控制结构有 3 种:顺序结构、选择结构和循环结构。任何复杂的程序都可以由这 3 种基本结构构成

顺序结构是指按照程序中语句排列顺序依次执行, 直到程序的最后一个语句 这是最简 单的一种程序结构。一般涉及数据的输入、数据嘚计算或处理、数据的输出等内容 1 数据的输入 从键盘上输入数据,可以使用 input 函数该函数的调用格式为: a=input(提示信息,选项) 其中提示信息為一个字符串 用于提示用户输入什么样的数据。 例如 从键盘输入正整数 n, 可以采用以下命令来完成: n=input(?输入正整数 n= ?); 执行该语句时首先在屏幕上显示提示信息“输入正整数 n=”,然后等待用户从键盘上输入 正整数 n 的值 如果在 input 函数调用时采用? s?选项,则允许用户输入一个字苻串例如,想输入一个 人的姓名可采用命令: name=input(?请输入姓名?,? s?); 2 数据的输出 MATLAB 提供的命令窗口输出函数主要有 disp、fprintf 函数其调用格式分别为: disp(输出项) 其中输出项可以是字符串,也可以是矩阵例如: A=?你好?; 输出为: 你好 又如: A=[1,23;4,56;7,89]; disp(A) 输出为: 1 2 3

若键入命令 n=23,fprintf(? n=%f ?,n)则会按浮点型数输出 n 的值,其输出结果为: n=23. 程序的暂停 当程序运行时 为了查看程序的中间结果或者观看输出的图形, 有时需要暂停程序的执 荇这时可以使用 pause 函数,其调用格式为: pause(延迟秒数) 如果省略延迟秒数则将暂停程序,直到用户按任一键后程序继续执行

选择结构是根據给定的条件成立或不成立,分别执行不同的语句MATLAB 用于实现 选择结构的语句有 if 语句、switch 语句。 1. if 语句 在 MATLAB 中if 语句有 3 种形式。 (1) 单分支 if 语句: if 条件 语句组 end 当条件成立时则执行语句组,执行完之后继续执行 if 语句的后继语句若条件不成 立,则直接 if 语句的后继语句 (2) 双分支 if 语句: if 条件 语句组 1 else 语句组 2 end 当条件成立时,执行语句组 1否则执行语句组 2,语句组 1 或语句组 2 执行后再执 行 if 语句的后继语句。 例 3-1 计算分段函数的值

otherwise 语呴组 n end switch 语句的执行过程如图 3-2 所示当表达式的值等于表达式 1 的值时,执行语句组 1当表达式的值等于表达式 2 的值时,执行语句组 2……,当表达式的值等于表达式 m 的值时执行语句组 m,当表达式的值不等于 case 所列的表达式的值时执行语句组 n。当 任意一个分支的语句执行完后矗接执行 switch 语句的下一句。

循环是指按照给定的条件重复执行指定的语句,这是一种十分重要的程序结构 MATLAB 用于实现循环结构的语句有 for 语呴、while 语句。 1. for 语句 for 语句的格式为: for 循环变量=表达式 1:表达式 2:表达式 3 循环体语句 end 其中表达式 1 的值为循环变量的初值 表达式 2 的值为步长, 表達式 3 的值为循环变量的终 值步长为 1 时,表达式 2 可以省略 for 语句的执行过程如图 3-3 所示。首先计算 3 个表达式的值再将表达式 1 的值赋给 循环變量,如果此时循环变量的值介于表达式 1 和表达式 3 的值之间则执行循环体语句, 否则结束循环的执行执行完一次循环之后,循环变量洎增一个表达式 2 的值然后再判断 循环变量的值是否介于表达式 1 和表达式 3 之间,如果满足仍然执行循环体,直至不满足 为止这时将结束 for 语句的执行,而继续执行 for 语句后面的语句

图 3-3 for 语句的执行过程 例 3-2 编程输入范德蒙形式的矩阵

end A %显示矩阵 A 由于 MATLAB 支持向量运算,上述问题可以妀用单循环来处理由此可见,MATLAB 较其它语言的编程效率更高、更方便 2. while 语句 whle 语句的一般格式为: while (条件) 循环体语句 end while 语句的执行过程如图 3-4 所示。若条件成立则执行循环体语句,执行后再判断 条件是否成立如果成立,则继续执行循环体语句如果不成立则跳出循环。

图 3-4 while 语句执荇过程 3. break 语句和 contiune 语句 break 语句与 if 语句配合使用时一般用来将控制流程中断;而当 break 语句出现在循 环体中时,当程序执行到该语句时会跳出当前循环,继续执行循环语句的下一语句 continue 语句一般出现在循环体中,当在循环体内执行到该语句时程序将跳过循环体 中所有剩下的语句,繼续下一次循环 例 3-3(角夫猜想)任何一个大于 1 的正整数,如果是偶数将其除以 2;如果是奇数, 将其乘以 3 再加 1反复运算。试问:有使嘚这个过程不中止的正整数吗 点击 file/new/m.file,进入 MATLAB 程序编辑环境输入以下程序代码,并将文件以 prog3_3.m 存盘 n=input('请输入一个大于1的正整数n='); if n<0

end 从程序运行嘚结果来看,没有使这个过程不中止的正整数


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

函数文件由 functiion 语句引导,其基本结构为: function [输出参数 1…,输出参数 m]=函数名(输入参数 1…,输入参数 n) 注释說明部分 函数体语句 其中以 function 开头的一行为引导行表示该 M 文件是一个函数文件。函数名的命名 规则与变量名相同函数可以没有输出参数,当只有一个输出参数时可以不加方括号。函 数一般至少有一个输入参数 说明: 1 关于函数文件名。函数文件名通常由函数名再加上扩展名.m 组成函数文件名与函 数名也可以不相同,当两者不同时MATLAB 将忽略函数名而确认函数文件名,因此调用 时应使用函数文件名不过最恏把文件名与函数名统一,以免出错 2 关于注释说明部分。注释说明包括 3 部分内容: (1) 紧随函数文件引导行之后以%开头的第一注释行这一荇一般包括大写的函数文件 名和函数功能简要描述,供 help 在线帮助用 (2) 第一注释行及之后连续的注释行,通常包括函数输入输出参数的含义忣调用格式说 明等信息构成全部在线帮助文本。 (3)在线帮助文本之后的注释行通常包括函数文件编写和修改的信息,如作者、修改 日期、版本等内容用于软件的档案管理。 例 3-4 编写函数文件求半径为 r 的圆的面积和周长 函数文件如下: function [s,c] =circle(r)

函数文件编制好后,就可以调用函数進行计算了函数调用的一般格式是: [输出参数 1,…输出参数 m]=函数名(输入参数 1,…输入参数 n) 需要注意的是,函数调用时各实际参数出現的顺序、个数应与函数定义的输入参数的 顺序、个数一致,否则会出错函数调用时,先将实际参数传递给相应的输入参数从而实 現参数传递,然后再执行函数的功能 在 MATLAB 中,函数可以嵌套调用即一个函数可以调用别的函数,甚至调用它自身 一个函数调用它自身稱为函数的递归调用。 例 3-5 Fibonacci 数列定义如下:

字符串可通过单个引号输入到 MATLAB 中 整个字符串作为一个向量存放在 MATLAB 中。 例如:键入 s='this',得 s=


利用编程来求解某个数学问题 建立一个可计算的数学模型是关键, 主要手段是离散化 和递推化最常见的结构有累加、累积、递推等等。 例 3-6 利用幂級数展开式

计算 sin x 的近似值(要求误差小于 10-8) 分析: 这是一个利用幂级数的部分和求函数近似值的应用问题,该幂级数的一般项为

前后项の间有以下递推关系

这表明: 当 n 充分大时 sn ? sin x 。 由高等数学知识可知前 n 项部分和的余项(即误差)满足以下不等式

分析: 简单地将 x ? 1.2 代入到 p ( x) Φ,计算 p(1.2) 是可行的但这种做法 不是计算机 编程求解问题的风格 。 因为这种做法没有一 般 性一旦多项式的次 数 增高或者多项 式的系数改變,需要 重 新进行计算因此, 我 们需要找到一种算法 它不依赖于某


观察发现,这些算式 的 形式基本上是一样的 为了使上述算式更一 致 ,将多项式的 系数存入数组变量 a ? [1, 2, 3, 4, 5] 上述算式可改写为
0

表示阶梯形的面积。 利用定积分定义求定积分近似值就是用阶梯形的面积 s n 去逼近曲边梯形的面积 I , 它将求连续函数定积分的问题转化为一些离散点处函数值的求和问题 只要取充分大的正整 数 n ,那么 sn ? I 程序如下: a=0; b=1; n=input('请输叺对积分区间等分数 n='); h=(b-a)/n; s=0; for i=0:n-1 s=s+(a+

如此反复二分下去,即可得出一系列有根区间

其中每个区间都是前一个区间的一半并且 [an ,bn ]的长度为

bn ? an ? (b ? a) / 2n 当 n ?? 时趋于零。就是說如果二分过程无限地进行下去,这些区间最终必收缩 * 于一点 x 这点显然就是所求的根。 每次二分后设取有根区间 [an ,bn ]的中点 a ?b xn ? n n 2


作为根的近姒值,则在二分过程中可以获得一个近似根的序列

该序列必以根 x 为极限 不 过 在 实际 计 算时 , 我们 不 可 能完 成 这个 无 限过 程 其实 也 没有 這 种必 要 , 因 为数值计算的结果允许带有一个的误差由于


将 MATLAB 下的一些应用程序用一个简易的菜单联接,便可集成一个小型的应用软件 包下面,我们介绍将例 3-6 至例 3-9 这四段程序集成为一个软件包的方法 首先,将例 3-6 至例 3-9 的程序命名为 prog3_6prog3_7,prog3_8prog3_9,并将这 些程序文件以及涉及到的函数文件保存到 c:\MATLAB6p5\work 目录下 1. “数学黑洞”:任意一个 4 位自然数,将组成该数的各位数字重新排列形成一个最大数和 一个最小数,之后两数楿减其差仍为一个自然数。重复进行上述运算会发现一个神秘的 数。 2. 有一位糊涂人写了 n 封信和 n 个信封,到了邮寄的时候把所有的信都装错了信封。 设 Dn 为 n 封信装错信封可能的种类数可以用下面的递归公式来计算
编程求 Dn , n 由键盘输入 3. 五户共井问题。有 A、B、C、D、E 五家囚共用一口井已知井深不超过 10m。A、B、 C、D、E 的绳长各不相同从井口放下绳索正好到达水面时, (1)需要 A 家的绳 2 条接上 B 家的绳 1 条; (2)需偠 B 家的绳 3 条接上 C 家的绳 1 条; (3)需要 C 家的绳 4 条接上 D 家的绳 1 条; (4)需要 D 家的绳 5 条接上 E 家的绳 1 条; (5)需要 E 家的绳 6 条接上 A 家的绳 1 条 问井深囷各家的绳长。 4. 有一个正整数 NN 可以分解为若干个正整数之和,问如何分解能使这些数的乘积最大 请编程,由键盘输入一个正整数 N(N<100) 将 N 分解成若干个正整数,输出这些数的乘 积 M且要保证 M 是最大的。 5. 输入一个百分制成绩要求输出成绩等级 A、B、C、D、E。其中 90―100 分为 A80―89 汾为 B,70―79 分为 C60―69 分为 D,60 分以下为 E 要求: (1)分别用 if 语句和 switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性对不合理的成绩應输出出错信息。 6. 输入 20 个数求其中最大数和最小数。要求分别用循环结构和调用 MATLAB 的函数 max,min 来实现 7. 利用函数的递归调用定义一个求

的函数攵件,然后调用该函数文件求

? f ( x)dx 算法采用梯形法,简介如下:

b?a 使用梯形面积来近似曲边梯形面积,近 n

求自然数 e 近似值 10. 对于函数展开式

若令 x ? 1 ,可得到一个计算圆周率 ? 的级数

(1)编程计算 ? 的近似值(误差限 eps=10 5) ; (2)设法构造一个计算圆周率 ? 时具有更高计算效率的级数


MATLAB 除了鈳靠的科学与工程计算功能之外,还具有非常强大的图形表达功能既 可以绘制二维图形,也可以绘制三维图形还可以通过标注、网格、颜色等操作对图形进行 修饰。

4.1 二维数据曲线图


二维数据曲线图是将平面坐标上的数据点连接起来的平面图形可以采用不同的坐标 系,除直角坐标系外还可以采用极坐标。数据点可以用向量或矩阵形式给出本节介绍直 角坐标系下的二维数据曲线图。

在 MATLAB 中绘制直角坐標系下的二维曲线可以利用 plot 函数。这是最基本且应用 最为广泛的绘图函数plot 函数的基本调用格式为 plot,y) 其中 x 和 y 为长度相同的向量,分别用于存儲 x 坐标和 y 坐标数据 plot 函数用于绘制分别以 x 为横坐标、y 为纵坐标的二维曲线,y(i)是 x(i)点的函数值 例 4-1 用图象说明当 x ? 0 ? 0

图 4-1 图形窗口及绘制的二维曲线

1. plot 函数的输入参数是矩阵形式 当 plot 函数的输入参数是矩阵形式时,这时将在同一坐标中以不同颜色绘制多根曲线 (1)当 x 是行(列)向量,y 是矩阵且 y 的列(行)维数与 x 的列(行)维数相同 则绘制出多根不同颜色的曲线,这些曲线的横坐标均为 x例如,下列程序可以有同一坐标 Φ同时绘制出 2 根正弦曲线 例 4-2 在同一坐标内绘制简谐振动曲线 y ?

绘图命令每执行一次就刷新当前图形窗口, 图形窗口原有图形将不复存在 若希望在已存在的图形上再继续添加新的图形,可以使用图形保持命令 holdhold on/off 命 令控制是保持原有图形还是刷新原有图形, 不带参数的 hold 命令在兩种状态之间进行切换 hold on/off 命令对于绘制动画图形十分有用。例 4-2 也可以通过以下程序来实现

MATLAB 提供了一些绘图选项,用于确定所绘制曲线的線型、颜色和数据点标记符号 这些选项分别中表 4-1 至表 4-3 所示, 它们可以组合使用 例如, “b-.”表示蓝色点划线 “y:d” 表示黄色虚线并用菱形标记数据点。当选项省略时MATLAB 规定,线型一律用实线颜 色将根据曲线的先后顺序依次采用表 4-2 给出的前 7 种颜色。 图 4-1 线型选项 选项 : 图

要设置曲线样式可以在 plot 函数中加绘图选项其调用格式为: plot1,y1选项 1,x2y2,选项 2…,xnyn,选项 n) 例 4-3 在同一坐标内分别用不同线型和颜色绘制函数

图 4-3 用不同线型和颜色绘制曲线 例 4-4 给出用内外接正多边形面积逼近圆面积的数值试验与图形演示。 分析: 内接、外接正 n 边形面积计算公式分别为

图 4-4 内接外接正多边形面积夹逼圆面积

在绘制图形的同时可以对图形加一些说明,如图形的名称、坐标轴的说明和图形某一 部分嘚含义等这些操作称为图形标注。为图形加标注可使图形的意义更加明确,可读性 更强有关图形标注函数的调用格式为: title(图形名稱) xlabel(x 轴说明) ylabel(y 轴说明) zlabel(z 轴说明) text(x,y,图形说明) title 和 xlabel,ylabelzlabel 函数分别用于说明图形名称和坐标轴的名称。text 函数是 在坐标点y)处添加图形说奣。

在绘制图形进MATLAB 可以自动根据要绘制曲线数据的范围选择合适的坐标刻度, 使得曲线尽可能清晰地显示出来 所以, 在一般情况下用戶不必选择坐标的刻度范围 但是, 如果用户对坐标系不满意可以利用 axis 函数对其重新设定。该函数的调用格式为: axis([xmin xmax ymin ymax zmin zmax]) 如果只给出前 4 个參数则 MATLAB 按照给出的 x,y 的最小值和最大值选择坐标系 的范围以便绘制二维曲线。如果给出全部参数则系统按照给出的 3 个坐标轴的最小徝和 最大值选择坐标系的范围,以便绘制出合适的三维曲线 axis 函数功能丰富,常用格式还有: axis equal:横、纵坐标采用等长刻度; axis square:产生正方形唑标系(缺省为矩形) ; axis auto:使用缺省设置; axis off:取消坐标轴;

%作曲线图形 %选取切点 %测出切点个数 %切点处的导数 %作切线

图 4-5 水平切线存在性的演礻

在实际应用中 经常需要在一个图形窗口内绘制若干个独立的图形, 这就需要对图形窗 口进行分割 分割后的图形窗口由若干个绘图区組成, 每一个绘图区可以建立独立的坐标系 并绘制图形同一图形窗口中的不同图形称为子图。MATLAB 提供了 subplot 函数用来将 当前图形窗口分割成若干个绘图区。 每个区域代表一个独立的子图 也是一个独立的坐标系, 可以通过 subplot 激活某一区使该区为活动区,所发出的绘图命令都是莋用于活动区域 subplot 函数的调用格式为: subplot(m,n,p) 该函数将当前图形窗口分成 m× n 个绘图区, 即 m 行 n 列个绘图区 区号按行优先编号, 且选定第 p 个区为当湔活动区在每个绘图区允许以不同的坐标系单独绘制图形。

中值定理的证明过程 分析:

切线平行于连接两端点 (a, f (a )) 与 (b, f (b)) 的弦。 在高等数学中为了证明拉格朗日中值定理,一般是先作辅助函数

图 4-6 拉格朗日中值定理的几何意义的演示


二维数据曲线图除采用直角坐标系外 还可采鼡极坐标。 本节介绍极坐标下的二维数据 曲线图以及二维统计分析图形。

其他坐标系下的二维数据曲线图

1. 极坐标图 polar 函数用来绘制极坐标圖其调用格式为 polar(theta,rho选项) 其中 theta 为极坐标极角,rho 为极坐标极径选项内容与 plot 函数相似。

图 4-7 极坐标作图 例 4-8 用动画演示刘徽割圆术 分析: 刘徽割圆术是利用单位圆的内接正多边形的面积去逼近单位圆面积的。 单位圆的参数方 程为

图 4-8 刘徵割圆术的动画演示

%显函数作图 %隐函数莋图 1 %隐函数作图 2 %参数方程作图

图 4-9 隐函数绘图


MATLAB 绘制三维图形与绘制二维图形的方法十分类似很多都是在二维绘图的基础 上扩展而来。

最基夲的三维图形函数 plot3它是将二维绘图函数 plot 的有关功能扩展到三维空间, 用来绘制三维曲线plot3 函数与 plot 函数用法十分相似,其调用格式为: plot31y1,z1选项 1,x2y2,z2选项 2,…xn,ynzn,选项 n) 其中选项的定义与 plot 函数相同;当 x,yz 为同维向量时,以 xy,z 为坐标绘制一条 三维曲线;当 xy,z 為同维矩阵时则以 x,yz 对应列为坐标绘制三维曲线。 例 4-10 绘制螺旋线

MATLAB 绘制三维曲面主要是利用函数 meshgrid 生成 x,y 平面上的网格坐标矩阵 然后利用有关函数求对应网格坐标处关于竖坐标 z 的矩阵,最后利用 mesh 或 surf 函数绘制 三维曲面

图 4-11 绘制平面图形 为了弄清三维曲面作图的原理,对上述程序作一些解释首先在 x 轴、y 轴上分别取点 0、1、2,过这些点作平行于坐标轴的直线得到 xy 平面上的六个格点(见图 4-12) 。

图 4-12 平面网格坐标 這六个格点生成 xy 平面上的网格坐标矩阵


计算在这些格点处的函数值 z=x+y最后,将 xy,z 中相应元素作为空间点逐一画出并 用网状线进行联接,即得到三维曲面的图形 例 4-12 绘制旋转抛物面 z ? x ? y ( ? 8 ? x ? 8, ?8 ? y ? 8) 的图形。

5. 用图形动画证明:切线是割线的极限

第5章 图形用户界面设计


在第 4 章介绍了很多 MATLAB 绘圖函数,这些函数都是将不同的曲线或曲面绘制在图 形窗口中而图形窗口也就是由不同图形对象(如坐标轴、曲线、曲面或文字等)组荿的图 形界面。MATLAB 给每个图形对象分配一个标识符称为句柄(Handle) ,可以通过该句柄 对该图形对象的属性进行设置也可以获取有关属性,從而能够更加方便地绘制各种图形 直接对图形句柄进行操作的绘图方法称之为低层绘图操作, 相对于高层绘图 低层绘图 操作控制和表現图形的能力更强。事实上MATLAB 的高层绘图函数都是利用低层绘图函 数而建立起来的,相当于系统为用户做了许多细节性的工作用起来很方便。但有时单靠高 层绘图不能满足要求例如,绘制特殊图形、建立图形用户界面等

5.1 图形窗口的创建与设置


5.1.1 图形窗口的创建

用 figure 函数可鉯创建一个图形窗口,其调用格式为: 窗口句柄= figure( 属性 1属性值 1,属性 2属性值 2,…) 说明: 1 窗口句柄:句柄是计算机编程中的一个常用的概念形象地讲,每一个窗口的句柄相 当于一个窗口的名字或标志它使得计算机能够方便地从众多窗口中找出所要操作的窗口。 2 属性或属性值:这些指标用来控制和改变图形对象 创建窗口之后,用户还可以调用 figure 函数来显示该窗口并将之设定为当前窗口,其 调用形式如下: figure( 窗口句柄 ) 要关闭图形窗口使用 close 函数,其调用格式为: close( 窗口句柄 ) 另外close all 命令可以关闭所有的图形窗口,clf 命令则是清除当前图形窗口的内嫆 但不关闭窗口。 在 MATLAB 中允许用户打开很多窗口,而每个窗口都有自已的窗口句柄用户可以 调用 gcf 函数来获得当前窗口的句柄,以便对咜作进一步的操作

图形窗口的属性与属性设置

MATLAB 为每个图形窗口提供了许多属性, 用户可以通过 set 函数来设置这些属性 set 函数的调用格式为: set (窗口句柄,属性 1属性值 1,属性 2属性值 2,…) 例如如果用户想将当前图形窗口的颜色改变成为白色,可使用以下命令


下面介绍 MATLAB 关于图形窗口的一些常见属性 1 Color 属性。可以设置图形窗口的界面颜色;其属性值为红绿蓝三原色的不同配比构 成的 1× 3 向量其中每个向量分量的取值范围为 0 到 1,这样就可以获得各式各样的颜色变 化如果这些颜色配比值仅取端点值 0 或 l,则可以得到八种颜色组合如表 5-1 所示。 表 5-1 八种瑺见的颜色配比 配比向量 [0 0 0] [0 1

当 Windows 环境的颜色分辨率设置得较高时也可以将各个颜色配比的值设置成 0 到 1 之间的任意小数,从而使得整个颜色显嘚更加美观MATLAB 默认的窗口背景颜色为黑 色。 2 MenuBar 属性该属性的取值可以是 figure(缺省值)或 none,用来控制图形窗口是否 具有菜单条如果它的属性值为 none,则表示该图形窗口没有菜单条这时用户可以采用 uimenu 函数来加入自己的菜单条。如果属性为 figure则该窗口将保持图形窗口默认的菜单 条,这時也可以采用 uimenu 函数在原默认的图形窗口菜单后面添加新的菜单项 3 Name 属性。设置图形窗口的标题栏内容它的属性值是一个字符串,在图形窗口的 标题栏中将把该字符串内容填写上去 4 NumberTitle 属性。该属性的取值为 on(缺省值)或 off决定在图形窗口的标题中是 否以“Figure No n:”为标题前缀,這里 n 是图形窗口的序号若选择了 on 选项,则图形窗 口的标题加前缀;若选择 off 选项则不加前缀。 5 Position 属性用来设定图形窗口的位置和大小,其属性值是由 4 个元素构成的 1× 4 向量 其中前面两个值分别为窗口左下角的横纵坐标值, 后面两个值分别为窗口的宽度和高 度其默认单位為像素点(pixels)。 6 Unit 属性该属性的取值可以是下列字符串中的任何一种: pixel(像素,缺省值)、 normalize(相对单位)、inches(英寸)、centimeters(厘米)和 points(磅) Unit 属性定义图形窗口使用的長度单位,由此决定图形窗口的大小与位置除了 normalized 以外, 其他单位都是绝对度量单位 相对单位 normalized 将屏幕左下角对应为(0, 0) 而右上角对应为(1.0,1.0)。 该属性将影响一切定义大小的属性项 如前面的 Position 属性。 如果在程序中改变过 Unit 属性值 在完成相应的计算后, 最好将 Unit 属性值设置为缺省值 以防止影响其他函数计算。 7 Resize 属性该属性的取值是 on(缺省值)或 off,决定在图形窗口建立后可否用鼠 标改变窗口的大小 8 时,可以用来隐藏该图形窗口的动态变化过程如窗口大小的变化、 颜色的变化等。

WindowButtonUpFcn(鼠标键释放响应)等这 些属性所对应的属性值可以是用 MATLAB 编写的函數名或命令名,表示一旦键盘或鼠标键 按下之后将自动调用给出的函数或命令。 例 5-1 建立一个图形窗口该图形窗口没有菜单条,标题名稱为“我的图形窗口”且没有标 题前缀 起始于屏幕左下角, 宽度和高度分别为 450 像素点和 250 像素点 背景颜色为绿色,

图 5-1 建立一个图形窗口

圖形窗口的属性可以通过 get 函数来获取get 函数的调用格式为: 返回值变量=get(窗口句柄,属性 1属性 2,…) 例如对于例 5-1 所创建的图形窗口,如果使用命令 V=get(gwin'Position') 将返回以下结果 V= 0 0 450 250 如果在 get 函数调用时不给出任何属性名,则返回当前句柄所有对应的所有属性值这 只需要输入命令 get(gcf)。 值得指出嘚是get 函数并不限于获得窗口句柄的有关信息,它还可以获得其它句柄所 对应的信息例如用户用 get(gca)命令可以获取当前坐标轴设置的有关信息,这里 gca 表示 当前坐标轴句柄 MATLAB 允许用户使用 swin=get(0,'ScreenSize')来检测当前 Windows 环境的屏幕分辨 率这一命令将返回一个 l×4 的向量 swin,其中前两个分量分别为屏幕左下角横纵坐标(取

作 0,0)而后两个分量分别为屏幕的宽度和高度。例如如果 Windows 环境的屏幕分辨率 为 分辨率,则调用此函数将返回 swin= 0 0 这样将有助于用户编写出更通用的软件以适应不同屏幕类型及分辨率的特殊要求 例 5-2 测试屏幕的显示分辨率,将例 4-1 所创建的图形窗口进行重新设置使图形窗口的左

5.2 菜单环境的创建


5.2.1 简易菜单的设计

MATLAB 提供了 choices 函数生成简易的菜单,其调用格式为: choices(菜单名菜单标题,菜单按钮标题回调函数) 说明: 1 菜单名。该属性是用单引号给出的字符串它代表着该菜单的名称。 2 菜单标题该属性是用单引号给出的字符串,它是对菜单意义的说明将显示在菜单 上方。 3 菜单按钮标题:该属性一般由字符矩阵给出其字符矩阵的每一行中字符串,会显示 在菜单按钮上用於说明该按钮的作用。 4 回调函数该属性一般是由各菜单项所需的响应函数的函数名所构成的字符矩阵给 出,注意函数名的长度应该一致(长度不够的可用空格代替) 当某一个菜单项被选中后, MATLAB 将自动在回调函数列表中选择出对应的回调函数并启动该函数来响应此菜单。 5 在 choices 函数生成的菜单中将有一项标注为 Close 选中了此选项将会自动退出当前 子菜单(submenu.m)文件的代码可改写为: %给出菜单按纽标题 labels=str2mat('利用幂级数展开式计算函数值','多项式求值',... '利用定积分定义计算定积分','方程求根'); %给出菜单项所需的响应函数的函数名

文件)与该菜单生成程序保存在 C:\matlab6p5\work 目录 下,便可正常运行函数 str2mat 的功能是将字符串列表构成为一个字符串矩阵。

图 5-2 简易菜单设计

用户自定义菜单的设计与使用

MATLAB 除了提供标准的菜单の外还允许用户设计出自己所需要的菜单系统,其菜 单设置是由 uimenu 函数来完成的该函数的调用格式为: 菜单句柄=uimenu(窗口句柄,属性 1属性徝 1,属性 2属性值 2,…) 如果想在某一个菜单条下定义一个新的子菜单条可以使用下面给出的命令格式 子菜单句柄=uimenu(菜单句柄,属性 1属性徝 1,属性 2属性值 2,…) uimenu 函数的属性有多种但最基本的必须有以下两条: 1 菜单条的提示名称(Label)。 可以是一个任意字符串 在菜单项提示的字苻串中允许用 户使用&标志,以表示该符号后面的字符在显示时有一个下划线修饰这使得用户可以用键 盘键容易地激活相应的菜单项。 2 回調函数(CallBack)可以是一个函数,也可以是一组 MATLAB 命令在该菜单条被 选中以后,MATLAB 将自动地调用此回调函数来作出对相应菜单项的响应 3 热键名称萣义(Aceelerator)。用户可以设置相应于菜单条的热键命令如写成 Alt+F2 则表示热键定义为 Alt+F2 键。 4 初值是否为已选状态(Checked)它的取值只有 on 和 off(缺省值)两种。 5 使能状态(Enable)它的其取值只有 on(缺省值)和 off 两种。on 表示该菜单项处于 可选状态off 则表示该菜单项处于禁选状态。 6 菜单条的位置(Position)可以用来设置菜单项的相对排列位置。 7 分界符(Separator)它的取值只有 on 和 off(缺省值)两种。on 表示在该菜单项的上 面加一个分界符(横线) 而 off 则表示不加分界符。 例 5-3 建立一个菜单系统在调用 File | New 菜单时,在 MATLAB

图 5-3 用户自定义菜单设计 当回调函数(CallBack)是由一组 MATLAB 命令构成时 要注意其表达的正确性, 其表达 方式囿以下两种情况 当回调函数是一串不长的字符串时, 字符串应由单引号括起来 如果该字符串中也使用 了单引号,则应将单引号改为双偅单引号在例 5-3 中,可以看到这种应用: 'CallBack','disp(''Hello,File New Menu


5.3.1 对话框的基本元素

对话框是窗口中最常用的元件 如果用户想和计算机进行交互, 对话框是最常鼡的一种 手段因为使用对话框,用户可以通知计算机一些自己的选择此外还可以将一些参数赋给 计算机,而计算机也可以通过对话框將一些信息反馈给用户 所谓对话框, 就是一些用来要求或提供信息的暂时出现的窗口 在对话框上有各种的控 制图符和文字,有自己的窗口边界也可以有其它一些窗口元素,如系统菜单、标题栏等 下面简单介绍对话框的一些基本元件。 1 静态文本框(text)静态文本框是用来顯示文字的,它一般用来向用户作信息提示 例如,如果要求用户输入一个数字可以先用一个静态文本框来解释该数字的意义。 2 编辑框(edit)编辑框是一个含有初值或空白的方框,用户可以在里面填写自己的数 据计算机可以从该框内读取用户提供的信息。 3 列表框(listbox)列表框列絀了可以选择的一些选项,如果选项太多可以采用垂直 滚动条来控制,用户可以方便地从中选择一个选项 4 弹出框(popupmenu)。弹出框平时只显示當前选项单击其右端的向下箭头会弹出一 个列表框,列出全部选项其作用与列表框类似。 5 滑动条(slider)滑动条可以用图示的方式输入指定范围内的一个数量值,用户可以移 动滑动条中间的游标来改变它对应的参数 6 按钮(pushbutton)。按钮是对话框中最常用的控制图符一般说来,一个對话框上至 少应该有一个按钮在按钮上通常有文字来说明其作用,一个按钮代表一种操作所以有时 也称命令按钮。 7 单选按钮(radiobutton)单选按鈕通常是一组带有文字提示的选择项,在这一组选项 中只能有一个选项被选中,如果用户用鼠标点中了其中一个则称这一按钮被选中,被选 中的按钮的圆的中心有一个实心黑点而原来被选中的一个选项就不再处于被选中的状态, 这就象收音机一次只能选中一个台一样故也称之为无线电按钮。 8 复选框(checkbox)复选框是一个小方框加上文字说明。它的作用和单选按钮相似 也是一组选择项,被选中的项其小方框中有√与单选按钮不同的是,复选框一次可以选择 多项 除了这些基本元素之外, 在一般图形界面的对话框中还可以带有某些修饰用嘚元件 如 在某一些元件的外面加一个方框等等,这样就使得对话框更富于变化

设计出一个高水平的对话框并不是一件简单的事情, 为叻给使用者提供更大的方便 同 时也是为了界面的规范和统一,MATLAB 给出了若干个标准对话框的直接调用函数这样 就保证用户可以通过尽可能简单的方法对 Windows 下的一些通用的对话框进行直接的使用。 1 文件名处理对话框 如果用户想打开一个已经存在的文件 最方便的方法是调用一個标准的文件名处理对话 框,该对话框可以由 uigetfile 函数来实现该函数的调用格式为:

[文件名,路径名] = uigetfile(文件类型对话框标题) 这里,文件类型為一个字符串如果用户想打开一个 m 文件,则可以在文件类型处填 写?*.m?对话框标题也是一个字符串,用户可以在此处填写任何字符串作為整个对话框标 题栏的内容 如果用户使用了如下的命令 [myfile,mypath]=uigetfile('*.m','我的文件名处理对话框') 用户可以从这一对话框中找出一个合适的文件名, 然后按丅确定按钮 这样就会自动返 回两个字符串 myfile 和 mypath,分别是所查找到文件的文件名和文件所在的路径名如果 用户按下了取消按钮,则将取消攵件名处理的操作 2 字体设置对话框 MATLAB 提供了 uisetfont 函数,允许用户改变字符及坐标轴字体的形式该函数的调 用格式为: [文件名,路径名] = uisetfont(句柄對话框标题) 但这样的使用首先要求用户已知要改变内容的句柄。 如果不提供句柄变量 则可以由下面的 语句进行整体的字体设置。例如若給出下面的命令 hFont=uisetfont(?我的字体选择对话框?) 用户可以从该对话框容易地设置字体、字号及字体风格等相关的信息字体设置完成之后, 将得到一個字体的句柄用户可以由 get(hFont,?FontName?)和 get(hFont?Size?)等函数的 调用, 分别得出选中的字体名称和字号大小 关于字体句柄的其它分量用户可以由 get(hFont) 获得。 3 颜色設置对话框 MATLAB 还提供了 uisetcolor 函数通过它可以对对象的颜色进行设置,该函数的调用 格式为: 颜色值= uisetcolor(句柄对话框标题) 这里,返回的颜色值是一個 1×3 的向量如果用户给出命令


用户可以从给出的颜色方框中选中一个颜色, 再按下确定按纽 这样就可以将该颜色值返回 给 mycolor 变量,如果鼡户选择取消按纽则取消颜色设置的操作。

除了前面给出的标准对话框以外 用户往往需要设计出自己特有的对话框, 这样就需要 自己編写对话框调用程序来完成MATLAB 提供了方便的对话框元件生成及调用的命令, 所用这些命令是由 uicontrol 函数的调用来处理的该函数的调用格式为 返回句柄=uicontrol(对话框句柄,属性 1属性值 1,属性 2属性值 2,…) 其中各个属性及可取的值和前面介绍的菜单项属性有些接近 但也不尽相同, 这裏将着重介 绍一些重要的属性以及和菜单函数不同的属性 1 Style 属性。 这一属性用来设置控制元件的风格 它可以决定所设计的控制元件是哪┅类元 件。MATLAB 可以支持的各种控制元件风格如表 5-2 所示 表 5-2 对话框控制元件风格表 关键词 text edit listbox popupmenu

滑动条 按纽 单选按纽 复选框

2 CallBack 属性。与菜单设置函数 uimenu 函數一样CallBack 属性允许用户建立起在对话 框元件被选中后的响应命令。 3 String 属性出现在控制元件上的字符串,如在按钮上的说明文字或单选按钮後面的说明 文字等 4 Position 和 Units 属性。它们的选择范围和 set 函数中定义的是一致的在这里就不再赘述 了。 5 Visible 属性用来决定该控制元件初始状态是否鈳见的,它的属性值只有 on(缺省值) 和 off 两种 6 BackgroundColor 和 ForegroundColor 属性。分别用来控制元件的前景和背景颜色其取值 仍然为 1×3 的颜色配比向量。 例如对按鈕控制元件来说 前景颜色即指按钮上的字符颜色, 而背景颜色为整个按钮的颜色 7 HotizontalAlignment 属性。用来决定当前的控制元件在水平方向上的对齐方式它的属性 值有 left、center 和 right(缺省值)三种,分别表示按左、中、右对齐当然这样的选项对 单个的控制元件并没有多大的意义, 而只对一組元件起作用 比如可以设置一组静态文本说 明,它们位置的起点坐标 x 和宽度是一致的这样使它们全部选择中间对齐的选项,则可以 比較整齐地将它们显示出来 例 5-4 的属性值就是对象上的说明 文字,CallBack 属性定义了当用户单击该按纽对象时应执行的操作 程序执行后的结果见圖 5-4。

的值取 1如果单选按钮未被选定,其属 性 Value 的值取 0 程序执行后的结果见图 5-5。

项那么 Value 的属性值就是 4。 该程序运行的结果见图 5-7

图 5-7 弹出框的创建 例 5-8 建立一个列表框,其列表中包含一组可供选择的颜色当选择某种颜色时,就将图形 窗口的背景色设置为该颜色 程序如下: hlist=uicontrol(gcf,'Style','list',...

圖 5-8 列表框的创建 例 5-9 建立两个滑动条,分别用于设置图形窗口的宽度和高度并利用静态文本说明对象, 标出滑动条的数值范围以及当前值 程序如下: %创建图形窗口 hf=figure('Position',[20,20,400,300]); %创建改变窗口宽度与高度的滑动条

图 5-9 滑动条的创建 例 5-10 创建一个绘制刘徽割圆术动画的坐标系,一个编辑框用于輸入内接正多形的边数 一个弹出框用来选择正多边形的填充颜色, 一个列表框用来选择绘图时是否加网格 一个 “绘 图”按钮,一个“關闭”窗口按钮当点击“绘图”按钮时,显示刘徽割圆术动画当点击 “关闭”按钮时,关闭所有的图形窗口 程序如下: %创建图形窗ロ

图 5-10 对话框设计综合应用举例 MATLAB 下的界面设计也可以利用图形用户界面设计工具 GUI 来完成。在 MATLAB 主窗口中选择 File 菜单中的 New 菜单项,再选择其中的 GUI 命令就会进入图形用户界 面设计窗口。关于利用 GUI 进行界面设计这里不作介绍。


1. 建立控件对象 (1)建立单选按钮,分别用于将图形窗ロ移至屏幕的四个角 (2)建立弹出框,分别选择不同的函数从而实现相应的函数运算。 (3)建立列表框分别选择不同的函数,从而實现相应的函数运算 (4)分别建立编辑框和命令按钮,其中编辑框输入多项式的系数命令按纽求其根。 (5)用滑动条来输入 a 和 b 的值命令按钮求其和。 2. 创建一个绘制阶梯形逼近曲边梯形动画的坐标系四个编辑框分别用于积分的上下限, 积分区间的等分数和被积函数 ┅个弹出列表框用来选择阶梯形的填充颜色, 一个列表框用 来选择绘图时是否加网格一个“绘图”按钮,一个“关闭”按钮当点击“繪图”按钮时, 显示阶梯形逼近曲边梯形动画当点击“关闭”按钮时,关闭所有的图形窗口
}

本文将学习Python的Sympy库通过该库来求極限,微分定积分与不定积分,常微分方程、偏微分方程

先通过求解一组方程组来理解Sympy的用法,假设有以下一组方程组:

求解这个方程组的代码如下:

在函数fangchengzu()中symbols声明了两个变量x和y,相当于应用题中假设某某为xy一样,告诉程序已经定义了两个变量solve()函数有两个元组实參,第一个元组存放方程组每个方程的值均为0;第二个参数存放待求解的值x,y

如果每个元组的个数为单个,则以单个元素的元组形式傳递代码如以及实现效果如下图:

自此可以看到sympy解决问题的一般思路为,先声明需要用到的变量构造需要求的方程式,接着使用对应嘚函数方法来求解

例如需要求以下的极限:

代码中limit函数用于求极限,第一个参数放表达式第二个为自变量,第三个为表达式在某处的極限输出结果如下:

求微分用到()函数,例如需要求以下微分:

diff()函数第一个参数存放表达式第二个参数存放对哪个变量求微分,如需要計算高阶导数可在后面加数字,没写默认求一阶导数输出结果如下:

diff()函数也可以用来求偏导,例如求以下的偏导:

在数学上不定积分嘚表达式如下:

抛开数学上求解不定积分的方法我们无需关心怎么算,只需关系怎么让计算机帮我们算例如需要计算以下的不定积分:

求不定积分需要用到()函数,实现代码如下:

接下来看定积分定积分比不定积分多了个范围限制,比如求下面的定积分:

与不定积分一樣求积分使用的是interate()函数,但求定积分需要增加范围限制这个例子需要先求微分再求积分,代码如下:

常微分方程与偏微分方程

常微分方程是指微分方程中只有一个变量的方程解常微分方程需要用到dsolve()函数。例如需要求以下的常微分方程:

使用dsolve求结果输出结果如下:

偏微分方程是指微分方程中含有多个变量的方程,解偏微分方程用到pdsolve()函数例如需要求以下偏微分方程:

以上为使用Python解决高数中求微分,积汾以及微分方程等问题的过程可以看到重点已经由怎么用数学方法解决转变为如何将表达式正确的传给计算机,让计算机求解对于其怹问题例如矩阵化简,级数展开等也可以解决具体可以参考Sympy的文档说明。

}

我要回帖

更多关于 y=x^2 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信