MATLAB 入门教程
主要内容 Matlab简介 数组和矩阵 Matlab绘图 Matlab在《微积分》中的应用
MATLAB简介 三个代表性的计算机数学语言: MATLAB是MATrix LABoratory 的缩写,由MathWorks公司推出。长于数值计算,编程方便。在各个领域都有领域专家编写的工具箱,能高效、可靠地解决各种问题。 Mathematica,Wolfram Research公司 Maple,Waterloo Maple公司 有强大的解析运算和数学公式推导、定理证明能力,数值计算能力比Matlab弱,更适合纯数学求解。
MATLAB的功能 功能强大 MATLAB产品组是从支持概念设计、算法开发、建模仿真, 到实时实现的集成环境,可用来进行: 数据分析 数值与符号计算 工程与科学绘图 控制系统设计 数字图像信号处理 建模、仿真、原型开发 财务工程、应用开发、图形用户界面设计 功能强大
MATLAB语言特点 语言简洁 编程效率高,允许用数学的语言来编写程序 用户使用方便,把程序的编辑、编译、连接和执行融为一体 高效方便的矩阵和数组运算 语句简单,内涵丰富 扩充能力强,交互性,开放性 方便的绘图功能 该软件由c语言编写,移植性好 语言简洁
MATLAB操作窗口 双击桌面快捷键,启动软件。 接受命令的窗口
MATLAB的环境 菜单项; 工具栏; 【Command Window】命令窗口; 【Launch Pad】分类帮助窗口; 【Workspace】工作区窗口; 【Command History】指令历史记录窗口; 【Current Directory】当前目录选择窗口;
主要内容 Matlab简介 数组和矩阵 Matlab绘图 Matlab在《微积分》中的应用
数组和矩阵 1.变量 Matlab不需要任何类型声明和维数说明,变量名的第一个字符必须是字母。 a=1; num_students=25; 2.常用的常数 pi:3.14159265… i,j:虚数单位; 1i; 3-4j; 3e5i Inf 无限值; NaN 空值 e 以10为底的幂次。1.602e-20, 6.532e12
数组和矩阵 3.运算符 +,- ,*,/,\ 左除: 2\3 = 1.5000 ^ 幂: x=2; x^3; x^(-3) +,- ,*,/,\ 左除: 2\3 = 1.5000 ^ 幂: x=2; x^3; x^(-3) ’ 复数共轭转置 x=3+4i x’=3-4i .点运算 (1)当x是一个向量时,求 不能写成x^2,而必须写成 x.^2 (2)两矩阵之间的点乘运算C=A.*B
数组和矩阵 4.常用函数 sqrt(x) 开平方 abs(x) 绝对值 abs(3-4i) exp(x) ex; log(x) 以e为底,x的对数 log(exp(2)) round(x)取整 syms x; 定义x为符号变量 5.帮助函数 help: help elfun; help specfun; help elmat
数组和矩阵 (1)直接构造,用空格或逗号间隔数组元素 6.构造数组 A = [2 3 5 1] 或 A = [sqrt(2),3e2,log(5),1+2i] (2)用增量法构造数组 (first:last) 或 (first:step:last) A = 10:15 A = 3:0.2:4 A = 9:-1:0 (3)用linspace函数构造数组 x = linspace(first,last,num) x = linspace(0,10,5)
数组和矩阵 7.构造矩阵 (1)简单创建方法 row = [e1,e2,…,em]; A = [row1;row2;…;rown] (2)构造特殊矩阵 ones 创建一个所有元素都为1的元素 zeros 创建一个所有元素都为0的元素
数组和矩阵 eye 创建对角元素为1,其他元素为0的元素 rand 创建一个矩阵或数组,其中的元素服从均匀分布 rand(5)*20; randn创建一个矩阵或数组,其中的元素服从正态分布 diag 创建对角矩阵 C = [3 2 1]; V=diag(C); (3)聚合矩阵 水平聚合 C = [A B] 垂直聚合 C = [A;B]
数组和矩阵 8.获取矩阵元素 9.获取与矩阵有关信息 A=[2,3,3;4 9 4;6,3,0] 取单个元素: 取多个元素: 获取所有元素: length 返回最长维长度 ndims 返回维数 numel 返回元素个数 size 返回每一维的长度 [rows cols] = size(A) A(3,1) A(:,2) A(3,:) A(:)
数组和矩阵 9.矩阵的基本运算 例 已知 >> a=[4 -2 2;-3 0 5;1 5 3]; b=[1 3 4;-2 0 -3;2 -1 1]; >> a*b 12 10 24 7 -14 -7 -3 0 -8 =AB ans =
数组和矩阵 9.矩阵的基本运算 例 已知 >> rank(a) ans = 3
数组和矩阵 9.矩阵的基本运算 例 已知 >> det(a) ans = -158
数组和矩阵 9.矩阵的基本运算 例 已知 求特征多项式 poly(A) A=sym(A); 将A转换成符号矩阵
数组和矩阵 9.矩阵的基本运算 例 已知 A/B相当于矩阵方程XB=A ans = 0 0 2.0000 0 0 2.0000 -2.7143 -8.0000 -8.1429 2.4286 3.0000 2.2857
数组和矩阵 9.矩阵的基本运算 例 已知 >> A\B ans = 0.4873 0.4114 1.0000 0.4873 0.4114 1.0000 0.3671 -0.4304 0 -0.1076 0.2468 0
数组和矩阵 10.多项式求根 例 已知 >>p = [1 0 -2 -5]; >>roots(p) ans = 2.0946 -1.0473 + 1.1359i -1.0473 - 1.1359i
主要内容 Matlab简介 数组和矩阵 Matlab绘图 Matlab在《微积分》中的应用
Matlab绘图 1.二维图形绘制 plot(t,y) 例1 用Matlab画出 的图形。 >> x=-5:0.05:5; >> y=x.^2; >> plot(x,y) plot(x,y,’b+’) 例2 绘制y=sin(tan(x))-tan(sin(x))在 区间内的曲线。 >>x=[-pi:0.05:pi];y=sin(tan(x))-tan(sin(x)); plot(x,y)
Matlab绘图 2.三维图形绘制 将多条曲线画在一个图上: plot(t1,y1,选项1,t2,y2,选项2,……) >>plot(x,x.^2,’rO’,x,x.^3,’b.’) 2.三维图形绘制 plot3(x,y,z) plot3(x1,y1,z1,选项1,x2,y2,z2,选项2,……) 例 试绘制参数方程 , , 的三维曲线。 >> t=0:.1:2*pi; 注意点运算 x=t.^3.*sin(3*t).*exp(-t);y=t.^3.*cos(3*t).*exp(-t); z=t.^2; plot3(x,y,z),grid
习 题 15.利用Mathematica作出数列 的点图, 观察当 时, 的变化趋势。并利用数值计算的命令计算当 取很大的整数时, 的取值。 习 题 15.利用Mathematica作出数列 的点图, 观察当 时, 的变化趋势。并利用数值计算的命令计算当 取很大的整数时, 的取值。 >>n=1:10000; >>xn=(1+1./n).^(n+1); >>plot(n,xn,’.’)
习 题 >> x = -100:100; >> plot(x,x.*cos(x)) 16.函数 在 习 题 16.函数 在 内是否有界?又问当 时, 这个函数是否为无穷大?为什么?用 Mathematica作图并验证你的结论。 >> x = -100:100; >> plot(x,x.*cos(x))
习 题 P168 20.利用Mathematica作出函数 的图形,分别取-1,0,1,2,3等5个值,试比较作出的5个 习 题 P168 20.利用Mathematica作出函数 的图形,分别取-1,0,1,2,3等5个值,试比较作出的5个 图,并从图上观察极值点、驻点,增加、减少区间,上凸、 下凸区间以及渐近线。 x=-5:0.1:4 plot(x,1./(x.^2+2*x-1)) plot(x,1./(x.^2+2*x)) plot(x,1./(x.^2+2*x+1)) plot(x,1./(x.^2+2*x+2)) plot(x,1./(x.^2+2*x+3))
习 题 17.(1)在计算机屏幕上作出函数 和 的图形,何时开始 (2)再作出函数 的图形。选用 适当的显示区域,展示 时, 的变化趋势。 习 题 17.(1)在计算机屏幕上作出函数 和 的图形,何时开始 (2)再作出函数 的图形。选用 适当的显示区域,展示 时, 的变化趋势。 (3)确定正数 ,使当 时,
习 题 >>x=1:0.05:5 >>plot(x,x.^0.1,'r.',x,log(x),'b+') 习 题 >>x=1:0.05:5 >>plot(x,x.^0.1,'r.',x,log(x),'b+') >> x=linspace(3.43063112146e15-1e6,3.43063112146e15 +1e6,100); >> plot(x,x.^0.1,'r+',x,log(x),'b.') >>axis([3.43063112146e15-1e3 3.43063112146e15+1e3 35.77152063979 35.7715206398]); axis([XMIN XMAX YMIN YMAX]) >> x=linspace(1e29,1e29+1e16,1000); >> plot(x,log(x)./(x.^0.1),'r.') >>axis([1e29-1e20 1e29+1e20 0.08 0.12])
主要内容 Matlab简介 数组和矩阵 Matlab绘图 Matlab在《微积分》中的应用
MATLAB在《微积分》中的应用 1、求函数值 例1 在命令窗口中键入表达式 并求 时的函数值。 >> x=2,y=4 >>z=x^2+exp(x+y)-y*log(x)-3 命令窗口显示结果: x = 2 y = 4 z = 401.6562
MATLAB在《微积分》中的应用 2、求极限 极限问题: 求单侧极限:
MATLAB在《微积分》中的应用 2、求极限 例2 求极限 >> syms x; >>limit(sin(x)/x,x,0) 定义符号变量 ans = 1
MATLAB在《微积分》中的应用 2、求极限 例3 求极限 >> syms x; >>limit((exp(x^3)-1)/(1-cos(sqrt(x-sin(x)))),x,0, ’right’) 定义符号变量 ans = 12
MATLAB在《微积分》中的应用 2、求极限 例4 求极限 >> syms n; >>limit(sqrt(n+sqrt(n))-sqrt(n),n,inf) 定义符号变量 ans = 1/2
MATLAB在《微积分》中的应用 3、求导数 调用格式: 求导数 求n阶导数 多元函数的偏导数: 或
MATLAB在《微积分》中的应用 3、求导数 习题P168 (1) 定义X为符号变量 >> syms x >> diff(sin(x.^3),x) 求 ans = 3*cos(x^3)*x^2
MATLAB在《微积分》中的应用 3、求导数 (2) >> syms x >> diff(atan(log(x)),x) ans = 1/x/(1+log(x)^2)
MATLAB在《微积分》中的应用 3、求导数 (3) >> syms x >> diff((1+1/x)^x,x) ans = (1+1/x)^x*(log(1+1/x)-1/x/(1+1/x))
MATLAB在《微积分》中的应用 3、求导数 (4) >> syms x
MATLAB在《微积分》中的应用 3、求导数 例6 设 ,求 定义X为符号变量 >> syms x >> y=10^x+x^10+log(x) y = x^10+10^x+log(x) >> diff(y) 求 ans = 10*x^9+10^x*log(10)+1/x
例7 设 求 >> syms x; >> y=log(1+x); >> a=diff(y,x,2) a = -1/(1+x)^2 >> x=1;eval(a) ans = -0.2500 求 求 将符号表达式 转换成数值表达式
例6 设 ,求 >> syms x y; z=exp(2*x)*(x+y^2+2*y); a=diff(z,x) b=diff(z,y) c=diff(z,x,2) d=diff(z,y,2) e=diff(a,y)
a =2*exp(2*x)*(x+y^2+2*y)+exp(2*x) b =exp(2*x)*(2*y+2) c =4*exp(2*x)*(x+y^2+2*y)+4*exp(2*x) d =2*exp(2*x) e =2*exp(2*x)*(2*y+2)
MATLAB在《微积分》中的应用 4、求极值和零点 例7 已知 ,求 (1)函数的零点;(2)函数在[-1,2]上的最小值 >> fzero('3*x^5-x^4+2*x^3+x^2+3',0) 命令函数 函数 起始搜索点 ans = -0.8952 >> [x,f]=fminbnd('3*x^5-x^4+2*x^3+x^2+3',-1,2) x = -1 f=-2
MATLAB在《微积分》中的应用 4、求极值和零点 ,求 例7 已知 函数在点(1,-1,0)附近的最小值 >> [X,FVAL]= FMINSEARCH('x(1)^2+2.5*sin(x(2))- x(3)*x(1)*x(2)^2',[1 -1 0]) X = 0.0010 -1.5708 0.0008 FVAL =-2.5000
MATLAB在《微积分》中的应用 5、求积分 (1)不定积分 (2)定积分与无穷积分 (a,b)为定积分的积分区间,求解无穷积分时 允许将a,b设置成-Inf或Inf。
MATLAB在《微积分》中的应用 5、求积分 例8 求不定积分 >> int(cos(2*x)*cos(3*x)) Integrate:积分 ans =1/2*sin(x)+1/10*sin(5*x) 例9 求定积分 >>int(x^2*log(x),x,1,exp(1)) >>eval(ans) ans = 4.5746
MATLAB在《微积分》中的应用 5、求积分 例10 求二重积分 >> syms x y; >> f=y^2/x^2; >> int(int(f,x,1/2,2),y,1,2) ans =7/2
MATLAB在《微积分》中的应用 5、求积分 P251 18.(1) >>syms x >>int((sin(x))^10,x) ans = -1/10*sin(x)^9*cos(x)-9/80*sin(x)^7*cos(x)-21/160*sin(x)^5*cos(x)-21/128*sin(x)^3*cos(x)-63/256*cos(x)*sin(x)+63/256*x
MATLAB在《微积分》中的应用 5、求积分 P251 18.(2) >> int(1/(((x+1)^2*(x-1)^4)^(1/3)),x) ans = -3/2*(x+1)/((x+1)^2*(x-1))^(1/3)
MATLAB在《微积分》中的应用 5、求积分 P251 18.(3) >> int(sin(x^(1/6)),x,0,1) ans = -606*cos(1)+390*sin(1)
MATLAB在《微积分》中的应用 5、求积分 P251 18.(4) 变步长数值积分 >> int(log(1+x)/(1+x^2),x,0,1) ans = 1/4*pi*log(2)-Catalan-1/2*i*dilog(1/2-1/2*i)+1/2*i*dilog(1/2+1/2*i) vpa(ans) >> quadl('log(1+x)./(1+x.^2)',0,1) ans = 0.2722 变步长数值积分
例11 求定积分 >> int(exp(-x^2/2),0,1) ans = 1/2*erf(1/2*2^(1/2))*2^(1/2)*pi^(1/2) >> x=0:0.01:1; y=exp(-x.^2/2); trapz(x,y) ans = 0.8556 >> y='exp(-x.^2/2)'; >> quadl(y,0,1) ans = 0.8556 梯形法数值积分 变步长数值积分
MATLAB在《微积分》中的应用 5、求积分 例12 >> int(int(int(4*x*z*exp(-x^2*y-z^2),z,0,pi),y,0,pi),x,0,2) ans = (-Ei(1,4*pi)+Ei(1,4*pi)*exp(pi^2)-2*log(2)+2*log(2) *exp(pi^2)-eulergamma-log(pi)+eulergamma*exp(pi^2) +log(pi)*exp(pi^2))/exp(pi^2) >> vpa(ans,60) 3.10807940208541272283461464767138521019142306317021863483587
MATLAB在《微积分》中的应用 6、解微分方程 指明自变量 :D4y :D2y(2)=3 既可以描述微分方程,又可以描述初始条件或边界条件。 :D4y :D2y(2)=3
MATLAB在《微积分》中的应用 6、解微分方程 例13 计算初值问题: >> dsolve('Dy=x+y','y(0)=1','x') ans =-x-1+2*exp(x) 一定要大写
MATLAB在《微积分》中的应用 6、解微分方程 的通解。 例14 求方程 >> dsolve('Dy+2*y/x=sin(3*x)/(x^2)','x') ans = (-1/3*cos(3*x)+C1)/x^2
MATLAB在《微积分》中的应用 6、解微分方程 设输入信号为 ,求 例15 >> syms t >> u=exp(-5*t)*cos(2*t+1)+5; uu=5*diff(u,t,2)+4*diff(u,t)+2*u uu = 87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10
MATLAB在《微积分》中的应用 6、解微分方程 设输入信号为 ,求 例14 >> syms t y; y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y=87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10']) y = -547/520*exp(-5*t)*sin(2*t+1)-343/520*exp(-5*t)*cos(2*t+1)+5/12+C1*exp(-2*t)+C2*exp(-3*t)+C3*exp(-t)+C4*exp(-4*t)
MATLAB在《微积分》中的应用 6、解微分方程 若已知 >>y=dsolve(['D4y+10*D3y+35*D2y+50*Dy+24*y=','87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10'],'y(0)=3','Dy(0)=2','D2y(0)=0','D3y(0)=0') y = -547/520*exp(-5*t)*sin(2*t+1)-343/520*exp(-5*t)*cos(2*t+1)+5/12+(-51/13*sin(1)-445/26*cos(1)-69/2)*exp(-2*t)+(5/8*sin(1)+179/8*cos(1)+73/3)*exp(-3*t)+(97/60*sin(1)+133/30*cos(1)+19)*exp(-t)+(41/15*sin(1)-271/30*cos(1)-25/4)*exp(-4*t)
MATLAB在《微积分》中的应用 6、解微分方程 例16 >> [x,y]=dsolve('D2x+2*Dx=x+2*y-exp(-t)','Dy=4*x+3*y+4*exp(-t)') x = -6*t*exp(-t)+C1*exp(-t)+C2*exp((1+6^(1/2))*t)+C3*exp(-(-1+6^(1/2))*t) y = 6*t*exp(-t)-C1*exp(-t)+4*C2*exp((1+6^(1/2))*t)+2*C2*exp((1+6^(1/2))*t)*6^(1/2)+4*C3*exp(-(-1+6^(1/2))*t)-2*C3*exp(-(-1+6^(1/2))*t)*6^(1/2)+1/2*exp(-t)
曲面模型的建立 1.函数表示的曲面 (1) ezmesh(f) 创建函数f(x,y)的图形,f是一个字符串,表示两个 变量的数学函数表达式。 的图形。 >> syms x y; >> ezmesh('y^2-3*x*y-x^2')
曲面模型的建立 1.函数表示的曲面 (2) ezsurf(f) 创建函数f(x,y)的图形,f是一个字符串,表示两个 变量的数学函数表达式。 >> syms x y; >> ezsurf('y^2-3*x*y-x^2') 练习:
曲面模型的建立 2.二次曲面 (1) 柱面 [X,Y,Z]=cylinder 返回半径为1的柱面的x,y,z的坐标 [X,Y,Z]=cylinder(r)返回用r定义周长曲线的柱面的三维坐标。 cylinder将r中每个元素作为半径。 [X,Y,Z]=cylinder(r,n) >>cylinder; >>t=-pi:pi/10:pi; >> cylinder(2+sin(t)) >> cylinder(t) 或 cylinder(t.^2)
曲面模型的建立 2.二次曲面 (2) 球面 >>sphere >>axis equal
曲面模型的建立 3.用给定数据绘图 (1) 网格图 [X,Y] = meshgrid(-2:.2:2, -2:.2:2); mesh(Z) Z为高度,颜色与高度成比例。 mesh(X,Y,Z)绘网格,Z确定颜色 meshc(X,Y,Z)在网格下方画一个等值线图。 meshz(X,Y,Z)在网格下方画一个窗帘图。 [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); mesh(Z) 或 meshc(X,Y,Z) meshz(X,Y,Z)
曲面模型的建立 3.用给定数据绘图 (2) 三维刻面图 surf(Z) 高度Z为单值函数,指定颜色数据和刻面高度 [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); surf(Z)
曲面模型的建立 3.用给定数据绘图 (3) 三维曲面图 surfl(z) surfl(X,Y,Z) surfl(…,’light’) [X,Y] = meshgrid(-2:.2:2, -2:.2:2); Z = X .* exp(-X.^2 - Y.^2); surfl(Z); shading interp; 添加阴影 colormap(colorcube); 颜色渐变
再见