数学实验知识点整理(数值积分,常微分方程求解)
《数学实验》知识点整理
一、需要掌握的内容
Matlab 语言编程基础(矩阵的创建及使用方法、矩阵运算基础、线性方程求解、选择、循环{求和、迭代}、函数的定义及使用方法) (40分)
曲线的绘制(掌握一元函数图形的绘制方法,以及参数曲线的绘制方法; 掌握plot, ezplot,plot3,ezplot3等函数的用法;掌握基本的图形标注命令) (15分左右)
曲面的绘制(掌握二元函数图形的绘制方法,以及参数曲面的绘制方法;掌握 mesh,ezmesh等函数的用法)(15分左右)
非线性方程(组)求解 (掌握用fzero求非线性方程的根,以及用 fsolve求解非线性方程组的方法)(10分)
数值积分和符号积分(掌握trapz,quadl,dblquad, integral2, integral3等函数的用法) (10分左右)
常微分方程(组)求解 (掌握利用ode45求解常微分方程和常微分方程组的方法) (10分)
二、知识整理
- 数值积分数值微分
1) 常用的数值积分方法
- 矩形公式
- 梯形公式
- Simpson公式
- Newton-Cotes积分法
- 高斯求积公式
- 龙贝格(Romberg)积分法
- 蒙特卡洛方法(随机模拟的方法)
2) Matlab中数值微分和积分的函数:diff
3) 数值导数
方向导数gradient
例:» clear;x=[1 1.1 1.2 1.3];y=x.^3;
» dy=diff(y)./diff(x)
» dy=gradient(y,x)
» 3*x.^2
利用梯形法求积分
- z=trapz(x,y) 其中x 表示积分区间的离散化向量; y是 与x同维数的向量,表示被积函数;该函数返回积分的近似值。
- 例:求积分
- 解 » clear; x=-1:0.1:1; y=exp(-x.^2);
- » trapz(x,y)
- 2. 数值积分和符号积分
- z=trapz(x,y) 其中x 表示积分区间的离散化向量; y是与x同维数的向量,表示被积函数;该函数返回积分的近似值 。
- 例: 求积分
- 解 » clear; x=-1:0.1:1; y=exp(-x.^2);
- » trapz(x,y)
- >> z=quadl(@(x)exp(-x.^2),-1,1)(int函数)
- >> z= integral (@(x)exp(-x.^2),-1,1) (可以计算反常积分)
- 另一个例子:
- >> fun = @(x) exp(-x.^2).*log(x).^2;
- >> q = quadl(fun,0,Inf) % quadl不能求反常积分
- >> q = integral(fun,0,Inf) % integral能求反常积分
- 3. 重积分
- z=dblquad(Fun,a,b,c,d) 求二元函数 Fun(x,y) 在矩形区域的重积分。
- z=triplequad(Fun,a,b,c,d,e,f) 求三元函数Fun(x,y,z) 在长方体区域上的三重积分。
- z=quad2d(Fun,a,b,cx,dx) 求二元函数Fun(x,y)在一般区域上的重积分。a, b为变量x的下、上限;cx, dx为变量y的下、上限函数(自变量为x)。
- z= integral2 (Fun,a,b,cx,dx) 类似quad2d
- z= integral3 (Fun,a,b,cx,dx,exy,fxy) 求三元函数Fun(x,y,z)在一般区域上的三重积分 。
例题:
- 4. 微分方程
n 微分方程:含有未知函数及其某些阶导数以及自变量本身的方程称为微分方程
n 常微分方程:未知函数是一元函数
n 偏微分方程:含有偏导数的微分方程,其解为多元函数u(t,x,y,z)。
n 微分方程组:联系一些未知函数x(t), y(t), z(t), … 的一组微分方程。
n 微分方程的阶:微分方程中出现的未知函数的导数的最高阶数
n (2)常系数线性微分方程的特征根法
n 线性方程: y(n) + a1 (t) y(n-1) + …
n + an-1 (t) y’ + an (t) y = b(t)
n 常系数方程: 若ai (t) (i =1, …,n) 与t无关。
n 齐次方程: 若b(t)=0。
n y(n) + a1 y(n-1) + … + an-1 y’ + an y = 0
n 线性常系数齐次微分方程的解可用特征根法求得.
n ln+a1 ln-1+ … +an-1 l+an=0
n 非齐次方程的解为一个特解和相应的齐次方程通解的叠加。
n 变系数方程可尝试常数变易法。
n 例6.1 求x’’+ 0.2 x’+3.92x = 0的通解
n 解 特征方程为l2 + 0.2l +3.92=0
n » roots([1 0.2 3.92]
n 求得共轭复根 a ±bi=-0.1±1.9774i,
ode45函数
例6.2 解微分方程 y’ -y+2t/y=0, y(0)=1(初值向量1), 0<t<4 (自变量的初值0,4)
将方程整理为标准形式y’ = y-2t/y。
程序:
odefun= @(t,y)y-2*t/y ;
>> [t,y]=ode45(odefun,[0,4],1); [t,y]
>> plot(t,y,'o')
>> ode45(odefun,0:1:4,1);%(输出结点列向量)
>> [t,y]=ode45(odefun,0:1:4,1);[t,y]
例二
【0 30】自定义x的范围,【1;0.5】初值解的值
例三(高阶)
Y0是初值解
- 5. 边值问题解法
例6.5求解边值问题
解首先改写为标准形式。
令y(1)= z, y(2)= z’, 则方程为
y’(1)=y(2), y’(2) = -y(2)sin(y(1))
边界条件为
ya(1)=0, yb(1)+2=0
程序:eg6_5.m
%根据z初始值预估:z=-1,z’=0
clear;close;
sinit=bvpinit(0:4,[-1;0])
%[-1;0]是常数猜测值z=-1, z’=0
- odefun=@(t,y)[y(2);-y(2)*sin(y(1))];
bcfun=@(ya,yb)[ya(1);yb(1)+2];
sol=bvp5c(odefun,bcfun,sinit) %注意sol的域名
t=linspace(0,4,101);
y=deval(sol,t);
plot(t,y(1,:),sol.x,sol.y(1,:),'o',sinit.x,sinit.y(1,:),'s')
legend('解曲线','解点','粗略解')