370 likes | 567 Views
什么是数学实验?. 简单讲就是利用计算机和数学软件平台,一方面,对学习知识过程中的某些问题进行实验探究、发现规律; 另一方面,结合已掌握的数学(微积分、代数与几何等)知识,去探究、解决一些简单实际问题,从而熟悉从数学建模、解法研究到实验分析的科学研究的方法。. 先看两个例子. 例 1 数列极限 动态显示 MATLAB 程序: hold on % 图形迭加 axis([0,100,2,3]); % 设置坐标轴
E N D
什么是数学实验? 简单讲就是利用计算机和数学软件平台,一方面,对学习知识过程中的某些问题进行实验探究、发现规律; 另一方面,结合已掌握的数学(微积分、代数与几何等)知识,去探究、解决一些简单实际问题,从而熟悉从数学建模、解法研究到实验分析的科学研究的方法。
先看两个例子 例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
例2 导弹打击过程仿真 设A(0,0)为一导弹发射点,发现位于B(0,100)处一架敌机沿水平方向逃离,随即发射一枚导弹予以打击,现已知导弹时刻对准敌机,且速率为飞机速率的两倍(设飞机速度为1)。 试编程模拟导弹打击敌机 的动态过程,并实时给出 飞机和导弹的位置坐标。 若要在敌机飞行距离不超 过60时(我方空域)将其 击落,导弹的速率应提高 到多少?
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
课程内容 • 课程的教学分为三步: 1)通过介绍数学软件-MATLAB,使学生学会数 学软件的基本操作与使用; 2)利用数学软件对数学课程中的一些数值计算 数值方法进行上机实验; 3)通过简单的实际问题,运用学过的数学知识 由学生建立数学模型、选择方法并上机实现。
《数学实验》课程的考核 小实验以个人为单位;大实验3人为一小组,共同探讨,实验完成后共同填写一份实验报告上交,教师批改后给出成绩,最后综合评定出最终成绩(10分制)。 实验成绩将纳入到所学的高等数学课程的期末成绩之中,占一定的比例(一般10%)。
MATLAB命令简单介绍 • MATLAB是建立在向量、数组和矩阵基础上的一种分析和仿真工具软件包,包含各种能够进行常规运算的“工具箱”,如常用的矩阵代数运算、数组运算、方程求根、优化计算、统计、小波分析、神经网络以及函数求导积分符号运算等;同时还提供了编程计算的编程特性,通过编程可以解决一些复杂的工程问题;也可绘制二维、三维图形,输出结果可视化。目前,已成为工程领域中较常用的软件工具包之一。
运行MATLAB创建一个或多个窗口 a)命令区(Command Window)是用户使用的主要场所,此时,可以输入变量、数组及运算命令,进行一些简单的运算;用↑↓←→键搜索、修改以前使用过的命令操作, 用clc清除窗口; 用help sqrt ( help input …)寻求有关帮助; b)编辑区(Editor\Debugger Window)编制各种M-文件,存盘(Save)、运行(Run)等.
工具箱及命令查询 help topics 在命令区(Command Window)键入 help det help rand help elfun help abs help sqrt help linspace
MATLAB中基本代数运算符 运算 符号 举例 加法: a+b + 5+3 减法: a-b - 5-3 乘法: a×b * 5*3 除法: a÷b / 48/4 乘幂: ^ 5^2=25
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 矩阵的每个元素的幂
变量及数组输入 • 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的模的平方)
求方程组Ax=B的解-----------q1.m A=[2 1 -3; 3 -2 2;5 -3 -1]; B=[5;5;16]; x=A\B
例 矩阵运算------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用来对数值取整
构造矩阵的方法------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=[ ] 产生空矩阵
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.
MATLAB中符号函数的表示 符号函数 MATLAB表示 '1/(2*x^n)' '1/sqrt(2*x)' 'sin(x^2)-cos(2*x)' f=int('x^2', 'a', 'b')
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->+∞极限
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求二阶导数
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求不 定积分
级数求和与函数展开--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)
代数方程求根----------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)
微分方程求解------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')%解微分方程组
二维平面图形------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')
图形的比较显示----在同一窗口绘制多图方法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
图形的比较显示----在同一窗口绘制多图方法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')
三维曲线图的绘制plot3(x,y,z)-------- q12 t=0:0.1:50; x=sin(t); y=cos(t); z=t; plot3(x,y,z,'m*')
三维曲面图的绘制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) %画光滑曲面
三维立体图的绘制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);
其它图形函数-----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);
------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)
绘图表示实验数据----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')
极坐标系下画图----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*');
利用循环语句,画花瓣图 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
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);
本次实验上机任务 教材:朱旭等 上机操作实验1和实验2中所有指令和例题,熟悉Matlab相关命令;
本次实验上机任务 教材:李继成等 上机操作实验1至实验3中所有指令和例题,熟悉Matlab相关命令;