MATLAB 在教学中的应用
MATLAB简介 MATLAB是MATrix LABoratory 的缩写,是由美国MathWorks公司开发的工程计算软件,迄今MATLAB已推出了6.5版. 1984年MathWorks公司正式将MATLAB推向市场,从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能.在国际学术界,MATLAB已经被确认为准确、可靠的科学计算标准软件.在设计研究单位和工业部门,MATLAB被认作进行高效研究、开发的首选软件工具.
MATLAB的功能 功能强大 MATLAB产品组是从支持概念设计、算法开发、建模仿真, 到实时实现的集成环境,可用来进行: 数据分析 数值与符号计算 工程与科学绘图 控制系统设计 数字图像信号处理 建模、仿真、原型开发 财务工程、应用开发、图形用户界面设计 功能强大
MATLAB语言特点 语言简洁 编程效率高,允许用数学的语言来编写程序 用户使用方便,把程序的编辑、编译、连接和执行融为一体 高效方便的矩阵和数组运算 语句简单,内涵丰富 扩充能力强,交互性,开放性 方便的绘图功能 该软件由c语言编写,移植性好 语言简洁
MATLAB的环境 菜单项; 工具栏; 【Command Window】命令窗口; 【Launch Pad】分类帮助窗口; 【Workspace】工作区窗口; 【Command History】指令历史记录窗口; 【Current Directory】当前目录选择窗口;
MATLAB操作窗口 双击桌面快捷键,启动软件。 接受命令的窗口
M文件的编写与应用 MATLAB的M文件就是用户把要实现的命令写在 一个以m作为文件扩展名的文件中,然后由MATLAB 系统进行解释,运行出结果。即为实现某种功能的命 令集。从而使得MATLAB具有强大的可开发性与可扩 展性。 MATLAB是由C语言开发而成,因此,M文件的 语法规则与C语言几乎完全一样。 M文件可在命令窗口直接调用,只需键入文件名。
不在命令窗口显示结果
调用M文件shili.m
MATLAB在《微积分》中的应用 1、求函数值 例1 在命令窗口中键入表达式 并求 时的函数值。 >> x=2,y=4 >>z=x^2+exp(x+y)-y*log(x)-3 命令窗口显示结果: x = 2 y = 4 z = 401.6562
例2 用循环语句编写M文件计算ex的值,其中x,n为输入 function y=e(x,n) y=1;s=1; for i=1:n s=s*i; y=y+x^i/s; end y >> y=e(1,100) ans = y y = 2.7183 调用函数 M文件
>>limit(sqrt(n+sqrt(n))-sqrt(n),n,inf) MATLAB在《微积分》中的应用 2、求极限 例3 求极限 LIMIT Limit of an expression. LIMIT(F,x,a) takes the limit of the symbolic expression F as x -> a. LIMIT(F,x,a,'right') or LIMIT(F,x,a,'left') specify the direction of a one-sided limit. 定义符号变量 >> syms n; >>limit(sqrt(n+sqrt(n))-sqrt(n),n,inf) ans = 1/2
MATLAB在《微积分》中的应用 3、求导数 例4 设 ,求 定义X为符号变量 >> syms x >> y=10^x+x^10+log(x) y = x^10+10^x+log(x) >> diff(y) 求 Difference:差分 Differential:微分的 ans = 10*x^9+10^x*log(10)+1/x
例5 设 求 >> 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 >> fminbnd('3*x^5-x^4+2*x^3+x^2+3',-1,2) ans = -1.1791e-005
MATLAB在《微积分》中的应用 4、求极值和零点 ,求 例8 已知 函数在点(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、求积分 例9 求不定积分 Integrate:积分 >> int(cos(2*x)*cos(3*x)) ans =1/2*sin(x)+1/10*sin(5*x) 例10 求定积分 >> x=1:0.01:exp(1); >> y=x.^2.*log(x); >> trapz(x,y) ans = 4.5137 >> eval(int(x^2*log(x),1,exp(1))) ans = 4.5746
例10 求定积分 >> 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、求积分 例11 求二重积分 >> syms x y; >> f=y^2/x^2; >> int(int(f,x,1/2,2),y,1,2) ans =7/2 >> f='(y.^2)./(x.^2)'; >> dblquad(f,1/2,2,1,2) ans = 3.5000 符号积分 数值计算
MATLAB在《微积分》中的应用 6、解微分方程 例12 计算初值问题: >> dsolve('Dy=x+y','y(0)=1','x') ans =-x-1+2*exp(x) 一定要大写
MATLAB在《微积分》中的应用 7、级数问题 例13 求函数 的泰勒展开式,并计算该 函数在x=3.42时的近似值。 >> syms x; >> taylor(sin(x)/x,x,10) >> x=3.42; >> eval(ans) ans = -0.0753 ans = 1-1/6*x^2+1/120*x^4-1/5040*x^6+1/362880*x^8
MATLAB在《线性代数》中的应用 1、矩阵的基本运算 例1 已知 >> 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 ans = =AB
MATLAB在《线性代数》中的应用 1、矩阵的基本运算 例1 已知 >> inv(a) ans = 0.1582 -0.1013 0.0633 -0.0886 -0.0633 0.1646 0.0949 0.1392 0.0380
MATLAB在《线性代数》中的应用 1、矩阵的基本运算 例1 已知 >> rank(a) ans = 3
MATLAB在《线性代数》中的应用 1、矩阵的基本运算 例1 已知 >> a/b ans = 0 0 2.0000 -2.7143 -8.0000 -8.1429 2.4286 3.0000 2.2857
MATLAB在《线性代数》中的应用 1、矩阵的基本运算 例1 已知 >> a\b ans = 0.4873 0.4114 1.0000 0.3671 -0.4304 0 -0.1076 0.2468 0
MATLAB在《线性代数》中的应用 2、解线性方程组 >> a=[1 -1 4 -2;1 -1 -1 2;3 1 7 -2;1 -3 -12 6]; >> rref(a) 将矩阵A化为最简阶梯形 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 RREF Reduced row echelon form ans = R(A)=4=n; 所以方程组只有零解。
MATLAB在《线性代数》中的应用 2、解线性方程组
>> a=[2 3 1;1 -2 4;3 8 -2;4 -1 9]; >> b=[4;-5;13;-6]; >> c=null(a,'r') c = -2 1 >> [l u]=lu(a); >> x0=u\(l\b) x0 = -3124/135 3529/270 2989/270 求齐次方程组 的基础解系 求非齐次方程组 的一个特解 所以方程组的一般解为
3、将矩阵对角化 >> a=[-1 2 0;-2 3 0;3 0 2]; >> [v,d]=eig(a) v = 0 379/1257 379/1257 0 379/1257 379/1257 1 -379/419 -379/419 d =2 0 0 0 1 0 0 0 1 A的特征值为2,1,1
4、用正交变换化二次型为标准形 >> a=[1 1 1 1 1 1 1 1 1 1 1 1]; >> format >> [u t]=schur(a) u =0.0846 0.4928 0.7071 0.5000 0.0846 0.4928 -0.7071 0.5000 -0.7815 -0.3732 0 0.5000 0.6124 -0.6124 0 0.5000 t = -0.0000 0 0 0 0 -0.0000 0 0 0 0 0 0 0 0 0 4.0000
>> a=[1 1 1 1;1 1 1 1;1 1 1 1;1 1 1 1]; format rat [u t]=schur(a) FORMAT RAT Approximation by ratio of small integers. u = 596/7049 1095/2222 985/1393 1/2 596/7049 1095/2222 -985/1393 1/2 -1198/1533 -789/2114 0 1/2 1079/1762 -1079/1762 0 1/2 t = * 0 0 0 0 * 0 0 “*”表示 0 0 0 0 近似于零 0 0 0 4
4、用正交变换化二次型为标准形 结论:作正交变换 则有
再见