如何在MATLAB中使用ode45求解双复ode

조회수:10(최근30일)
颂歌是:
Ode (1) = diff(x,t) ==(√(1+x^2)*y)/(x*(t^2));
Ode (2) = diff(y,t) == (x³)*(t²);
鉴于x (0) = infty;y(0) = 0。
我想画两幅图来反映x^3(u)-y的关系u轴应该用log(u)的比例来画。

채택된답변

沃尔特·罗伯森
沃尔特·罗伯森 2021년10월16일
无限边界条件是一个符号解的问题:dsolve()拒绝它。
初始时间为0是一个问题:您除以时间,因此在初始时间生成一个数值无穷大,数值求解器无法从中恢复。
如果初始时间大于0,并且边界条件是有限的,就会得到奇点。奇点的时间取决于你设置的边界条件——失效时间为 1除以边界条件。
信谊x (t) y (t)
Dx = diff(x)
dx (t) =
Dy = diff(y)
dy (t) =
ode = [dx ==(√(1+x^2)*y)/(x*(t^2));
Dy == (x³)*(t²)]
常微分方程(t) =
IC = [x(0) == 1e8, y(0) == 0]
ic =
Sol = solve(ode, ic)
警告:无法找到符号解。
Sol =[空sym]
[eqs,vars] = reduceDifferentialOrder(odes,[x(t), y(t)])
方程式=
var =
[M,F] = massMatrixForm(equs,vars)
M =
F =
f = M\ f
f =
odefun = odeFunction(f,vars)
odefun =带值的Function_handle:
@ (t, in2) [(1.0. / t ^ 2。* in2(2:)。* sqrt (in2(1:)。^ 2 + 1.0))。/ in2 (1:); t ^ 2。* in2(: 1) ^ 3]。
Xy0 = double(rhs(ic))
xy0 = 1×2
100000000 0
Tspan = [1e-50 100]
tspan = 1×2
0.0000 - 100.0000
[t, xy] = ode45(odefun, tspan, xy0);
警告:t=2.575086e-08失败。如果不将步长减小到t时刻允许的最小值(5.293956e-23)以下,则无法满足积分公差。
数字
semilogy (t, xy (: 1),“k + - - - - - -”
标题(“x”
数字
情节(t, xy (:, 2),“k * - - - - - -”
标题(“y”
댓글수:5

댓글을달려면로그,하십시오。

추가답변(1개)

태그

제품

社区寻宝

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

开始狩猎!

翻译的