数学实验(数值积分微分、常微分求解)

《数学实验》知识点整理

一、需要掌握的内容

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)

 

  1. 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能求反常积分
  1. 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)在一般区域上的三重积分 。

例题:

 

  1. 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’ = y2t/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是初值解

 

  1. 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(\’解曲线\’,\’解点\’,\’粗略解\’)

 

 

 

 

 

 

版权声明:本文为star-lit-sky-shines原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/star-lit-sky-shines/p/10191604.html