1--Matlab基本介绍1

Download Report

Transcript 1--Matlab基本介绍1

什么是数学实验?
简单讲就是利用计算机和数学软件平
台,一方面,对学习知识过程中的某些
问题进行实验探究、发现规律;
另一方面,结合已掌握的数学(微积
分、代数与几何等)知识,去探究、解
决一些简单实际问题,从而熟悉从数学
建模、解法研究到实验分析的科学研究
的方法。
先看两个例子
例1 数列极限
1 n
lim (1  )
n 
n
动态显示
MATLAB程序:
hold on
% 图形迭加
axis([0,100,2,3]);
% 设置坐标轴
grid
% 加坐标网格
for n=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)。
试编程模拟导弹打击敌机
B
的动态过程,并实时给出
飞机和导弹的位置坐标。
若要在敌机飞行距离不超
过60时(我方空域)将其
A
击落,导弹的速率应提高
到多少?
MATLAB程序:
k=0;
A=[0,0];
%导弹初始位置
B
B=[0,100];
%飞机初始位置
v=1;
dt=1;
%离散时间改变量
d=100;
%相距距离
while d>0.5
A
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
减法: a-b
乘法: a×b
除法: a÷b
乘幂:
ab
符号
+
*
/
^
举例
5+3
5-3
5*3
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中符号函数的表示
符号函数
1
2xn
1
2x
sin( x 2 )  cos(2 x )
f   x 2dx
b
a
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')
limit(fx,x,0, 'left')
limit(fx,x,inf, 'left')
%求fx:x->0右极限
%求fx:x->0左极限
%求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)
%solve(f1,f2,...fn)
解符号方程式f
解由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
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







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平面的
夹角
z=peaks(40);
subplot(2,2,1);
subplot(2,2,2);
subplot(2,2,3);
subplot(2,2,4);
mesh(z);
surf(z); view(-37.5,-30);
surf(z); view(180,0);
mesh(z); view(0,90);
其它图形函数-----q15
fill实心图;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)
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中关系和逻辑运算


关系运算符
> >= < <= == ~=
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);
逻辑运算符
&(and) | (or)
~(not)
本次实验上机任务
教材:朱旭等
上机操作实验1和实验2中所有指
令和例题,熟悉Matlab相关命令;
本次实验上机任务
教材:李继成等
上机操作实验1至实验3中所有指
令和例题,熟悉Matlab相关命令;