MATLAB的ode45函数实例求常微分方程数值解 您所在的位置:网站首页 变分方程的求解 MATLAB的ode45函数实例求常微分方程数值解

MATLAB的ode45函数实例求常微分方程数值解

2023-03-14 09:10| 来源: 网络整理| 查看: 265

ode45函数是常微分方程的数值求解。MATLAB提供了求常微分方程数值解的函数。当难以求得微分方程的解析解时,可以求其数值解,Matlab中求微分方程数值解的函数有七个:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb 。

ode是Matlab专门用于解微分方程的功能函数。该求解器有变步长(variable-step)和定步长(fixed-step)两种类型。不同类型有着不同的求解器,其中ode45求解器属于变步长的一种,采用Runge-Kutta算法;其他采用相同算法的变步长求解器还有ode23。

ode45表示采用四阶-五阶Runge-Kutta算法,它用4阶方法提供候选解,5阶方法控制误差,是一种自适应步长(变步长)的常微分方程数值解法,其整体截断误差为(Δx)^5。解决的是Nonstiff(非刚性)常微分方程。

ode45是解决数值解问题的首选方法,若长时间没结果,应该就是刚性的,可换用ode15s试试。 [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,[t0tf],y0...) [T,Y] = ode45(odefun,tspan,y0) odefun 是函数句柄,可以是函数文件名,匿名函数句柄或内联函数名 tspan 是区间 [t0 tf] 或者一系列散点[t0,t1,...,tf] y0 是初始值向量 T 返回列向量的时间点 Y 返回对应T的求解列向量 [T,Y] = ode45(odefun,tspan,y0,options) options 是求解参数设置,可以用odeset在计算前设定误差,输出参数,事件等 [T,Y] = ode45(odefun,tspan,y0,options) options 是求解参数设置,可以用odeset在计算前设定误差,输出参数,事件等 [T,Y,TE,YE,IE] =ode45(odefun,tspan,y0,options) 在设置了事件参数后的对应输出 TE 事件发生时间 YE 事件发生时之答案 IE 事件函数消失时之指针i sol =ode45(odefun,[t0 tf],y0...) sol 结构体输出结果实例1

首先创建一个func2.m函数存放方程表达式

function Biubiu = func2(h, t) g = 9.8; Biubiu = (10000*pi/sqrt(2*g))*(h.^(3/2) - 2*(h.^(1/2))); end

主程序

clc; clear all; close all; tspan = [1 0];%函数范围 t_1 = 0;%初值 [h,t] = ode45(@func2, tspan, t_1); plot(h,t);%绘图 xlabel('h值') ylabel('y值') title('一阶微分方程')

结果

二阶微分方程实例

定义的微分函数:

function dydt = myfunY(t,Y) %定义函数 dydt = zeros(2,1); %初始化 dydt(1) = Y(2); dydt(2) = -4/7*Y(2)-5/7*Y(1)-1+6/7*sin(8*t); end

主程序

clc; clear all; close all; tspan = [0,50];%变量t的范围 x0 = [0;0]; %初值 [t,x] = ode45(@myfunY,tspan,x0)%使用ode45函数 %画图 figure; plot(t,x(:,1),'r'); hold on; plot(t,x(:,2),'b'); xlabel('t');%设置x轴坐标 legend('x(t) ','dx/dt');%设置图例 data1 = [t x]; xlswrite('data1.xlsx',data1);

运行结果

本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

作 者 | 郭志龙

编 辑 | 郭志龙校 对 | 郭志龙



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有