新浪博客

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

2020-06-05 20:16阅读:
前面介绍了利用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);
%
图例,位置自动选择最佳位置
L = legend('{\ity}_1(t)','{\ity}_2(t)','Location','best');
set(L,'fontname','Times New Roman');
xlabel('\itt','fontsize',16);
end
% --------------------------------------------
请不要做伸手党,示例完整代码收费10 RMB


——————


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

我的更多文章

下载客户端阅读体验更佳

APP专享