数学实验知识点整理(数值积分,常微分方程求解)

《数学实验》知识点整理

一、需要掌握的内容

Matlab 语言编程基础(矩阵的创建及使用方法、矩阵运算基础、线性方程求解、选择、循环{求和、迭代}、函数的定义及使用方法) (40分)

曲线的绘制(掌握一元函数图形的绘制方法,以及参数曲线的绘制方法;  掌握plot, ezplot,plot3,ezplot3等函数的用法;掌握基本的图形标注命令)  (15分左右)

曲面的绘制(掌握二元函数图形的绘制方法,以及参数曲面的绘制方法;掌握 mesh,ezmesh等函数的用法)(15分左右)

非线性方程(组)求解 (掌握用fzero求非线性方程的根,以及用 fsolve求解非线性方程组的方法)(10分)

数值积分和符号积分(掌握trapz,quadl,dblquad, integral2, integral3等函数的用法) (10分左右)

常微分方程(组)求解  (掌握利用ode45求解常微分方程和常微分方程组的方法)  (10分)

二、知识整理

1.        数值积分数值微分

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.        微分方程

微分方程:含有未知函数及其某些阶导数以及自变量本身的方程称为微分方程

常微分方程:未知函数是一元函数

偏微分方程:含有偏导数的微分方程,其解为多元函数u(t,x,y,z)。

微分方程组:联系一些未知函数x(t), y(t), z(t),  … 的一组微分方程。

微分方程的阶:微分方程中出现的未知函数的导数的最高阶数

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 (自变量的初值04

将方程整理为标准形式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('解曲线','解点','粗略解')

 

 

 

 

 

猜你喜欢

转载自www.cnblogs.com/star-lit-sky-shines/p/10191604.html