前面介绍了利用fzero/fsolve函数求解隐式微分方程(组)的方法。
这里介绍一下MATLAB自带的求解隐式方程的ode15i函数
隐式方程(组)如下:
y1'=cos(y1-sin(t+y2)+y2')-sin(2*t/y1+y2);
y2'=-2*t*y2+y1+sin(t-y1')*y1;
求解范围 tspan =[0,1];
初始条件 y1(0)=1,y2(0)=0.25.
示例代码如下:
**********************************
完整代码请加文末企鹅号
function yinshi_ode15i
% nested function构造微分方程组,注意多了一个一阶导数变量dy(与非隐式微分方程不同)
function DyDt = DyDtNestedFun(t,y,dy)
DyDt =
[cos(y(1)-sin(t+y(2))+dy(2))-sin(2*t/y(1)+y(2));
-2*t*y(2)+y(1)+sin(t-dy(1))*y(1)];
end
t0 = 0;
%自变量的初值
y0 = [1;0.25]; %初值y0
********************
%% 求解微分方程
[t,y] = ode15i(@DyDtNestedFun,[0,1],y02,dy02);
%% 画图结果展示
figure;
plot(t,y(:,1),'k-','linewidth',2);
hold on
plot(t,y(:,2),'k--','linewidth',2);
%
这里介绍一下MATLAB自带的求解隐式方程的ode15i函数
隐式方程(组)如下:
y1'=cos(y1-sin(t+y2)+y2')-sin(2*t/y1+y2);
y2'=-2*t*y2+y1+sin(t-y1')*y1;
求解范围 tspan =[0,1];
初始条件 y1(0)=1,y2(0)=0.25.
示例代码如下:
**********************************
完整代码请加文末企鹅号
function yinshi_ode15i
% nested function构造微分方程组,注意多了一个一阶导数变量dy(与非隐式微分方程不同)
t0 = 0;
y0 = [1;0.25];
********************
%% 求解微分方程
[t,y] = ode15i(@DyDtNestedFun,[0,1],y02,dy02);
%% 画图结果展示
figure;
plot(t,y(:,1),'k-','linewidth',2);
hold on
plot(t,y(:,2),'k--','linewidth',2);
%
