新浪博客

MATLAB求解隐式微分方程(组)

2020-05-31 21:23阅读:
一般遇到的微分方程均可以转化为标准形式,然后用ode函数求解。实际上,有部分微分方程无法转化为标准形式,因此,这里介绍一下这类 隐式微分方程(组)的求解方法。
一般来讲有三种解决方法:
1、利用solve函数求出微分方程的显示表达;
2、利用fzero/fsolve函数求出微分方程(组)状态变量的微分值;
3、利用ode15i函数直接求解。
对于方法1,实际上有时候有些隐式方程并不能通过符号计算函数solve求出显示表达式。遇到这种情况则需要采用第2中方法通过数值计算求出状态变量。
这里介绍第2方法-- 利用fzero/fsolve函数求出微分方程(组)状态变量的微分值,然后调用ode函数求解。其他两种方法后面有机会再具体介绍。
隐式方程(组)如下:
y1'=cos(y1-sin(t+y2)+y2')-sin(2*t/y1+y2);
y2'=-2*t*y2+y1+sin(t-y1')*y1;
求解范围 tspan =[0:0.05:2.5];
初始条件 y1(0)=1,y2(0)=0.25.
示例代码如下:
**********************************
完整代码请加文末企鹅


function yinshi_odegroup
clear;
clc;
function DyDt=DyDtNestFun(t,y)
**********************
end
tspan = (0:0.05:2.5);
y0 = [1;0.25];
[t,y] = ode45(@DyDtNestFun,tspan,y0);%调用ode45求解
figure;
plot(t,y(:,1),'k-');
hold on
plot(t,y(:,2),'k:');
%图例,位置自动选择最佳位置
L = legend('{\ity}_1(
t)','{\ity}_2(t)','Location','best');
set(L,'fontname','Times New Roman');
xlabel('\itt','fontsize',16);
end
% --------------------------------------------
请不要做伸手党,示例完整代码收费10 RMB


——————
MATLAB求解隐式微分方程(组)

我的更多文章

下载客户端阅读体验更佳

APP专享