1 / 37

什么是数学实验?

什么是数学实验?. 简单讲就是利用计算机和数学软件平台,一方面,对学习知识过程中的某些问题进行实验探究、发现规律; 另一方面,结合已掌握的数学(微积分、代数与几何等)知识,去探究、解决一些简单实际问题,从而熟悉从数学建模、解法研究到实验分析的科学研究的方法。. 先看两个例子. 例 1 数列极限 动态显示 MATLAB 程序: hold on % 图形迭加 axis([0,100,2,3]); % 设置坐标轴

tatum
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. 什么是数学实验? 简单讲就是利用计算机和数学软件平台,一方面,对学习知识过程中的某些问题进行实验探究、发现规律; 另一方面,结合已掌握的数学(微积分、代数与几何等)知识,去探究、解决一些简单实际问题,从而熟悉从数学建模、解法研究到实验分析的科学研究的方法。

  2. 先看两个例子 例1 数列极限 动态显示 • MATLAB程序: hold on % 图形迭加 axis([0,100,2,3]); % 设置坐标轴 grid % 加坐标网格 forn=1:90 % 循环操作 an=(1+1/n)^n; % 计算数列值 plot(n,an,'r*'); % 画出坐标点 pause(0.05); % 暂停0.05秒 fprintf('n=%d an=%.4f\n',n,an); % 显示坐标位置 end

  3. 例2 导弹打击过程仿真 设A(0,0)为一导弹发射点,发现位于B(0,100)处一架敌机沿水平方向逃离,随即发射一枚导弹予以打击,现已知导弹时刻对准敌机,且速率为飞机速率的两倍(设飞机速度为1)。 试编程模拟导弹打击敌机 的动态过程,并实时给出 飞机和导弹的位置坐标。 若要在敌机飞行距离不超 过60时(我方空域)将其 击落,导弹的速率应提高 到多少?

  4. MATLAB程序: k=0; A=[0,0]; %导弹初始位置 B=[0,100]; %飞机初始位置 v=1; dt=1; %离散时间改变量 d=100; %相距距离 whiled>0.5 plot(A(1),A(2),’r’); %画导弹位置 hold on plot(B(1),B(2),‘b*’); %画飞机位置 pause(0.2); k=k+1; B=B+[v*dt,0]; %飞机移动位置 e=B-A; %导弹指向飞机向量 d=norm(e); e0=e/d; %取向量方向(单位化) A=A+2.0*v*dt*e0; %导弹追击位置 fprintf('k=%.0f A(%.2f,%.2f) B(%.2f,100) d=%.2f\n',k ,A(1),A(2),B(1),d); end

  5. 课程内容 • 课程的教学分为三步: 1)通过介绍数学软件-MATLAB,使学生学会数 学软件的基本操作与使用; 2)利用数学软件对数学课程中的一些数值计算 数值方法进行上机实验; 3)通过简单的实际问题,运用学过的数学知识 由学生建立数学模型、选择方法并上机实现。

  6. 《数学实验》课程的考核 小实验以个人为单位;大实验3人为一小组,共同探讨,实验完成后共同填写一份实验报告上交,教师批改后给出成绩,最后综合评定出最终成绩(10分制)。 实验成绩将纳入到所学的高等数学课程的期末成绩之中,占一定的比例(一般10%)。

  7. MATLAB命令简单介绍 • MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算、统计、小波分析、神经网络以及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。目前,已成为工程领域中较常用的软件工具包之一。

  8. 运行MATLAB创建一个或多个窗口 a)命令区(Command Window)是用户使用的主要场所,此时,可以输入变量、数组及运算命令,进行一些简单的运算;用↑↓←→键搜索、修改以前使用过的命令操作, 用clc清除窗口; 用help sqrt ( help input …)寻求有关帮助; b)编辑区(Editor\Debugger Window)编制各种M-文件,存盘(Save)、运行(Run)等.

  9. 工具箱及命令查询 help topics 在命令区(Command Window)键入 help det help rand help elfun help abs help sqrt help linspace

  10. MATLAB中基本代数运算符 运算 符号 举例 加法: a+b + 5+3 减法: a-b - 5-3 乘法: a×b * 5*3 除法: a÷b / 48/4 乘幂: ^ 5^2=25

  11. MATLAB中数组、矩阵基本运算符 运算 意义 加法: a+b 两矩阵相加,数与矩阵相加 减法: a-b 两矩阵相减,数与矩阵相加 乘法: a*b 两矩阵相乘,数与矩阵相乘 a.*b 两矩阵对应元素相乘 除法: a/b (a\b) a*inv(b) (inv(a)*b) a./b 两矩阵对应元素相除,数a除以矩阵 b中每个元素 幂 a^n 矩阵的幂 a.^n 矩阵的每个元素的幂

  12. 变量及数组输入 • MATLAB的变量及数组均是以向量或矩阵方式存储的 • 1:向量方式输入 x=[1,2,3,4,5] %以向量(数组)方式给x赋值 x1=[1 12 –3 4 sqrt(5)]; y=(x(3)+x(5))/2*x(4) %调用x中的元素 z=sqrt(x) %每个元素开方 t=x' %向量x的转置赋给t u=x*t %向量的内积(u为向量x的模的平方)

  13. 求方程组Ax=B的解-----------q1.m A=[2 1 -3; 3 -2 2;5 -3 -1]; B=[5;5;16]; x=A\B

  14. 例 矩阵运算------q2 A=[1 2 0;2 5 -1;4 10 -1]; D=A’ %求A的转置 H=det(A) %求A的行列式 ni=inv(A) %求A的逆 tezhengzhi=eig(A) %求A的特征值 [m,n]=eig(A) %求A的特征值与特征向量 B=poly(A) %求A的特征多项式 round(poly(A)) %round用来对数值取整

  15. 构造矩阵的方法------q3 • x=[1 2 3 9 3]     直接赋值 • y=0:0.5:3      按步长赋值 • z=[0 x 1] • u=[y;z]   将矩阵y,z合并为一个矩阵 • t=linspace(0,2,7) %按分点赋值 • v=ones(3)   产生元素全是1的3阶阵 • C=eye(3)    产生3阶单位阵 • vv=5*ones(3,4) • s=zeros(2,4)  产生2行4列的零阵 • r=rand(4,4)   随机产生4阶矩阵 • B=[ ]      产生空矩阵

  16. MATLAB中的数值函数运算 • 建立数值函数(inline命令) f=inline(‘x.^2-3’);建立一元函数,默认x为自变量; u=inline('x.^y-3', 'x','y');%建立二元函数,x为第一自变量,y为第二自变量; • 求函数值 :f(2)、u(2,3) • 画曲线:fplot(f,[0,2]);%画一元函数在[0,2]上的图象 • 求函数零点 c=fzero(f,1);%求一元函数在x=1附近的零点c. c=fzero(u,1,[ ],2)%求二元函数y=2时在x=1附近的零点c.

  17. MATLAB中符号函数的表示 符号函数 MATLAB表示 '1/(2*x^n)' '1/sqrt(2*x)' 'sin(x^2)-cos(2*x)' f=int('x^2', 'a', 'b')

  18. MATLAB中符号运算--求极限-------------q0.m syms x fx= '1/(1+exp(-1/x))' limit(fx,x,0, 'right') %求fx:x->0右极限 limit(fx,x,0, 'left') %求fx:x->0左极限 limit(fx,x,inf, 'left') %求fx:x->+∞极限

  19. MATLAB符号计算----求导数 ---q4 syms a b c x %定义符号变量 f=sym('a*x^2+b*x+c') df=diff(f) %求导数,默认变量为x d2f=diff(f,2) %求二阶导数 daf=diff(f,a) %对变量a求导数 daf2=diff(f,a,2) %求变量a求二阶导数

  20. MATLAB符号计算---求积分-----q5 syms a b c x %定义符号变量 f=sym('a*x^2+b*x+c') nf=int(f) %对f求不定积分,默认变量为x djf=int(f,x,0,2) %f在(0,2)上求定积分 jf=int(f,a) %f求不定积分,变量为a bjf=int(int(f,a),x) %f对a不定积分后再对x求不 定积分

  21. 级数求和与函数展开--q6 %symsum(s,v,a,b) 自变量v在[a,b]之间取值时,对通项 s求和 %taylor(F,v,n) 求F对自变量v的泰勒级数展开至(n-1)阶 syms k A=symsum(1/k,k,1,inf) B=symsum(1/(k*(k+1)),k,1,inf) syms x taylor(sin(x),10)

  22. 代数方程求根----------q7 • %solve(f) 解符号方程式f • %solve(f1,f2,...fn) 解由f1,f2,...fn组成的代数方程组 syms a b c x %定义符号变量 f=sym('a*x^2+b*x+c') A=solve(f) B=solve(f,a) C=solve('1+x=sin(x)') eq1=sym('x+y+z=10'); eq2=sym('x-y+z=0'); eq3=sym('2*x-y-z=-4'); [x,y,z]=solve(eq1,eq2,eq3)

  23. 微分方程求解------q8 • %dsolve('equation','condition')求方程equation在初始条件condition下的解 • %dsolve('equation')求方程equation的通解 • %一阶导数用Dy表示,二阶导数D2y用表示,自变量默认为t A=dsolve('Dy=5') B=dsolve('Dy=x','x') C=dsolve('D2y=1+Dy') D=dsolve('D2y=1+Dy','y(0)=1','Dy(0)=0') [x,y]=dsolve('Dx=y+x,Dy=2x','x(0)=0,y(0)=1')%解微分方程组

  24. 二维平面图形------q9 x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,'bo-',x,y2,'R*:') xlabel('x') ylabel('y') title('Sine and Cosine Curve') gtext('y=sinx') gtext('y=cosx')

  25. 图形的比较显示----在同一窗口绘制多图方法1--------q10图形的比较显示----在同一窗口绘制多图方法1--------q10 x=0:pi/10:2*pi; y1=sin(x); y2=cos(x); y3=x; y4=log(x); plot(x,y1,'bo-',x,y2,'R*:') hold on plot(x,y3,'g+') plot(x,y4,'mp') hold off

  26. 图形的比较显示----在同一窗口绘制多图方法2--------q11图形的比较显示----在同一窗口绘制多图方法2--------q11 • x=0:pi/10:2*pi; • y1=sin(x); y2=cos(x); • y3=x.^2+6*x+3; y4=exp(x); • subplot(2,2,1); plot(x,y1,'bo-') • subplot(2,2,2); plot(x,y2,'R*:') • subplot(2,2,3); plot(x,y3,'g+') • subplot(2,2,4); plot(x,y4,'mp')

  27. 三维曲线图的绘制plot3(x,y,z)-------- q12 t=0:0.1:50; x=sin(t); y=cos(t); z=t; plot3(x,y,z,'m*')

  28. 三维曲面图的绘制surf(x,y,z),mesh(x,y,z)----- q13 x=-5:0.2:5; y=x; [x,y]=meshgrid(x,y); %生成矩形域上网格节点矩阵 subplot(2,1,1) %画子图1 z=25-2*x.^2-y.^2; %生成函数值矩阵 mesh(x,y,z) %画网格曲面并赋以颜色 subplot(2,1,2) %画子图2 surf(x,y,z) %画光滑曲面

  29. 三维立体图的绘制3----q14设置观察点:view(方位角,仰角)其中方位角是观察点和坐标原点连线在x-y平面内的投影和y轴负方向的夹角,仰角是观察点和坐标原点连线与x-y平面的夹角三维立体图的绘制3----q14设置观察点:view(方位角,仰角)其中方位角是观察点和坐标原点连线在x-y平面内的投影和y轴负方向的夹角,仰角是观察点和坐标原点连线与x-y平面的夹角 z=peaks(40); subplot(2,2,1); mesh(z); subplot(2,2,2); surf(z); view(-37.5,-30); subplot(2,2,3); surf(z); view(180,0); subplot(2,2,4); mesh(z); view(0,90);

  30. 其它图形函数-----q15fill实心图;bar直方图 pie饼图 area面积图; stairs阶梯图, polar绘制极坐标图 x=0:0.2:2*pi; y=sin(x) subplot(2,2,1); plot(x,y,'go'); subplot(2,2,2); bar(x,y); subplot(2,2,3); fill(x,y,'m'); subplot(2,2,4); stairs(x,y);

  31. ------q16 某大班高等数学考试,90分以上15人,80分至89分32人,70分至79分58人,%60分至69分20人,60分以下10人,画出饼图 x=[15,32,58,20,10]; explode=[0,0,0,0,1];%让不及格部分脱离饼图 pie(x,explode)

  32. 绘图表示实验数据----q17 t=1:9; d1=[12.51,13.54,15.60,15.92,20.04,24.53,30.24,50.12,76.98]; d2=[9.87,20.11,32.56,40.23,57.77,69.13,72.24,82.50,89.88]; d3=[10.78,8.54,14.50,45.21,39.04,60.53,70.24,50.12,36.98]; plot(t,d1,'R-',t,d2,'gx:',t,d3,'m*-') title('Time & Data'); xlabel('time'); ylabel('data'); axis([0,10,0,100]) text(6.5,25.5,'\leftarrowdata1') text(4,65,'data2\rightarrow') text(3.5,25,'\leftarrowdata3')

  33. 极坐标系下画图----q18(x^2+y^2)^3=x^4+y^4即r=sqrt(cos(theta)^4+sin(theta)^4)极坐标系下画图----q18(x^2+y^2)^3=x^4+y^4即r=sqrt(cos(theta)^4+sin(theta)^4) theta=0:0.01:2*pi; y=sqrt(cos(theta).^4+sin(theta).^4); polar(theta,y,'r*');

  34. 利用循环语句,画花瓣图 theta=-pi:0.01:pi; y(1,:)=2*sin(5*theta).^2; y(2,:)=cos(10*theta).^3; y(3,:)=sin(theta).^2; y(4,:)=5*cos(3.5*theta).^3; for i=1:4 polar(theta,y(i,:),'m+'); pause end

  35. MATLAB中关系和逻辑运算 • 关系运算符 逻辑运算符 > >= < <= == ~= &(and) | (or) ~(not) • x=linspace(0,10,100); y=sin(x); subplot(2,1,1); plot(x,y); p=(y>=0); q=(y<0) z=p.*y+(-1)*q.*y; subplot(2,1,2); plot(x,z);

  36. 本次实验上机任务 教材:朱旭等  上机操作实验1和实验2中所有指令和例题,熟悉Matlab相关命令;

  37. 本次实验上机任务 教材:李继成等 上机操作实验1至实验3中所有指令和例题,熟悉Matlab相关命令;

More Related