




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ordinary Differential Equations,ODE,一阶常微分方程的初值问题: 节点:x1x2 xn 步长 为常数,一 欧拉方法(折线法) yi+1=yi+h f(xi,yi) (i =0,1, , n-1) 优点:计算简单。 缺点:一阶精度。 二 改进的欧拉方法,改进的欧拉公式可改写为 它每一步计算f(x,y)两次,截断误差为O(h3),精确解:,function t,y = Heun(ode,tspan,h,y0) t = (tspan(1):h:tspan(end); n = length(t); y = y0*ones(n,1); for i=2:n k1 = feval(ode,t(i-1),y(i-1); k2 = feval(ode,t(i),y(i-1)+h*k1); y(i) = y(i-1)+h*(k1+k2)/2; end,三 龙格库塔法(Runge-Kutta) 欧拉公式可改写为 它每一步计算 f (xi,yi) 一次,截断误差为O(h2),标准四阶龙格库塔公式 每一步计算 f (x, y) 四次,截断误差为O(h5),对于两个分量的一阶常微分方程组,用经典4阶 Runge-Kutta 法求解的格式为,n 级显式Runge-Kutta 方法的一般计算格式:,其中,Adams 外插公式(Adams-Bashforth 公式)是一类 k+1 步 k+1 阶显式方法 三步法(k=2),四步法(k=3),Adams 内插公式(Adams-Moulton 公式)是一类 k+1 步 k+2 阶隐式方法 三步法(k=2),Adams 预估-校正方法(Adams-Bashforth-Moulton 公式) 一般取四步外插法与三步内插法结合。,#include #include #include #define TRUE 1 main() int nstep_pr, j, k; float h, hh, k1, k2, k3, k4, t_old, t_limit, t_mid, t_new, t_pr, y, ya, yn; double fun(); printf( “n Fourth-Order Runge-Kutta Scheme n“ ); while(TRUE) printf( “Interval of t for printing ?n“ ); scanf( “%f“, ,do for( j = 1; j = nstep_pr; j+ ) t_old = t_new; t_new = t_new + h; yn = y; t_mid = t_old + hh; yn = y; k1 = h*fun( yn, t_old ); ya = yn + k1/2; k2 = h*fun( ya, t_mid ); ya = yn + k2/2; k3 = h*fun( ya, t_mid ); ya = yn + k3 ; k4 = h*fun( ya, t_new ); y = yn + (k1 + k2*2 + k3*2 + k4)/6; printf( “ %12.5f %15.6e n“, t_new, y ); while( t_new = t_limit ); printf( “-n“ ); printf( “ Maximum t limit exceeded n“ ); printf( “Type 1 to continue, or 0 to stop.n“ ); scanf( “%d“, ,double fun(y, t) float y, t; float fun_v; fun_v = -y; return( fun_v ); ,四 误差的控制 我们常用事后估计法来估计误差,即从xi出发,用两种办法计算y(xi+1)的近似值。 记 为从xi出发以h为步长得到的y(xi+1)的 近似值,记 为从xi出发以 h/2 为步长跨 两步得到的y(xi+1)的近似值。设给定精度为。如果不等式 成立,则 即为y(xi+1)的满足精度要求的近似值。,自适应: 使用2个不同的h。如果一个大的h和一个小的h得到的解相同,那么减小h就没有意义了;相反如果两个解差别大,可以假设大h值得到的解是不精确的。 使用相同的h值,2种不同的算法。如果低精度算法与高精度算法的结果相同,则没有必要减小h。,Ode23 非刚性, 单步法, 二三阶Runge-Kutta,精度低 Ode45非刚性, 单步法, 四五阶Runge-Kutta,精度较高,最常用 Ode113非刚性, 多步法, 采用可变阶(1-13)Adams PECE 算法, 精度可高可低 Ode15s 刚性, 多步法,采用Gears (或BDF)算法, 精度中等. 如果ode45很慢, 系统可能是刚性的,可试此法 Ode23s 刚性, 单步法, 采用2阶Rosenbrock法, 精度较低, 可解决ode15s 效果不好的刚性方程. Ode23t 适度刚性, 采用梯形法则,适用于轻微刚性系统,给出的解无数值衰减. Ode23tb 刚性, TR-BDF2, 即R-K的第一级用梯形法则,第二级用Gear 法. 精度较低, 对于误差允许范围比较差的情况,比ode15s好.,Matlab 函数,Matlabs ode23 (Bogacki, Shampine),Runge-Kutta-Fehlberg方法(RKF45),4阶Runge-Kutta近似,5阶Runge-Kutta近似,局部误差估计,Matlabs ode45 is a variation of RKF45,Van der Pol:,function xdot = vdpol(t,x) xdot(1) = x(2); xdot(2) = -(x(1)2 -1)*x(2) -x(1); xdot = xdot; % VDPOL must return a column vector. % xdot = x(2); -(x(1)2 -1)*x(2) -x(1); % xdot = 0 , 1; -1 ,-(x(1)2 -1) *x; t0 = 0; tf = 20; x0 = 0; 0.25; t,x = ode45(vdpol,t0,tf,x0); plot(t,x); figure(101) plot(x(:,1),x(:,2);,Lorenz吸引子 function xdot = lorenz(t,x) xdot = -8/3, 0, x(2); 0, -10, 10; -x(2), 28, -1*x; x0 = 0,0,eps; t,x = ode23(lorenz,0,100,x0); plot3(x(:,1),x(:,2),x(:,3); plot(x(:,1),x(:,2);,function yp = examstiff(t,y) yp = -2, 1; 998, -998*y + 2*sin(t);999*(cos(t)-sin(t); y0 = 2;3; tic,t,y = ode113(examstiff,0,10,y0);toc tic,t,y = ode45(examstiff,0,10,y0);toc tic,t,y = ode23(examstiff,0,10,y0);toc tic,t,y = ode23s(examstiff,0,10,y0);toc tic,t,y = ode15s(examstiff,0,10,y0);toc tic,t,y = ode23t(examstiff,0,10,y0);toc tic,t,y = ode23tb(examstiff,0,10,y0);toc,刚性方程,向后差分方法(Gears method) 隐式Runge-Kutta法,function f = weissinger(t,y,yp) f = t*y2*yp3 - y3*yp2 + t*(t2+1)*yp - t2*y; t0 = 1; y0 = sqrt(3/2); yp0= 0; % guess y0,yp0 = decic(weissinger,t0,y0,1,yp0,0); % 求出自洽初值。保持y0不变 t,y = ode15i(weissinger,1,10,y0,yp0); ytrue = sqrt(t.2+0.5); plot(t,ytrue,t,y,o),线性隐式ODE:,完全隐式ODE(Matlab7):,Weissinger方程:,function yp = ddefun(t,y,Z) yp = zeros(2,1); % define lags=1,3 yp(1) = Z(1,2)2 + Z(2,1)2; yp(2) = y(1) + Z(2,1); function y = ddehist(t) y = zeros(2,1); y(1) = 1; y(2) = t-2;,lags = 1,3; sol = dde23(ddefun,lags,ddehist,0,1); hold on; plot(sol.x,sol.y(1,:),b-); plot(sol.x,sol.y(2,:),r-);,延迟微分方程,Sol = dde23(ddefun,lags,ddehist,tspan),初值 :,有限差分法 二阶线性边值问题,差分离散:,bvp4c,线性边值问题的打靶法: 二阶线性边值问题(11)的可以通过求解下面两个初值问题获得。,原来边值问题的解可以表示为:,非线性边值问题的打靶法,(IVP1),(IVP2),符号计算 y = dsolve(D2y = -a2*y,x) %求通解 y = dsolve(D2y = -a2*y,y(0)=1,Dy(pi/a)=0,x) x,y = dsolve(Dx=4x-2y,Dy=2x-y,t),Pdetool 求解区域,定义边界,网格划分,计算,画图,保存文件求解,边条,解析解,演示求解过程,Stokes 问题,Q1-P0有限元离散,Navier-Stokes 问题,MAC差分离散,物理问题的控制方程:,前台阶流(A Mach 3 Wind Tunnel with a Step) 模拟放置在风洞中的前台阶流动。风洞尺寸:宽1.0,长3.0,台阶高0.2,放置在距风洞左边界0.6个单位长度处。,Sod问题 Sod问题是在激
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防排水收费管理办法
- 物资采购派送管理办法
- 2025年中央一号文件高频考试题库附答案
- 保密知识竞赛试题及答案(填空题+判断题)
- 2025党员领导干部反腐倡廉规章制度知识竞题库及答案
- 2025年租金分期付款合同正式版样板
- 2025简易网络布线工程合同
- 妈咪爱影响依恋的个体差异-洞察及研究
- 2025年上海市个人自行成交版房屋租赁合同范本模板
- 2025工业用化学品买卖合同
- 高考数学一轮复习高频考点精讲精练(新高考专用)第11讲拓展四:导数中的隐零点问题(高频精讲)(原卷版+解析)
- 高校军事理论教育课教案
- 汉字历史-汉字的起源及形体演变(古代汉语课件)
- 八年级(上)+道德与法治+课程纲要
- 人教版部编版统编版一年级语文上册《我爱我们的祖国》课件
- 住院医师规范化培训临床小讲课的设计与实施培训课件
- 振动型式试验报告范本
- 基因工程与生命伦理
- 糖尿病酮症酸中毒抢救流程
- 结婚彩礼借款协议书
- 配电终端功能构造
评论
0/150
提交评论