1.3k likes | 1.57k Views
Matlab软件 及 应用. 闽南理工学院 实践教学中心 电子教研室 实验员 : 张博达. 课程安排. 学时: 16 考核方式: 实验报告 +上机+考勤 教材:MATLAB基础及其应用教程. 课程任务. 通过本课程的教学,应使同学们熟练掌握常用的数学软件,培养学生运用数学软件分析和解决数学问题和实际问题的能力。通过对实际问题的数学处理与计算机求解,完成建模和求解的任务,使同学们真正体验到数学及计算机的实际应用。. 本课程所学软件可以为数学建模和数学实验等解决实际问题提供有力的平台帮助 数学实验就是以计算机为仪器,以软件为载体,通过实验解决实际中的数学问题
E N D
Matlab软件及应用 闽南理工学院 实践教学中心 电子教研室 实验员:张博达
课程安排 • 学时:16 • 考核方式:实验报告+上机+考勤 • 教材:MATLAB基础及其应用教程
课程任务 通过本课程的教学,应使同学们熟练掌握常用的数学软件,培养学生运用数学软件分析和解决数学问题和实际问题的能力。通过对实际问题的数学处理与计算机求解,完成建模和求解的任务,使同学们真正体验到数学及计算机的实际应用。
本课程所学软件可以为数学建模和数学实验等解决实际问题提供有力的平台帮助本课程所学软件可以为数学建模和数学实验等解决实际问题提供有力的平台帮助 • 数学实验就是以计算机为仪器,以软件为载体,通过实验解决实际中的数学问题 • 而我们学习数学软件就是相当于学习如何使用仪器
一、实验目的 • 国际上最常用的三种数学类科技应用软件为:3M • 掌握:Command Window操作要旨; Command History历史指令窗; Current Directory 路径设置器和文件管理;工作空间浏览器和变量编辑器。Desktop操作桌面的启动;Editor/Debugger和脚本编写初步; 帮助系统及其使用。
二、实验内容 • 1 Desktop操作桌面的启动 • 启动matlab • 2 Command Window操作应用,熟悉操作桌面各个窗口的功能和位置。
在matlab环境下运用以下指令,以便初步了解关于常数的预定义变量。重点掌握各常数的含义。format short eRMAd=realmax('double') % 双精度类型(默认)时最大实数RMAs=realmax('single') % 单精度类型时最大实数RMAd = 1.7977e+308RMAs = 3.4028e+038
1.1 MATLAB概述 • IMA64=intmax('int64') % int64整数类型时最大正整数 • IMA32=intmax % int32(默认)整数类型时最大正整数 • IMA32=intmax('int16') % int16整数类型时最大正整数
e1=eps % 双精度类型时的相对精度 • e2=eps(2) % 表达2时的绝对精度 • pi
3 使用Command History历史指令窗 • 历史指令窗记录着:每次开启MATLAB的时间,及开启MATLAB后在指令窗中运行过的所有指令行。 该窗不但能清楚地显示指令窗中运行过的所有指令行,而且所有这些被记录的指令行都能被复制,或再运行。关于历史指令窗的功能详见表1.5-1。
画出衰减振荡曲线,的取值范围是 • t=0:pi/50:4*pi; %定义自变量t的取值数组 • y=exp(-t/3).*sin(3*t); %计算与自变量相应的y数组。注意:乘法符前面的小黑点。 • plot(t,y,'-r','LineWidth',2) %绘制曲线 • axis([0,4*pi,-1,1]) • xlabel('t'),ylabel('y')
4 Current Directory 路径设置器和文件管理 题:搜索一个名为eps的指令,看看会得出什么结果?
5 工作空间浏览器和变量编辑器 • 题:画出衰减振荡曲线,的取值范围是(配图1.3-4)。本例演示:展示数组运算的优点;展示MATLAB的可视化能力。程序如下: • t=0:pi/50:4*pi; %定义自变量t的取值数组 • y=exp(-t/3).*sin(3*t); %计算与自变量相应的y数组。注意:乘法符前面的小黑点。 • plot(t,y,'-r','LineWidth',2) %绘制曲线 • axis([0,4*pi,-1,1]) • xlabel('t'),ylabel('y')
然后通过“工作空间浏览器”的运作,采用图形显示内存变量t和y之间的关系图形 。 • 6、 按照书中所给的步骤操作一下matlab的帮助系统,了解它的使用。
实验二 符号计算 • 科学与工程技术中的数值运算固然重要,但自然科学理论分析中各种各样的公式、关系式及其推导就是符号运算要解决的问题。 • 在Matlab7.0中,符号计算虽以数值运算的补充身份出现,但它们都是科学计算研究的重要内容。 • Matlab开发了实现符号计算的工具包Symbolic Math Toolbox 。
一、实验目的 • 掌握:符号微积分的计算;符号矩阵分析和代数方程(组)的符号解法;符号计算结果的可视化。了解:MATLAB符号计算基本知识,包括符号对象的创建、符号数字、符号表达式的操作。
二、实验内容 • 1符号数字及表达式的操作 • 题:运行下面程序,掌握符号类数字与数值类数字之间的差异 • a=pi+sqrt(5) • sa=sym('pi+sqrt(5)') • Ca=class(a) • Csa=class(sa) • vpa(sa-a)
题:用符号研究的解。 • 题:将书中第二章前两节的指令在指令窗运行,熟悉掌握各条指令的作用 • 2符号微积分 • limit(f,v,a) 求极限 • limit(f,v,a,’right’) 求右极限 • limit(f,v,a,’left’) 求左极限 • dfdvn=diff(f,v,n) 求 • fjac=jacobian(f,v) 求多元向量函数f(v)的jacobian矩阵 • r=taylor(f,n,v,a) 把f(v)在v=a处进行泰勒展开
题:利用上面的指令进行运算,求解 • 题:设cos(x+siny)=siny, 求dy/dx(隐函数求导). • 题:设cos(x+siny)=siny, 求dy/dx(隐函数求导). • 题:求f(x)=xex在x=0处展开的8阶Maclaurin级数,即忽略9阶及以上小量的泰勒级数展开 。 • intf=int(f,v) 给出f 对指定变量v的不定积分 • intf=int(f,v,a,b) 给出f对指定变量v的定积分
题:利用上面的指令进行运算,求解 • (1)
3 微分方程的符号解法 • S=dslove(‘eq1,eq2,…,eqn’, ’cond1,cond2,…,condn’,’v’) • S=dslove(‘eq1’,’eq2’,…,’eqn’,’cond1’,‘cond2’,…,’condn’,’v’) • 题:利用上面的指令进行运算,图示微分方程y=xy'-(y')2通解和奇解的关系
4 符号矩阵分析和代数方程解 • 题:求线性方程组
一、符号运算的基本操作 4符号计算结果的可视化 题:
实验三:数值数组及向量化运算 • 一、实验目的和实验能力要求: • 掌握:数组的创建方法;数组的标识与寻访;数组的运算;关系操作和逻辑操作。了解:“非数”NaN和“空”数组。
二、实验内容: • 1 一、二维数值数组的创建和寻访 • 2 数组运算和向量化编程 • 3 “非数”NaN和“空”数组 • 4 关系操作和逻辑操作 • 5 课后题
例题演示:在matlab环境下运用以下指令,以便初步了解数值数组及其计算。例题演示:在matlab环境下运用以下指令,以便初步了解数值数组及其计算。 • 本例演示:(A)本题被积分函数的原函数没有“封闭解析表达式”,符号计算无法解题;(B)数值计算能很快地求出该定积分。
(1) • syms t x % • ft=t^2*cos(t) % • sx=int(ft,t,0,x) % • % • ft = • t^2*cos(t) • sx = • x^2*sin(x) - 2*sin(x) + 2*x*cos(x)
(2)dt=0.05; %t=0:dt:5; %Ft=t.^2.*cos(t); %Sx=dt*cumtrapz(Ft); %t(end-4:end) %Sx(end-4:end) %plot(t,Sx,'.k','MarkerSize',12) %xlabel('x'),ylabel('Sx'),grid on
ans = • 4.8000 4.8500 4.9000 4.9500 5.0000 • ans = • -20.1144 -19.9833 -19.7907 -19.5345 -19.2131
【例3.2-1】一维数组的常用创建方法 • a1=1:6 % • a2=0:pi/4:pi % • a3=1:-0.1:0 %
b1=linspace(0,pi,4) % • b2=logspace(0,3,4) % • c1=[2 pi/2 sqrt(3) 3+5i] % • rand('twister',0) % • c2=rand(1,5) %
【例3.2-5】标准数组产生的演示 • ones(2,4) % • randn('state',0) % • randn(2,3) % • D=eye(3) % • diag(D) % • diag(diag(D)) % • randsrc(3,20,[-3,-1,1,3],1)
【例3.2-6】本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。【例3.2-6】本例演示:数组元素及子数组的各种标识和寻访格式;冒号的使用;end的作用。 • A=zeros(2,6) % • A(:)=1:12 % • A(2,4) % • A(8) % • A(:,[1,3]) % • A([1,2,5,6]') % • A(:,4:end) % • A(2,1:2:5)=[-1,-3,-5] % • B=A([1,2,2,2],[1,3,5] ) % • L=A<3 % • A(L)=NaN %
【例3.4-1】非数的产生和性质的演示 • a=0/0,b=0*log(0),c=inf-inf • 0*a,sin(a) • isnan(a) % • class(a) %
【例3.4-3】“空”数组的演示 • (1)创建“空”数组 • a=[] • b=ones(2,0),c=zeros(2,0),d=eye(2,0) • f=rand(2,3,0,4) • (2)“空”数组的属性 • class(a) % • isnumeric(a) % • isempty(a) % • which a % • ndims(a) % • size(a) %
(3)“空”数组用于子数组的删除和大数组的大小收缩(3)“空”数组用于子数组的删除和大数组的大小收缩 • A=reshape(-4:5,2,5) • A(:,[2,4])=[] %
【例3.5-1】关系运算演示 • A=1:9,B=10-A • r0=(A<4) % • r1=(A==B) %
【例3.5-3】逻辑和关系操作 • (1)逻辑关系操作的组合 • A=[-2,-1,0,0,1,2,3] • L1=~(A>1) % • L2=(A>0)&(A<2) % • (2)xor的作用 • A,B=[0,-1,1,0,1,-2,-3] • C=xor(A,B) %
实验四 数值计算 • 一、实验目的和实验能力要求: • 掌握:函数极值的数值求解;常微分方程的数值解;矩阵运算和特征参数;矩阵的变换和特征值分解;线性方程的解;概率函数、分布函数、逆分布函数和随机数的发生;多项式拟合和最小二乘法。近似数值极限及导数;数值求和与近似数值积分;计算精度可控的数值积分;一般代数方程的解。
二、实验内容: • 1数值微积分 • 2 矩阵和代数方程 • 3 概率分布和统计分析 • 4 多项式运算和卷积 • 5 课后题
例题演示:在matlab环境下运用以下指令,以便初步了解数值计算。例题演示:在matlab环境下运用以下指令,以便初步了解数值计算。 • 【例4.1-2】已知x=sin(x),求该函数在区间[0,2pi]中的近似导函数。本例演示:自变量增量的适当取值对数值导函数的精度影响极大。 • (1)增量取得过小
d=pi/100; • t=0:d:2*pi; • x=sin(t); • dt=5*eps; % • x_eps=sin(t+dt); • dxdt_eps=(x_eps-x)/dt; % • plot(t,x,'LineWidth',5) • hold on • plot(t,dxdt_eps) • hold off • legend('x(t)','dx/dt') • xlabel('t')
(2)增量取得适当 • x_d=sin(t+d); • dxdt_d=(x_d-x)/d; % • plot(t,x,'LineWidth',5) • hold on • plot(t,dxdt_d) • hold off • legend('x(t)','dx/dt') • xlabel('t')
【例4.1-4】求积分 ,其中y=0.2+sint。本例演示:trapz用于数值积分时的基本原理;sum的用法及注意事项。【例4.1-4】求积分 ,其中y=0.2+sint。本例演示:trapz用于数值积分时的基本原理;sum的用法及注意事项。 • clear • d=pi/8; % • t=0:d:pi/2; % • y=0.2+sin(t); % • s=sum(y); % • s_sa=d*s; % <6> • s_ta=d*trapz(y); % <7>
disp(['sum求得积分',blanks(3),'trapz求得积分']) • disp([s_sa, s_ta]) • t2=[t,t(end)+d]; % • y2=[y,nan]; % • stairs(t2,y2,':k') % • hold on • plot(t,y,'r','LineWidth',3) % • h=stem(t,y,'LineWidth',2); % • set(h(1),'MarkerSize',10) • axis([0,pi/2+d,0,1.5]) % • hold off • shg