ode15i隐式的常微分方程系统,问题

19日视图(30天)
史蒂芬
史蒂芬 约6小时前
编辑: Torsten 约3小时前
你好,
我试图解决一个系统的两个二阶常微分方程写成四个1阶常微分方程。方程是非线性和非自治(有一个周期性强迫)。
我不知道我的代码很有用但是我包括如下。有相当多的参数,我只是改变了一个我称之为γ在我的代码。这是我的主要脚本:
clc;清晰的所有;关闭所有
% %常数参数
全球我Gs伽马k2 C100 C001 C011 C021 C031 f2_1
k2 = 2.36502037243135201301202405;
C100 = 0.20253735124738893522296764;C001 = -2.2937835087802942891067795;
C011 = 0.6416819172490610458168773;C021 = 1.185226949697087841616967;
C031 = 0.894260611316773729819612;f2_1 = -1.4266400021183172634428127;
B = 1的军医;I = 1飞行;Gs = 1的军医;
γ= 60;
% %解决
t0 = 0;往往= 200;
tspan = 0:0.01:一般;
选择= odeset (“RelTol”1 e-6“AbsTol”1 e-6);
%的初始猜测
y0 = [1 0 0 0];yp0 = [0 0 0 0];
%计算初始猜测
[y0, yp0] = decic (@odefun t0, y0, [1 0 0 0], yp0,[],选项);
[t、y] = ode15i (@odefun tspan, y0, yp0);
a0 = y (: 1);a0p = y (:, 2);
a2 = y (: 3);a2p = y (:, 4);
% %策划
图();
情节(t、a0“o”)
标题(“a0, y (: 1)”)
包含(“t”);ylabel (“y (: 1)”)
图();
情节(t, a2)
标题(“a2,泰(:,2)”)
包含(“t”);ylabel (“y (:, 3)”)
常微分方程的定义由以下,全局变量只是常数参数:
函数res = odefun (t, y, yp)
全球我Gs伽马k2 C100 C001 C011 C021 C031 f2_1
res = 0 (4,1);
res (1) = yp(1)是(2);
res (2) = yp (3) - y (4);
res(3) =我* yp (2) + (B * k2 ^ 4 * y (3) + I * yp (4)) * f2_1 + g + g *γ* cos (t);
res (4) = -0.5 * (2) c100 * y(4) -((我* yp (2) -Gs-Gs *γ* cos (t)) / f2_1)。*
(C001 * y (1)。^ 3 + 3 * C011 * y (1) ^ 2。* y (3) + 3 * C021 * y (1)。* y (3)。^ 2 + C031 * y (3)。^ 3);
结束
常微分方程有一个强迫项的cos (t)参数γ成正比。
γ< = 60,解决方案看起来像我所希望的身体(下图是γ= 60):
然而在增加伽马,它看起来就像某种奇异点出现。把γ= 70,我们可以看到大幅改变解决方案在t = 15:
对γ= 80 t = 2.8附近,出现了类似的情况,尽早解决者完全失败:
我怀疑这个奇点高γ的值不是一个方程的特性,但源于数字错误。我怎么能调查更多吗?这是我第一次解决隐式常微分方程和似乎没有很多ODE15i的替代品。改变解决者宽容真的不多,我不知道还有什么。
编辑:看来criticial初始条件,和微小的变化。例如与γ= 70,添加以下行后调用 decic 功能完全改变解决方案:
yp0 (4) = yp0 (4) + 1 e15汽油;
我之前忽略了这个,我真的不知道 decic 做的;我会读一点。

答案(1)

Torsten
Torsten 23分钟前
编辑:Torsten 23分钟前
您可以显式求解yp ode15i,所以不需要使用。但Gamma-problem仍然存在。
clc;清晰的所有;关闭所有
% %常数参数
全球我Gs伽马k2 C100 C001 C011 C021 C031 f2_1
k2 = 2.36502037243135201301202405;
C100 = 0.20253735124738893522296764;C001 = -2.2937835087802942891067795;
C011 = 0.6416819172490610458168773;C021 = 1.185226949697087841616967;
C031 = 0.894260611316773729819612;f2_1 = -1.4266400021183172634428127;
B = 1的军医;I = 1飞行;Gs = 1的军医;
γ= 60;
% %解决
t0 = 0;往往= 200;
tspan = 0:0.01:一般;
选择= odeset (“RelTol”1 e-8“AbsTol”1 e-8);
%的初始猜测
y0 = [1 0 0 0];
%计算初始猜测
[t、y] = ode15s (@odefun tspan, y0);%,选项);
a0 = y (: 1);a0p = y (:, 2);
a2 = y (: 3);a2p = y (:, 4);
% %策划
图();
情节(t、a0“o”)
标题(“a0, y (: 1)”)
包含(“t”);ylabel (“y (: 1)”)
图();
情节(t, a2)
标题(“a2,泰(:,2)”)
包含(“t”);ylabel (“y (:, 3)”)
函数yp = odefun (t, y)
全球我Gs伽马k2 C100 C001 C011 C021 C031 f2_1
yp = 0 (4,1);
yp (1) = y (2);
yp (3) = y (4);
yp (2) = ((-0.5 * y (2) c100 * y (4)) * f2_1 /
(C001 * y (1)。^ 3 + 3 * C011 * y (1) ^ 2。* y (3) + 3 * C021 * y (1)。* y (3)。^ 2 + C031 * y (3)。^ 3)+
(Gs + g *γ* cos (t))) /我;
yp(4) =((我* yp (2) -Gs-Gs *γ* cos (t)) / f2_1 - B * k2 ^ 4 * y(3)) /我;
% res (1) = yp(1)是(2);
% res (2) = yp (3) - y (4);
% res(3) =我* yp (2) + (B * k2 ^ 4 * y (3) + I * yp (4)) * f2_1 + g + g *γ* cos (t);
% res (4) = -0.5 * (2) c100 * y(4) -((我* yp (2) -Gs-Gs *γ* cos (t)) / f2_1)。*……
% (C001 * y (1)。^ 3 + 3 * C011 * y (1) ^ 2。* y (3) + 3 * C021 * y (1)。* y (3)。^ 2 + C031 * y (3)。^ 3);
结束

下载188bet金宝搏


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!