该【微分方程省公开课一等奖全国示范课微课金奖PPT课件 】是由【zhilebei】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【微分方程省公开课一等奖全国示范课微课金奖PPT课件 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。1
第9章MATLAB微分方程求解
第1页
2
常微分方程初值问题
常微分方程初值问题是科学计算中常见问题,MATLAB提供了求解常微分方程(ODE)初值问题一系列ode函数。ode函数主要采取Runge-Kutta法求解常微分方程。
惯用ode函数
函数名
含义
函数名
含义
ode23
普通2-3阶法解ODE
ode23s
变阶法解刚性ode
ode45
普通4-5阶法解ODE
ode23t
解适度刚性ode
ode113
普通变阶法解ODE
ode23tb
低阶法解刚性ode
第2页
3
ODE机理
将高阶常微分方程初值问题,转变为1阶常微分方程组初值问题。
普通2-3阶法解ODE
例 9-1
function dy=dfun(x,y)
dy=y-2*x/y
编制以下计算程序
clear;clc;
X12=linspace(0,5,50);
[X,Y]=ode23('dfun',X12,2);
plot(X,Y)
运行结果如图9-1所表示
图 9-1
第3页
4
普通4-5阶法解ODE
例 9-2
function dy=dfun(x,y)
dy(1,1)=-2*y(1)+y(2)+2*sin(x);
dy(2,1)=10*y(1)-9*y(2)+9*(cos(x)-sin(x));
编制以下程序
clear;clc;
X12=linspace(0,9,30);
ode45('dfun',X12,[2,3]);
运行结果如图9-2所表示
图9-2
第4页
5
常微分方程边值问题
边值问题介绍
普通来说,微分方程边值问题可能有解、也可能无解,可能有唯一解、也可能有没有数解。在假定有唯一解前提下,边值问题有三种基本解法:
迭加法:假如微分方程和边界条件是线性,边值问题能够转化为初值问 题。
试射法:将问题转化为对漏缺初值搜索,一旦漏缺初值确定,就能够按 初值问题求解。
松弛法:先猜测满足边界条件区间网点上解值,然后利用微分方程进 行迭代改进。
第5页
6
bvp4c求解思绪
为求解常微分方程边值问题,MATLAB提供了bvp4c函数文件。该文件是依据有限元法中配置法编写。其解题基本思绪以下:
把待解问题转化为标准边值问题
为期望解指定初始猜测
利用原微分方程,结构残差函数
用原微分方程和边界条件,借助迭代使残差不停减小
为了bvp4c使用方便,MATLAB提供了能产生很好猜测解bvpinit指令,减轻了用户进行初始猜测负担。另外解算指令bvp4c也能处理包含未知参数微分方程边值问题。
第6页
7
bvp4c配套指令
例 9-3
function dy=dfun(x,y,c)
dy(1,1)=y(2);
dy(2,1)=-c*abs(y(1));
function res=bfun(ya,yb,c)
res(1,1)=ya(1);
res(2,1)=yb(1)+2
编制以下计算程序
sol=bvp4c('dfun','bfun',sinit,[],c);
plot(,(1,:),'r--')
hold on
c=;
sol=bvp4c('dfun','bfun',sinit,[],c);
plot(,(1,:),'b-')
legend('c=1','c=')
运行结果如图9-3所表示
clear;clc;
x=linspace(0,4,5);
v=[1;0];
sinit=bvpinit(x,v);
c=1;
图 9-3
第7页
8
常微分方程解析解
微分方程通解
例 9-4
编制以下程序
clear;clc;
fun='Dx=-a*t'
x=dsolve(fun,'t')
运行结果为
fun =
Dx=-a*t
x =
-1/2*a*t^2+C1
例 9-5
编制以下程序
clear;clc;
fun1='Df=f+g';
fun2='Dg=g-f';
[f,g]=dsolve(fun1,fun2,'t')
运行结果为
f =
-exp(t)*(C1*cos(t)-C2*sin(t))
g =
exp(t)*(C1*sin(t)+C2*cos(t))
第8页
9
微分方程特解
例 9-6
编制以下程序
clear;clc;
fun='D2y=4'
x=dsolve(fun,'y(0)=1','y(1)=3','x')
运行结果为
fun =
D2y=4
x =
2*x^2+1
例 9-7
编制以下程序
clear;clc;
fun1='Df=f+g';
fun2='Dg=g-f';
v1='f(0)=2';
v2='g(0)=2';
[f,g]=dsolve(fun1,fun2,v1,v2,'t')
运行结果为
f =
exp(t)*(2*cos(t)+2*sin(t))
g =
exp(t)*(-2*sin(t)+2*cos(t))
第9页
10
例 9-8
编制以下程序
clear;clc;
fun='D3y=-y';
v1='y(0)=3';
v2='Dy(0)=0';
v3='D2y(0)=0';
y=dsolve(fun,v1,v2,v3,'t')
运行结果为
y =
exp(-t)+2*exp(1/2*t)*cos(1/2*3^(1/2)*t)
第10页
微分方程省公开课一等奖全国示范课微课金奖PPT课件 来自淘豆网m.daumloan.com转载请标明出处.