China-pub.com 下载 第1章1 MATLAB是什么 没有MATLAB就没有乐趣。 Nachtigal,M.N.,Reddy,S.C.,Trefethen,L.N.(1990). 不对称矩阵迭代有多快? 关于迭代方法的Copper Mountain会议论文集, Copper Mountain C0,1-5,1990年4月。 1.1 MATLAB能做什么 MATLAB是一个可视化的计算程序,被广泛地使用于从个人计算机到超级计算机范围内 的各种计算机上。 MATLAB包括命令控制、可编程,有上百个预先定义好的命令和函数。这些函数能通过 用户自定义函数进一步扩展。 MATLAB有许多强有力的命令。例如,MATLAB能够用一个单一的命令求解线性系统, 能完成大量的高级矩阵处理。 MATLAB有强有力的二维、三维图形工具。 MATLAB能与其他程序一起使用。例如,MATLAB的图形功能,可以在一个FORTRAN 程序中完成可视化计算。 25个不同的MATLAB工具箱可应用于特殊的应用领域。 MATLAB在以下的领域里解决各种问题是一个十分有效的工具: ·工业研究与开发。 ·数学教学,特别是线性代数。所有基本概念都能涉及。 ·在数值分析和科学计算方面的教学与研究。能够详细地研究和比较各种算法。 ·在诸如电子学、控制理论和物理学等工程和科学学科方面的教学与研究。 ·在诸如经济学、化学和生物学等有计算问题的所有其他领域中的教学与研究。 ·在MATLAB中创建的组是矩阵,MATLAB的名字取自矩阵实验室(MATrix LABoratory)。 1.2 MATLAB实例 本节中的实例恰当而简洁地展示了MATLAB能做什么。在一些实例中给出了完整的 MATLAB命令:而在另一些实例中,为简化仅给出部分命令。 在本书中出现的MATLAB代码用的是一种特殊的字体以区别于书中别的文字。 MATLAB的输出是斜体字,即:我们输给MATLAB的命令是正体:MATLAB给出的输出答 案是斜体。 百分符号%在MATLAB中用做注释符号,在本书中全部都是这样使用。采用的其他表示 方法是:数量和预定义函数用斜体字,矩阵、向量和用户自定义函数用黑体字。矩阵用大写
下载 第1章 M AT L A B是什么 没有M AT L A B就没有乐趣。 Nachtigal, M. N., Reddy, S. C., Trefethen, L.N.(1990)。 不对称矩阵迭代有多快? 关于迭代方法的Copper Mountain会议论文集, Copper Mountain CO, 1-5,1990年4月。 1.1 MAT L A B能做什么 M AT L A B是一个可视化的计算程序,被广泛地使用于从个人计算机到超级计算机范围内 的各种计算机上。 M AT L A B包括命令控制、可编程,有上百个预先定义好的命令和函数。这些函数能通过 用户自定义函数进一步扩展。 M AT L A B有许多强有力的命令。例如, M AT L A B能够用一个单一的命令求解线性系统, 能完成大量的高级矩阵处理。 M AT L A B有强有力的二维、三维图形工具。 M AT L A B能与其他程序一起使用。例如, M AT L A B的图形功能,可以在一个 F O RT R A N 程序中完成可视化计算。 2 5个不同的M AT L A B工具箱可应用于特殊的应用领域。 M AT L A B在以下的领域里解决各种问题是一个十分有效的工具: • 工业研究与开发。 • 数学教学,特别是线性代数。所有基本概念都能涉及。 • 在数值分析和科学计算方面的教学与研究。能够详细地研究和比较各种算法。 • 在诸如电子学、控制理论和物理学等工程和科学学科方面的教学与研究。 • 在诸如经济学、化学和生物学等有计算问题的所有其他领域中的教学与研究。 • 在M AT L A B中创建的组是矩阵,M AT L A B的名字取自矩阵实验室( M ATrix LABoratory)。 1.2 MAT L A B实例 本节中的实例恰当而简洁地展示了 M AT L A B能做什么。在一些实例中给出了完整的 M AT L A B命令;而在另一些实例中,为简化仅给出部分命令。 在本书中出现的 M AT L A B 代码用的是一种特殊的字体以区别于书中别的文字。 M AT L A B的输出是斜体字,即:我们输给 M AT L A B的命令是正体; M AT L A B给出的输出答 案是斜体。 百分符号%在M AT L A B中用做注释符号,在本书中全部都是这样使用。采用的其他表示 方法是:数量和预定义函数用斜体字,矩阵、向量和用户自定义函数用黑体字。矩阵用大写
China-pub.com MATLAB5手册 下载 字母开头命名,而向量以小写字母开头。细胞矩阵是如同矩阵或向量的概念,也采用黑体字, 其结构和对象也是如此。在命令表中,用斜体字表示那些可选的函数参数。例如, command(parl,par2),参数parl总是需要的,而par2是可选的。 ■例1.1二维和三维函数 MATLAB能用于计算,并以二维和三维图形显示各种函数。在MATLAB函数中包括了所 有主要的数学函数和大量的高级函数。 (a)用简短的MATLAB命令计算并绘制在0≤x≤6范围内的sin(2x)、sinr和sinx。 x=linspace(0,6);号创建一个向量x y1=sin(2*x);告向量y1等于x坐标上某一x的sin(2x)值。 y2=sin(x.^2); 号向量y2等于sin(x.^2),同上。 y3=(sin(x).2;号向量y3等于(sin(x).^2,同上。 命令p1ot(x,y1)绘制向量y1,y1作为向量x的一个函数,p1ot命令的定义可参见第13 章。由此能够很容易地在一个图上绘制sin(2x)、sin(x2)和sinx的曲线并正确地标记它们(图1-1)。 02 : 20 图11同一图上的三条曲线 (b)两个变量的函数需要用三维来恰当地图示,MATLAB能够给出很好的三维图。在图-2中,用 四个不同的方法展示了函数x,)=cosx)·sin)的图形:左上图用urf命令和heding interp:右 上图用mesh:左下图用waterfall以及右下图用contour。关于图像命令的详细信息可参见第3章。 用surf和shading interp绘图 用mesh绘图 00 用mesh和隐藏线绘图 用contour绘图 30 图1-2四种方法绘制双变量的一个函数的图形
字母开头命名,而向量以小写字母开头。细胞矩阵是如同矩阵或向量的概念,也采用黑体字, 其结构和对象也是如此。在命令表中,用斜体字表示那些可选的函数参数。例如, c o m m a n d (parl, p a r2),参数p a r 1总是需要的,而p a r2是可选的。 ■ 例1.1 二维和三维函数 M AT L A B能用于计算,并以二维和三维图形显示各种函数。在 M AT L A B函数中包括了所 有主要的数学函数和大量的高级函数。 (a) 用简短的M AT L A B命令计算并绘制在0≤x≤6范围内的s i n ( 2x)、s i nx 2和s i n2x。 x = l i n s p a c e ( 0 , 6 ) ; % 创建一个向量x。 y 1 = s i n ( 2*x ) ; % 向量y 1等于x坐标上某一x的s i n ( 2 x )值。 y 2 = s i n ( x . ^ 2 ) ; % 向量y 2等于s i n ( x . ^ 2 ),同上。 y 3 = ( s i n ( x ) ) . ^ 2 ; % 向量y 3等于( s i n ( x ) ) . ^ 2,同上。 命令p l o t ( x , y 1 )绘制向量y 1,y 1作为向量x的一个函数,p l o t命令的定义可参见第 1 3 章。由此能够很容易地在一个图上绘制 s i n ( 2x)、s i n (x 2 )和s i n2x的曲线并正确地标记它们(图1 - 1 )。 图1-1 同一图上的三条曲线 (b) 两个变量的函数需要用三维来恰当地图示,M AT L A B能够给出很好的三维图。在图1 - 2中,用 四个不同的方法展示了函数f(x, y) = cos (x)·sin (y)的图形:左上图用s u r f命令和shading interp ;右 上图用m e s h;左下图用w a t e r f a l l以及右下图用c o n t o u r。关于图像命令的详细信息可参见第1 3章。 图1-2 四种方法绘制双变量的一个函数的图形 2 M ATLAB 5 手册 下载 用surf和shading interp绘图 用mesh绘图 用mesh和隐藏线绘图 用contour绘图
China-pub.com 第I章ATLAB是什么 下载 (c)MATLAB也能绘制一条参数曲线,例如: x cost-sin 3t y sint cost -cos 3t x-y平面图如图1-3所示。 -05 图1-3一个参数曲线图 ■ ■例1.2函数分析 MATLAB命令fzero和fmin可以用于寻找一个函数的零点和最小值。 函数xe-e-smr可以用名叫func的用户自定义函数(见2.9节)表示,并存入一个名叫 func.m的M文件中。这个文件由下列行组成: function y=func(x) y=x.*exp(x.2)-exp(x.2)-8in(x.^3); 如果这个M文件被存放在当前的工作目录中,或在一个称为matlab的子目录中,函数func 就可以像预定义的MATLAB函数一样调用。例如,调用xiszero=func(O),给出的答案是: xiszero -1 用这样定义的函数,MATLAB提供了一个命令来寻找方程xe2一e2一sinx=0的零点。命令 xsolv=fzero(‘func',3)给出: xsolv 1.2194 在本例中,命令中的第2个自变量用的是3,是开始计算的一个初始近似值。 如果在一1≤x≤1.5区间内绘制这个函数,则正确答案如图1-4所示。 0 05 图1-4在-1≤x≤1.5区间内绘制函数xe-e-sinr的图形
(c) MAT L A B也能绘制一条参数曲线,例如: x-y平面图如图1 - 3所示。 图1-3 一个参数曲线图 ■ 例1.2 函数分析 M AT L A B命令f z e r o和f m i n可以用于寻找一个函数的零点和最小值。 函数 可以用名叫 f u n c的用户自定义函数 (见2 . 9节)表示,并存入一个名叫 f u n c . m的M文件中。这个文件由下列行组成: 如果这个M文件被存放在当前的工作目录中,或在一个称为 m a t l a b的子目录中,函数f u n c 就可以像预定义的M AT L A B函数一样调用。例如,调用x i s z e r o = f u n c ( 0 ),给出的答案是: xiszero = -1 用这样定义的函数,M AT L A B提供了一个命令来寻找方程 x ex2-e x2-s i nx 3= 0的零点。命令 x s o l v = f z e r o (‘f u n c’, 3)给出: xsolv = 1 . 2 1 9 4 在本例中,命令中的第2个自变量用的是3,是开始计算的一个初始近似值。 如果在-1≤x≤1 . 5区间内绘制这个函数,则正确答案如图 1 - 4所示。 图1-4 在-1≤x≤1 . 5区间内绘制函数xex 2-e x 2-sinx 3的图形 xe x 2 - e x 2 - sin x 3 第1章 M AT L A B是什么 3 下载 ■
China-pub.com MATLAB5手册 下载 当x在0.5和1之间时,这个函数看起来有一个极小值,为正确找出这个极小值,用命令 mpoint=fmin(‘func',0.5,1)其结果为: mpoint 0.8954 用于检查MATLAB中用户自定义函数的命令可参见第10章和第11章。 ■ ■例1.3线性系统与特征值 ()MATLAB可以用一个简单的命令行求解线性系统,系数矩阵A和右侧b定义如下: -(-(韵 6 .1 这对应于线性系统Ax=b,如下所示: 3x1+x2-x3=3.6 x1+2x2+4x3=2.1 -x1+4x2+5x3=-1.4 这可由如下命令求解: x=A\b 其结果为: X 1.4818 -0.4606 0.3848 (b)还有许多矩阵控制命令。例如,例()中矩阵A的特征值很容易地可以由下列命令得到: [EigenVectors,EigenValues]eig(A) 其给出: EigenVectors -0.9482 -0.3129 -0.0553 -0.2887 0.7756 0.5613 0.1328 -0.5482 0.8258 EigenValues 3.4445 0 0 0 -1.2305 0 0 0 7.7860 矩阵Eigen Vectors的列是A的特征向量,Eigen Values中对角线元素是特征值。由于矩阵A 是对称的,因此,所有的特征值都是实数,三个特征向量是相互正交的。 ■ MATLAB中的基本概念是矩阵。基本的矩阵命令在第3章描述,更多的命令将在第4、7、 8、9章中描述。 ■例1.4曲线拟合与插值 ()如果有两个向量x和y表示的x-y平面上的一组点,那么,可以对它们进行插值点或者拟 合一条曲线。令 x=(11.534566.578)
当x在0 . 5和1之间时,这个函数看起来有一个极小值,为正确找出这个极小值,用命令 m p o i n t = f m i n (‘f u n c’, 0.5, 1),其结果为: mpoint = 0 . 8 9 5 4 用于检查M AT L A B中用户自定义函数的命令可参见第 1 0章和第11章。 ■ 例1.3 线性系统与特征值 (a) MAT L A B可以用一个简单的命令行求解线性系统,系数矩阵 A和右侧b定义如下: 这对应于线性系统A x = b,如下所示: 这可由如下命令求解: x = A \ b 其结果为: (b) 还有许多矩阵控制命令。例如,例 ( a )中矩阵A的特征值很容易地可以由下列命令得到: 其给出: 矩阵E i g e n Ve c t o r s的列是A的特征向量,E i g e n Va l u e s中对角线元素是特征值。由于矩阵 A 是对称的,因此,所有的特征值都是实数,三个特征向量是相互正交的。 M AT L A B中的基本概念是矩阵。基本的矩阵命令在第 3章描述,更多的命令将在第 4、7、 8、9章中描述。 ■ 例1.4 曲线拟合与插值 (a) 如果有两个向量x和y表示的x-y平面上的一组点,那么,可以对它们进行插值点或者拟 合一条曲线。令 4 M ATLAB 5 手册 下载 ■ ■
China-pub.com 第I章ATLAB是什么 下载 y=(1.211.72.522.32.533.1) 对应x-y平面上的9个点。首先,展示以最小二乘法拟合数据的线性函数,这个可以通过 MATLAB中的三个简单的命令来实现: pl=polyfit(x,y,1) 号P1=向量等于一次多项式的系数。 linc=polyval(pl,x) 号1inc=向量等于x点上多项式p1的值。 plot(x,linc,x,) 告绘制多项式和由‘x'标记的数据。 结果见图1-5(左图)。 能以最小二乘法对一组点拟合高次多项式。对上面的命令行进行一点小改动就可以得到7 次多项式: p7=polyfit(x,y,7); 号p7=向量等于7次多项式的系数。 xx=1:0.25:8: 号xx所有想要进行多项式计算的点。 po1c=po1yva1(p7,x);号po1c=甸量等于点xx上多项式p7的值。 P1ot=(xx,Po1c,,y×”)号绘制多项式和由'x'标记的数据。 其结果如图1-5(右图)所示。 图1-5xy平面上对一组具有9个点的数据拟合的1次和7次多项式 (b)MATLAB提供了二维和三维的内插函数。给定一组点(x,y)和一些内插点X,MATLAB 能返回通过对这些数据内插的插入点的值,这可以有不同的方法实现。作为一个例子,将使 用(a)中的一组点来给出在下列点中插入的值: 线性插值 三次样条插值 0.5 图1-6.piecewise线性函数插值(左)和三次样条插值(右)
对应x-y平面上的9个点。首先,展示以最小二乘法拟合数据的线性函数,这个可以通过 M AT L A B中的三个简单的命令来实现: p1=polyfit(x, y, 1) % p1=A向量等于一次多项式的系数。 linc=polyval(p1, x) % linc=A向量等于x点上多项式p 1的值。 plot(x, linc,x, y,‘x’) % 绘制多项式和由‘x’标记的数据。 结果见图1 - 5 (左图)。 能以最小二乘法对一组点拟合高次多项式。对上面的命令行进行一点小改动就可以得到 7 次多项式: p7=polyfit(x, y, 7); % p7=A向量等于7次多项式的系数。 x x = 1 : 0 . 2 5 : 8 ; % xx=所有想要进行多项式计算的点。 polc=polyval(p7, xx); % polc=A向量等于点x x上多项式p 7的值。 plot=(xx,polc, x, y, ’x’) % 绘制多项式和由’x’标记的数据。 其结果如图1 - 5 (右图)所示。 图1-5 x-y平面上对一组具有9个点的数据拟合的1次和7次多项式 (b) MAT L A B提供了二维和三维的内插函数。给定一组点 (x i,y i )和一些内插点x˜i ,M AT L A B 能返回通过对这些数据内插的插入点的值,这可以有不同的方法实现。作为一个例子,将使 用( a )中的一组点来给出在下列点中插入的值: 图1-6 piecewise 线性函数插值(左)和三次样条插值(右) 第1章 M AT L A B是什么 5 下载 线性插值 三次样条插值
China-pub.com MATLAB5手册 下载 =(11.11.21.3…7.98) 在图1-6中,分别展示了分段线性插值和三次样条插值。‘x’标记表示原始数据,点线是 中间点的被插函数。 有关插值和曲线拟合的详细信息可参见第10章。 ■ ■例1.5统计 MATLAB包含了统计命令。例如,很容易地求得实验数据的平均值和中位值以及绘制统 计频数直方图或直方图。 图1-7显示了某小镇上每个人的年龄。上图是统计频数直方图,显示了每个年龄的人数。 例如,看到两个年龄最大的人是92岁。统计频数矩形图也表示了小镇上没有人是11岁或12岁, 7岁的儿童7人。 也能看出32岁以下的人与32岁以上的人一样多,因为这是一个中间年龄。此外,平均年 龄是35岁。这些也都在图中标出。 另外,下图展出了小镇上居民的年龄。例如,如果知道要列出的是第I1人,那么也就知 道这个人是一个小孩。因为第11个直方块接触x轴。这种绘图称为阶梯图,即没有内部线的直 方图。统计命令在第6章中描述。 小镇居民的统计频数矩形图 10 中间值 平均年龄 10 20 30 40 50 60 708090 100 年龄 小镇上每个人的年龄 100 20 20 0 60 80100 120 140 160 180 200 小镇上的200人 图17来自小镇数据的一个统计频数矩形图 ■例1.6傅立叶变换与信号分析 MATLAB能利用快速傅立叶变换FFT计算离散傅立叶变换,这用于信号分析和解微分方程。 为了证明MATLAB的傅立叶变换,用0和1之间的随机数千扰5sin(x)+2sin(5x)函数: x=linspace(0,*i,64); signal=5*sin(x)+2*sin(5*x)+randn(x);
x ˜i=(1 1.1 1.2 1.3 … 7.9 8) 在图1 - 6中,分别展示了分段线性插值和三次样条插值。‘x’标记表示原始数据,点线是 中间点的被插函数。 有关插值和曲线拟合的详细信息可参见第 1 0章。 ■ 例1.5 统计 M AT L A B包含了统计命令。例如,很容易地求得实验数据的平均值和中位值以及绘制统 计频数直方图或直方图。 图1 - 7显示了某小镇上每个人的年龄。上图是统计频数直方图,显示了每个年龄的人数。 例如,看到两个年龄最大的人是 9 2岁。统计频数矩形图也表示了小镇上没有人是 11岁或1 2岁, 7岁的儿童7人。 也能看出3 2岁以下的人与 3 2岁以上的人一样多,因为这是一个中间年龄。此外,平均年 龄是3 5岁。这些也都在图中标出。 另外,下图展出了小镇上居民的年龄。例如,如果知道要列出的是第 11人,那么也就知 道这个人是一个小孩。因为第 11个直方块接触x轴。这种绘图称为阶梯图,即没有内部线的直 方图。统计命令在第6章中描述。 图1-7 来自小镇数据的一个统计频数矩形图 ■ 例1.6 傅立叶变换与信号分析 M AT L A B能利用快速傅立叶变换F F T计算离散傅立叶变换,这用于信号分析和解微分方程。 为了证明M AT L A B的傅立叶变换,用0和1之间的随机数干扰5 s i n (x) + 2 s i n ( 5x) 函数: x=linspace(0, 2*pi, 64); s i g n a l = 5*s i n ( x ) + 2*s i n ( 5*x ) + r a n d n ( x ) ; 6 M ATLAB 5 手册 下载 小镇居民的统计频数矩形图 小镇上每个人的年龄 小镇上的200人 中间值 平均年龄 ■ ■ 年龄
China-pub.com 第I章ATLAB是什么 下载 干扰信号和原始信号如图1-8(上)所示。 然后,变换这个信号,并且删除变换后信号中的所有高频,即系数向量中心部分设为零。 transf=fft(signal); filttransf(1:9)=transf(1:9); filttransf(56:64)=transf(56:64); 傅立叶变换的实际部分如图1-8(下)所示。图1-9(上)中删除了高频傅立叶变换,仅低频向 量通过逆傅立叶变换而变换: filtsig=ifft(filttransf); 干扰信号和原始信号 刷除高频 4 干扰信号的傅立叶变换 过滤信号和原始信号 图1-8干扰信号和它的傅立叶变换 图1-9过滤傅立叶变换 这个过滤的信号与原始信号一起在图1-9(下)中展示。这个过滤的信号如期望一样是光滑 的。因为这种干扰也影响部分低频信号,所以它与原始信号不等。 在10.5节中,作为MATLAB的一部分描述了傅立叶变换,更详细的有关信号处理工具箱 的信息参见附录C。 ■例1.7常微分方程 MATLAB可以用数字求解常微分方程。作为一个实例,展示在一个轨道上一只猫追赶一 只机器玩具老鼠。猫和老鼠的位置分别用(x(t),y()和(X(),Y()表示。猫的速度向量是和猫与 老鼠之间的差向量对应的。猫从(50,40)开始,这就给出了如下的微分方程系统: dx o dt =二(X()-x(t) dy_(Y()+y() d x(0)=40 y(0)=50 式中w是老鼠的速度,α是猫和老鼠在时刻相距的距离,由下式给出: o()=VK0-x2+Y)-y 这个系统的解如图1-10所示,从图中可以看到由于老鼠跑得太快,猫并没有成功地抓到老鼠
干扰信号和原始信号如图1 - 8 (上)所示。 然后,变换这个信号,并且删除变换后信号中的所有高频,即系数向量中心部分设为零。 t r a n s f = f f t ( s i g n a l ) ; f i l t t r a n s f ( 1 : 9 ) = t r a n s f ( 1 : 9 ) ; f i l t t r a n s f ( 5 6 : 6 4 ) = t r a n s f ( 5 6 : 6 4 ) ; 傅立叶变换的实际部分如图 1 - 8 (下)所示。图1 - 9 (上)中删除了高频傅立叶变换,仅低频向 量通过逆傅立叶变换而变换: f i l t s i g = i f f t ( f i l t t r a n s f ) ; 这个过滤的信号与原始信号一起在图 1 - 9 (下)中展示。这个过滤的信号如期望一样是光滑 的。因为这种干扰也影响部分低频信号,所以它与原始信号不等。 在1 0 . 5节中,作为M AT L A B的一部分描述了傅立叶变换,更详细的有关信号处理工具箱 的信息参见附录C。 ■ 例1.7 常微分方程 M AT L A B可以用数字求解常微分方程。作为一个实例,展示在一个轨道上一只猫追赶一 只机器玩具老鼠。猫和老鼠的位置分别用 (x(t), y(t) )和(X(t) ,Y(t) )表示。猫的速度向量是和猫与 老鼠之间的差向量对应的。猫从 ( 5 0,4 0 )开始,这就给出了如下的微分方程系统: 式中w是老鼠的速度,a是猫和老鼠在t时刻相距的距离,由下式给出: 这个系统的解如图1 - 1 0所示,从图中可以看到由于老鼠跑得太快,猫并没有成功地抓到老鼠。 第1章 M AT L A B是什么 7 下载 图1-8 干扰信号和它的傅立叶变换 图1-9 过滤傅立叶变换 干扰信号和原始信号 干扰信号的傅立叶变换 过滤信号和原始信号 删除高频 a(t) = (X(t) - x(t))2 + (Y(t) - y(t))2 ■ w a w a
8 China-pub.c MATLAB5手册 下载 猫和老鼠 老鼠 32 -20 -10 图1-10猫捉机器玩具老鼠。小圆是老鼠的终点,十字是猫的终点 在11.2节中描述了如何使用MATLAB求解一般的常微分方程问题。 ■例1.8偏微分方程 在MATLAB中有许多用于不同应用领域的工具箱。这里,作为一个例子给出PDE工具箱, 这个工具箱能通过使用有限元方法(the Finite Element Method)解椭圆方程、抛物线方程和双 曲线方程。区域要分成大量的三角形子区域,对每个三角形,其解由一个简单函数估计。所 用的三角形越多,其偏差就越小。 求解这个区域里的椭圆问题一△u=sin(2y+元/2)cos(2r+π/2),如图1-11所示。 拉普拉斯算子△是+,边界条件0,也可由PDE工具箱所做的三角形子区域给出。 82 这个问题的解可以用可视化等高线以二维绘制,如图1-12所示。 PDE解 图1-I1PDE工具箱采用FEM的三角形子区域 图1-I2PDE工具箱计算的等高线解的图示 ■例1.9 MATLAB中的编程 MATLAB是可编程的。命令序列可以在文本编辑器上写入,然后可以调用MATLAB命令 窗口上的用户定义函数或程序。文件的名字必须要有扩展名.m,这个文件就称为M文件。这 些M文件可以用相同的方法象标准MATLAB函数一样使用。 (a)阶乘n!=1×2×3×…×n可以用不同的方法计算。这里,展示一个递归的用户定义函数:
图1-10 猫捉机器玩具老鼠。小圆是老鼠的终点,十字是猫的终点 在11 . 2节中描述了如何使用M AT L A B求解一般的常微分方程问题。 ■ 例1.8 偏微分方程 在M AT L A B中有许多用于不同应用领域的工具箱。这里,作为一个例子给出 P D E工具箱, 这个工具箱能通过使用有限元方法 (the Finite Element Method)解椭圆方程、抛物线方程和双 曲线方程。区域要分成大量的三角形子区域,对每个三角形,其解由一个简单函数估计。所 用的三角形越多,其偏差就越小。 求解这个区域里的椭圆问题- u = s i n ( 2 y+ / 2 ) c o s ( 2 x+ / 2 ),如图1 - 11所示。 拉普拉斯算子 是 ,边界条件u= 0,也可由P D E工具箱所做的三角形子区域给出。 这个问题的解可以用可视化等高线以二维绘制,如图 1 - 1 2所示。 ■ 例1.9 MAT L A B中的编程 M AT L A B是可编程的。命令序列可以在文本编辑器上写入,然后可以调用 M AT L A B命令 窗口上的用户定义函数或程序。文件的名字必须要有扩展名 .m,这个文件就称为 M文件。这 些M文件可以用相同的方法象标准 M AT L A B函数一样使用。 (a) 阶乘n!= 1×2×3×…×n可以用不同的方法计算。这里,展示一个递归的用户定义函数: 8 M ATLAB 5 手册 下载 猫和老鼠 猫 老鼠 图1 - 11 PDE工具箱采用F E M的三角形子区域 图1-12 PDE工具箱计算的等高线解的图示 ■ ■ PDE解
China-pub.com 第I章ATLAB是什么 下载 function p =factorial(nn) %计算nn的阶乘。 if nn ==0 p=1; else p nn*factorial(nn-1); end 这个M文件名叫factorial.m,对这个函数的调用如下所示: fourfactorial=factorial(4) 其结果为: fourfactorial= 24 (b)在MATLAB中可以使用面向对象的程序设计。有一个类world,用来模拟一个小世界 内的生与死。对于一个要在这个世界出生的个人来说,他需要一些邻居,但太多的邻居会构 成生存危机。类worldi的命令是在目录@world中的文件world.m中。 Function w=world(size,Density,nrCreate,nrSurvive) 冬WOR工D生成一个生命世界。 号这是命令方式。 号size给出这个世界的边,它是方的。 号Densit应该是在0与l之间,定义了实与空的近似比率。 多nrCreate个需要生长的空单元的最近邻居的号码。 冬nrSurvive个需要生存和长大的满单元的最近邻居的号码。 colormap('gray') w.Size Size; w.nrCreate =nrCreate; w.nrSurvive nrSurvive; w.Map round((-0.5+Density)+rand(Size,Size)); w.NextY zeros(Size,Size); w=class(w,'world'); 属于类的这种方法在目录@world中定义, 但不在这里说明。现在,人们可以通过下列命令 产生一个对象w: w=wor1d(20,0.6,【245],[3671): 现在重复 w=year(w) 与人类所经历的10年一样,反复10次,得到 图1-13。 关于MATLAB中的有关编程信息可参见第2章。 图1-1310年后世界w上的人口 ■例1.10图形用户界面 MATLAB提供了一个设计易于使用的程序的机会。程序能够在一个控制图上由按钮、弹 出菜单、可编辑文本等控制,这部分在14.3节中描述。在14.4节中,演示了一个由瑞典科学家
function p =factorial(nn) %计算n n的阶乘。 这个M文件名叫f a c t o r i a l . m,对这个函数的调用如下所示: f o u r f a c t o r i a l = f a c t o r i a l ( 4 ) 其结果为: f o u r f a c t o r i a l = 2 4 (b) 在M AT L A B中可以使用面向对象的程序设计。有一个类 w o r l d,用来模拟一个小世界 内的生与死。对于一个要在这个世界出生的个人来说,他需要一些邻居,但太多的邻居会构 成生存危机。类w o r l d的命令是在目录@w o r l d中的文件w o r l d . m中。 Function w=world(Size, Density, nrCreate, nrSurvive) % WORLD 生成一个生命世界。 % 这是命令方式。 % Size 给出这个世界的边,它是方的。 % Density应该是在0与1之间,定义了实与空的近似比率。 % nrCreate一个需要生长的空单元的最近邻居的号码。 % nrSurvive一个需要生存和长大的满单元的最近邻居的号码。 属于类的这种方法在目录 @w o r l d中定义, 但不在这里说明。现在,人们可以通过下列命令 产生一个对象w: w=world(20, 0.6, [2 4 5], [3 6 7]); 现在重复 w = y e a r ( w ) 与人类所经历的1 0年一样,反复1 0次,得到 图1 - 1 3。 关于M AT L A B中的有关编程信息可参见第1 2章。 ■ 例1.10 图形用户界面 M AT L A B提供了一个设计易于使用的程序的机会。程序能够在一个控制图上由按钮、弹 出菜单、可编辑文本等控制,这部分在 1 4 . 3节中描述。在1 4 . 4节中,演示了一个由瑞典科学家 第1章 M AT L A B是什么 9 下载 图1-13 10年后世界w上的人口 ■
10 China-pub.com MATLAB5手册 下载 设计的图形用户界面的实例。这个程序用于解决非等距网格的一个模型方程。 密 教-wean 0 。 MOCOH QO 图1-14带图形用户界面应用的一个MATLAB程序 1.3 MATLAB帮助 本书打算展示MATLAB中可用的命令,并解释如何使用MATLAB。对于读者,多数时候 这已足够,但对想学习更多内容的读者来说,在MATLAB中可以使用帮助。在系统提示符下, 键入help命令,MATLAB给出这个命令的解释。 在MATLAB5中也包含了一个强有力的HTML格式的帮助数据库。这使得寻找一个命令更 容易,依参考而得到帮助。当给出helpdesk命令时,一个浏览器如Netscape Navigator.或 Microsoft Internet Explorer就运行,即载入一个索引页。 如果这还不能满足,可向MathWorks公司订购MATLAB的完整手册,具体方法参见前言
设计的图形用户界面的实例。这个程序用于解决非等距网格的一个模型方程。 图1-14 带图形用户界面应用的一个 M AT L A B程序 1.3 MAT L A B帮助 本书打算展示M AT L A B中可用的命令,并解释如何使用 M AT L A B。对于读者,多数时候 这已足够,但对想学习更多内容的读者来说,在 M AT L A B中可以使用帮助。在系统提示符下, 键入h e l p命令,M AT L A B给出这个命令的解释。 在M ATLAB5 中也包含了一个强有力的H T M L格式的帮助数据库。这使得寻找一个命令更 容易,依参考而得到帮助。当给出 h e l p d e s k命令时,一个浏览器如 Netscape Navigator或 Microsoft Internet Explorer就运行,即载入一个索引页。 如果这还不能满足,可向M a t h Wo r k s公司订购M AT L A B的完整手册,具体方法参见前言。 1 0 M ATLAB 5 手册 下载 ■