1 / 61

本章内容提要

本章内容提要. 11.1 MATLAB 在高等数学中的应用 11.2 MATLAB 绘图 11.3 MATLAB 图像处理 11.4 小结. 11.1 MATLAB 在高等数学中的应用. 符号运算 1. 定义符号常量 符号数学工具箱中的函数 sym( ) 可以将一个数值常量 A 定义成一个符号常量。其一般的使用形式为 sym(A) 例如 将一组数值常量定义成符号常量。 >>x=sym('sin(15)') x =

tevy
Download Presentation

本章内容提要

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 本章内容提要 11.1 MATLAB在高等数学中的应用 11.2 MATLAB绘图 11.3 MATLAB图像处理 11.4 小结

  2. 11.1 MATLAB在高等数学中的应用 • 符号运算 1. 定义符号常量 符号数学工具箱中的函数sym( )可以将一个数值常量A 定义成一个符号常量。其一般的使用形式为 sym(A) 例如 将一组数值常量定义成符号常量。 >>x=sym('sin(15)') x = sin(15) >>y=sym ('(3*4-2)/5+1') y = (3*4-2)/5+1

  3. 11.1 MATLAB在高等数学中的应用 2. 定义符号变量 定义符号变量可以有两种方法:使用函数sym( )或命令syms。其使用形式为 sym('x') 或 syms x y 例如 定义符号变量及其表达式 >> a=sym('x') a = x >> b=sym('y') b = y >> f=a^2+b^2 f = x^2 + y^2

  4. 11.1 MATLAB在高等数学中的应用 在该例中,定义符号x并赋值到符号变量a,同时利用a定义解析式f。需要注意的是,使用函数sym()每次只能定义一个符号变量,而使用syms一次可以定义多个符号变量。 例如 定义符号变量及表达式 >> syms x y >> f=x^2+y^2 f = x^2 + y^2

  5. 11.1 MATLAB在高等数学中的应用 3. 表达式求值 通过符号变量定义符号表达式以后,可以通过函数eval来求表达式的值。 例如 符号常量表达式求值。 >> x=sym('sin(15)'); >>eval(x) ans = 0.6503 包含符号变量的表达式求值时,应对符号变量赋初值。

  6. 11.1 MATLAB在高等数学中的应用 包含符号变量的表达式求值时,应对符号变量赋初值。 例如 符号变量表达式求值。 >> syms x y >> f=x^2+y^2 f = x^2 + y^2 >> x=5; >> y=4; >> eval(f) ans = 41

  7. 4. 表达式化简 MATLAB 提供了化简和美化符号表达式的各种函数,具体有:合并同类项(collect)、 多项式展开(expand)、因式分解(factor)等。 (1). 合并同类项(collect) 函数collect( )调用的格式有两种。 R = collect(S):对于多项式S 按默认独立变量的幂次降幂排列。 R = collect(S,v):对指定的对象v 计算,操作同上。 11.1 MATLAB在高等数学中的应用 4. 表达式化简 MATLAB 提供了化简和美化符号表达式的各种函数,具体有:合并同类项(collect)、多项式展开(expand)、因式分解(factor)等。 (1). 合并同类项(collect): 函数collect( )调用的格式有两种。 R = collect(S):对于多项式S 按默认独立变量的幂次降幂排列。 R = collect(S,v):对指定的对象v 计算,操作同上。

  8. 11.1 MATLAB在高等数学中的应用 (2). 表达式展开(expand) 利用函数expand( )来展开符号表达式。其命令格式如下: R = expand(S) 对符号表达式S 中每个因式的乘积进行展开计算。该命令通常用于计算多项式函数、三角函数、指数函数与对数函数等表达式的展开式。 >> syms x y a b c t >>e1 = expand((x-2)*(x-4)*(y-t)) e1 = 8*y - 8*t + 6*t*x - 6*x*y - t*x^2 + x^2*y >> e2 = expand(cos(x+y)) e2 = cos(x)*cos(y) - sin(x)*sin(y) >>e3 = expand(exp((a+b)^3)) e3 = exp(3*a*b^2)*exp(3*a^2*b)*exp(a^3)*exp(b^3) >>e4 = expand(log(a*b/sqrt(c))) e4 = log((a*b)/c^(1/2)) >>e5 = expand([sin(2*t), cos(2*t)]) e5 = [ 2*cos(t)*sin(t), cos(t)^2 - sin(t)^2] >> e6 = expand((x+1)^3) e6 = x^3 + 3*x^2 + 3*x + 1

  9. 11.1 MATLAB在高等数学中的应用 (3). 因式分解(factor) 利用函数factor( )来进行符号表达式的因式分解。其使用格式为 factor(X) 参量X 可以是正整数、符号表达式矩阵。若X 为一正整数,则factor(X)返回X 的质数分解式。若X 为多项式或整数矩阵,则factor(X)分解矩阵的每一元素。 例如 因式分解示例。 >> syms a b x y >> f1 = factor(x^4-y^4) f1 = (x-y)*(x+y)*(x^2+y^2) >> f2 = factor([a^2-b^2, x^3+y^3]) f2 = [(a-b)*(a+b), (x+y)*(x^2-x*y+y^2)]

  10. 11.1 MATLAB在高等数学中的应用 • 符号运算 1. 多项式表示 在 MATLAB 中,多项式被表示成行向量的形式,它的系数是按降幂排列的,即按降幂次序将多项式的系数组成行向量,就可以在MATLAB 中建立一个多项式。例如,多项式 在MATLAB 中,按下面方式组成一个行向量 >> f = [-4 3 18 5 1] MATLAB 会将长度为n+1 的向量解释成一个n 次多项式。因此,若多项式某些项系数为零,则必须在向量中相应位置补零。

  11. 11.1 MATLAB在高等数学中的应用 2. 多项式求值 在MATLAB中多项式被表示为一个行向量,因此任何一个行向量都可当作一个多项式,可以通过调用函数polyval来求多项式的值,使用格式为 y = polyval(p,x) 其中,p为行向量,x作为参数,计算前必须赋值。

  12. 11.1 MATLAB在高等数学中的应用 3. 多项式求根 多项式求根的函数是roots,返回结果可能是复数根。其使用格式为 y=roots(p) 其中p为行向量,用于表示一个多项式。

  13. 11.1 MATLAB在高等数学中的应用 4. 符号多项式 当已知多项式的系数时,可以利用函数poly2sym来构造符号多项式。 例如 对于多项式系数向量p=[-4 3 18 5 1]构造符号多项式并求值。 >> p=[-4 3 18 5 1]; >> f=poly2sym(p) f = - 4*x^4 + 3*x^3 + 18*x^2 + 5*x + 1 >> x=5; >> y=eval(f) y = -1649

  14. 11.1 MATLAB在高等数学中的应用 5. 从根创建多项式 假定已知多项式的根,则可以使用函数poly函数来求多项式向量,这个函数与roots是互逆函数。 例如 已知多项式的根为2、5、1,求多项式。 >> r=[2;5;1]; >> s=poly(r) s = 1 -8 17 -10 这里创建了多项式,根分别为2、5、1。

  15. 11.1 MATLAB在高等数学中的应用 • 函数极限 1. 一元函数的极限 假设已知函数,则极限问题一般描述为 其中可以是一个确定的值,也可以是,对于某些问题来说,还可以是左右极限,如或,在MATLAB中,直接调用函数limit来求极限,格式如下 (1) limit(expr, x,x0),其中expr为函数表达式,一般为符号表达式,x是变量,x0为极限点。 (2) limit(expr, x, x0, 'left'),expr、x、x0与上面格式相同,如果为左极限,则最后一个参数为’left’,否则为’right’。 在上面格式中,极限点x0可以是inf或-inf,表示正、负无穷大。

  16. 11.1 MATLAB在高等数学中的应用

  17. 11.1 MATLAB在高等数学中的应用 2. 多元函数的极限 多元函数极限一般可表示为 在MATLAB中,同样是通过调用函数limit来实现,格式如下 (1) limit(limit(expr, x, x0), y, y0) (2) limit(limit(expr, y, y0), x, x0) 如果x0或y0不是确定的值,而是另外一个变量的函数,如,则顺序不能改变。

  18. 11.1 MATLAB在高等数学中的应用

  19. 11.1 MATLAB在高等数学中的应用 • 函数求导 1. 函数的导数和高阶导数 如果函数和自变量都已知,则可以调用函数diff来求各阶导数,使用格式如下 (1) y=diff(expr, x),expr为函数表达式,x为自变量,求一阶导数 (2)y=diff(expr, x, n),求函数的n阶导数

  20. 11.1 MATLAB在高等数学中的应用 2. 多元函数偏导数 多元函数偏导数仍然是通过调用diff来实现的,使用格式为 f=diff(diff(expr, x, m), y, n) 或者 f=diff(diff(expr, y, n), x, m)

  21. 11.1 MATLAB在高等数学中的应用 • 函数积分 1. 不定积分 在MATLAB中,调用int函数直接求出符号函数表达式的不定积分解析式,使用格式为 F=int(expr, x),expr为函数的表达式,x为积分变量。

  22. 11.1 MATLAB在高等数学中的应用 2. 定积分 在MATLAB中,函数int同样可以用于求定积分,使用格式为 F=int(expr, x, a, b),expr为函数的表达式,x为积分变量, [a, b]为积分区间。

  23. 11.1 MATLAB在高等数学中的应用 • 级数运算 1. 泰勒(Taylor)展开式 根据泰勒定理,函数在的展开形式为 其中,为截断误差,也称为拉格朗日余项。如果,上式又称为麦克劳林(Maclaurin)公式。 事实上,要使用泰勒公式求函数的近似值是一件非常困难的事情,因为需要计算多项,特别是要计算高阶导数,调用MATLAB中的函数taylor可以直接导出泰勒公式,其使用格式为 (1) taylor(expr, x, k),expr为函数符号表达式,x为自变量,该方式为将函数在处做泰勒展开,k为展开项数。 (2) taylor(expr, x, k, a),该方式为将函数在处做泰勒展开。

  24. 11.1 MATLAB在高等数学中的应用

  25. 11.1 MATLAB在高等数学中的应用 2. 级数求和 对于具有通项公式的级数,MATLAB提供了函数symsum来计算级数和,具体使用格式为 symsum(expr, n, a,b),expr为通项公式表达式,n为级数变量,a和b分别表示开始项和结束项。

  26. 11.1 MATLAB在高等数学中的应用 • 矩阵及线性方程组 1. 零矩阵、幺矩阵和单位矩阵 在矩阵理论中,将所有元素全为0的矩阵称为零矩阵,把所有元素全为1的矩阵称为幺矩阵,而将对角线元素全为1而其余元素全为0的矩阵称为单位矩阵。使用格式分别如下: (1) A=zeros(m),B=ones(m),C=eye(m),分别生成m×m阶零矩阵A、幺矩阵B和单位矩阵C。 (2) A=zeros(m,n),B=ones(m,n),C=eye(m,n),分别生成m×n阶零矩阵A、幺矩阵B和单位矩阵C。

  27. 11.1 MATLAB在高等数学中的应用 • 例如 下面分别生成零矩阵、幺矩阵和单位矩阵。 >> A=zeros(3) A = 0 0 0 0 0 0 0 0 0 >> B=ones(3) B = 1 1 1 1 1 1 1 1 1 >> C=eye(3) C = 1 0 0 0 1 0 0 0 1 >> D=zeros(2,3) D = 0 0 0 0 0 0 >> E=ones(2,3) E = 1 1 1 1 1 1 >> F=eye(2,3) F = 1 0 0 0 1 0

  28. 11.1 MATLAB在高等数学中的应用 2. 随机矩阵和魔方矩阵 使用函数rand()可以生成一个0~1之间的随机数,而使用rand(m,n)则可以生成一个m×n阶随机矩阵,使用rand(m)生成的是m×m阶随机方阵 魔方矩阵是指生成的方阵行、列、对角线之和相等的矩阵,通过函数magic(m)来实现。 例如 生成2×3阶随机方阵以及5阶魔方矩阵。 >> rand(2,3) ans = 0.7655 0.1869 0.4456 0.7952 0.4898 0.6463 >> magic(3) ans = 8 1 6 3 5 7 4 9 2

  29. 11.1 MATLAB在高等数学中的应用 3. 对角矩阵 对角矩阵的生成是通过调用函数diag来实现的,其基本格式为 (1) diag(p),生成以向量p的元素构成的对角矩阵,矩阵大小由p的元素个数决定。 (2) diag(p, k),将向量p的元素分布在对角线偏上或偏下的斜列上,k>0,代表上部,k<0代表下部,k=0时与(1)相同,生成的矩阵阶数=p的元素个数+k。

  30. 11.1 MATLAB在高等数学中的应用 3、矩阵行列式、秩、逆和条件数 在MATLAB中,通过调用函数det、rank、inv、cond即可分别求的矩阵的行列式的值、秩、矩阵的逆和条件数。

  31. 11.1 MATLAB在高等数学中的应用 4. 线性方程组求解 考虑线性方程组,很显然,很显然,利用矩阵的逆可以直接求解线性方程组,这也称为直接法,也可以直接利用之前介绍的反除,即。

  32. 11.1 MATLAB在高等数学中的应用 5. 矩阵的三角分解 根据线性代数理论,如果矩阵A是非奇异矩阵,则它一定可以分解为一个非奇异的单位下三角矩阵和非奇异上三角矩阵,使得成立,但由于需要涉及到选主元来交换某些行,因此还需要增加一个置换矩阵P来构成完整的三角分解,在MATLAB中,通过调用函数lu来实现上述过程。

  33. 11.1 MATLAB在高等数学中的应用 6. 矩阵特征多项式和特征值 求矩阵特征多项式和特征值是线性代数中经常遇到的问题,在MATLAB中通过调用函数eig来实现,其调用格式为 (1) v=eig(A),求矩阵A的特征值,返回形式为由特征值组成的列向量。 (2) [b,v]=eig(A),返回结果b是由特征向量组成的矩阵,而v为以特征值为对角线的对角矩阵。

  34. 11.1 MATLAB在高等数学中的应用 • 方程求根 1. 函数零点 罗尔(Role)零点定理证明了对于,且,则必存在区间内的一点,使得,就是函数的零点。在MATLAB中使用函数fzero很容易求得零点,使用方式为 (1) fzero(myfun, x0),表示求函数fun在x0附近的零点,其中fun为函数句柄。 (2) fzero(myfun, [a b]),表示求函数fun在区间[a,b]上的零点。

  35. 11.1 MATLAB在高等数学中的应用

  36. 11.1 MATLAB在高等数学中的应用

  37. 11.2 Matlab绘图 • 二维图形 在 MATLAB 中,plot是最基本的二维绘图函数,其调用格式有 (1) plot(Y):若Y为实向量,则以该向量元素的下标为横坐标,以Y的各元素值为纵坐标,绘制二维曲线;若Y为复数向量,则等效于plot(real(Y),imag(Y));若Y为实矩阵,则按列绘制每列元素值相对其下标的二维曲线,曲线的条数等于Y的列数;若Y为复数矩阵,则按列分别以元素实部和虚部为横、纵坐标绘制多条二维曲线。 (2) plot(X,Y):若X、Y为长度相等的向量,则绘制以X和Y为横、纵坐标的二维曲线;若X 为向量,Y是有一维与Y同维的矩阵,则以X为横坐标绘制出多条不同色彩的曲线,曲线的条数与Y的另一维相同;若X、Y为同维矩阵,则绘制以X和Y对应的列元素为横、纵坐标的多条二维曲线,曲线的条数与矩阵的列数相同。

  38. 11.2 Matlab绘图 (3) plot(X1,Y1,X2,Y2,…Xn,Yn):其中的每一对参数Xi 和Yi(i=1,2,...,n)的取值和所绘图形与(2)中相同。 (4) plot(X1,Y1,LineSpec,...):以LineSpec 指定的属性,绘制所有Xn、Yn 对应的曲线。 (5) plot(...,'PropertyName',PropertyValue,...):对于由plot 绘制的所有曲线,按照设置的属性值进行绘制,PropertyName 为属性名,PropertyValue 为对应的属性值。

  39. 11.2 Matlab绘图

  40. 11.2 Matlab绘图

  41. 11.2 Matlab绘图

  42. 11.2 Matlab绘图 例如 按不同颜色和线型绘图。 >>x=0:0.2:8; >>y1=0.2+sin(-2*x); >>y2=sin(x.^0.5); >>figure >>plot(x,y1,'g-+',x,y2,'r--d'); 曲线y1 采用绿色、实线、加号标记,曲线y2 采用红色、虚线、菱形标记,结果如图11.3所示。

  43. 11.2 Matlab绘图 MATLAB 在绘图时会根据数据的分布范围自动选择坐标轴的刻度范围,通过调用函数axis指定坐标轴的刻度范围的格式为 axis([xmin,xmax,ymin,ymax]),其中 xmin,xmax,ymin,ymax 分别表示x轴的起点、终点,y 轴的起点、终点。 使用函数xlabel('option ')和ylabel('option ')来实现,也可以使用函数title('option ')为图形加标题,另外使用函数legend('option ')加标注,使用命令grid on/off添加或取消网格线,更加方便的是调用text(x, y, 'string')在指定的坐标(x,y)处加上文字。

  44. 11.2 Matlab绘图 例如 添加坐标标注、标题、网格以及标注的图形。 >>x=0:0.05:5 ; >>figure >>y1=exp(0.4.^x)-1.5;y2=sin(x*4); >>plot(x,y1,x,y2,'r-.') >>xlabel('Input');ylabel('Output'); >>title('My Graphics'); >>legend('y1=exp(0.4.^x)-1.5','y2=sin(x*4)') >>grid on

  45. 11.2 Matlab绘图 例如 为图形加上文字标注。 >> plot(0:pi/20:2*pi,sin(0:pi/20:2*pi)) >>text(pi,0,' \leftarrow sin(\pi)','FontSize',18) 使用text加标注时,可以增加符号,如上面的\leftarrow表示左前头,同时可以设定字体大小,如图11.5所示。

  46. 11.2 Matlab绘图 • 三维曲线图 用函数 plot3 可以绘制三维图形,其调用格式主要有以下几种: (1) plot3(X1,Y1,Z1,...):X1、Y1、Z1 为向量或矩阵,表示图形的三维坐标。该函数可以在同一图形窗口一次画出多条三维曲线,以X1,Y1,Z1,... Xn,Yn,Zn 指定各条曲线的三维坐标。 (2) plot3(X1,Y1,Z1,LineSpec,...):以LineSpec 指定的属性绘制三维图形。 (3) plot3(...,'PropertyName',PropertyValue,...):对以函数plot3 绘制的图形对象设置属性。

  47. 11.2 Matlab绘图 例如:绘制三维曲线图(sin(x), cos(x), x)。 >>x=0:0.05:20; >>figure >>plot3(sin(x),cos(x),x); >>grid, >>text(0,0,0,'0'); >>title('Three Dimension'); >>xlabel('sin(x) ');ylabel('cos(x) '),zlabel('z'); 这里,已向量组(sin(x), cos(x), x)绘制三维曲线,如图11.6所示。

  48. 11.2 Matlab绘图 • 三维曲面图 在MATLAB中,可以通过调用函数surf来绘制三维曲面图,其使用格式为 (1) surf(X,Y,Z):以Z 确定的曲面高度和颜色,按照X、Y 形成的“格点”矩阵,创建一渐变的三维曲面。X、Y 可以为向量或矩阵,若X、Y 为向量,则必须满足m= size(X),n =size(Y),[m,n] = size(Z)。 (2) surf(X,Y,Z,C):以Z 确定的曲面高度,C 确定的曲面颜色,按照X、Y 形成的“格点”矩阵,创建一渐变的三维曲面。

  49. 11.2 Matlab绘图 例如 绘制球面图 figure [X,Y,Z]=sphere(50); surf (X,Y,Z); %绘制球体的三维图形 xlabel('x'),ylabel('y'),zlabel('z'); title('Globle'); 这里调用了函数sphere(n)来生成球体坐标,其中n表示将整个球体坐标划分的网络数,即生成的向量组(x,y,z)的大小。如图11.7所示。

More Related