文档详情

Lecture7-常微分方程数值求解(27).ppt

发布:2018-06-08约6.62千字共27页下载文档
文本预览下载声明
第一章 Matlab 基本操作 * 第6讲 常微分方程求解 例:电容放电 初条件Q0=1,RC=10 * 例:洛伦兹吸引子 * ODE函数求解常微分方程 1. 编写表示微分方程的函数文件: 微分方程写成一阶常微分方程组 t 是自变量标量,y(t)是含t的函数构成的列矢量 function ydot = odefun(t,y) ydot = [在括号内编写函数组f(t,y)] ydot即对应微分方程中的列矢量dy/dt。 对应微分方程的函数文件格式: ordinary differential Eq. 基本步骤: * 2.如果需要,设定微分方程求解器的条件参数 odeset % 显示全部参数名及缺省值 AbsTol: [ positive scalar or vector {1e-6} ] RelTol: [ positive scalar {1e-3} ] NormControl: [ on | {off} ] OutputFcn: [ function ] OutputSel: [ vector of integers ] Refine: [ positive integer ] Stats: [ on | {off} ] InitialStep: [ positive scalar ] MaxStep: [ positive scalar ] BDF: [ on | {off} ] ... ... Events: [ function ] ODE函数求解常微分方程——基本步骤 * ODE函数求解常微分方程——基本步骤 设定微分方程求解的条件参数: odeset 显示全部参数名及缺省值; 设置相应参数,改变解微分方程的条件。 odeget 获取“选项结构数组(options structure)” 指令odeset语句格式如下: options = odeset(name1, value1, name2, value2, ?) oldopts = odeset(AbsTol, 1e-8) newopts = odeset(Events,on‘) options = odeset(oldopts, name1, value1, ?) options = odeset(oldopts, newopts) * opts = odeset(AbsTol, 1e-8, Events,on) opts = AbsTol: 1.0000e-008 BDF: [] Events: on InitialStep: [] ... ... odeget(opts, AbsTol) ans = 1.0000e-008 odeget(opts, Events) ans = on 获取微分方程求解的条件参数: ODE函数求解常微分方程——基本步骤 * 3. 调用指令求解并处理结果 解非刚性微分方程,中等精度,使用Runge-Kutta法的四、五阶算法。 解非刚性微分方程,低精度,使用Runge-Kutta法的二、三阶算法。 解非刚性微分方程,Adams-Bashforth-Moulton PECE法。 解中等的刚性微分方程,使用自由内插法的梯形法则。 解刚性微分方程,使用可变阶次的数值微分(NDFs)算法。 解刚性微分方程,低阶方法,使用修正的Rosenbrock公式。 解刚性微分方程,低阶方法,使用TR-BDF2方法。 ode45 ode23 ode113 ode23t ode15s ode23s ode23tb 注: 大多数情况下使用ode23或ode45 ODE函数求解常微分方程——基本步骤 * 例:ode45指令使用(接受多种输入参数及返回参数方式) [T, Y] = ode45(odefun, tspan, y0) % 最为常用 [T, Y] = ode45(odefun, tspan, y0, options) [T, Y, TE, YE, IE] = ode45(odefun, tspan, y0, options) sol = ode45(odefun,[t0,tf],y0,...) ODE函数求解常微分方程——基本步骤 各参数意义如下: * odefun 所需求解的常微分方程的函数(句柄)。 tspan 单调递增(减)的积分
显示全部
相似文档