如何在MATLAB中使用ode45求解双复ode
조회수:10(최근30일)
시이전댓글
채택된답변
沃尔特·罗伯森
2021년10월16일
无限边界条件是一个符号解的问题:dsolve()拒绝它。
初始时间为0是一个问题:您除以时间,因此在初始时间生成一个数值无穷大,数值求解器无法从中恢复。
如果初始时间大于0,并且边界条件是有限的,就会得到奇点。奇点的时间取决于你设置的边界条件——失效时间为
约
1除以边界条件。
信谊x (t) y (t)
Dx = diff(x)
Dy = diff(y)
ode = [dx ==(√(1+x^2)*y)/(x*(t^2));
Dy == (x³)*(t²)]
IC = [x(0) == 1e8, y(0) == 0]
Sol = solve(ode, ic)
[eqs,vars] = reduceDifferentialOrder(odes,[x(t), y(t)])
[M,F] = massMatrixForm(equs,vars)
f = M\ f
odefun = odeFunction(f,vars)
Xy0 = double(rhs(ic))
Tspan = [1e-50 100]
[t, xy] = ode45(odefun, tspan, xy0);
数字
semilogy (t, xy (: 1),“k + - - - - - -”)
标题(“x”)
数字
情节(t, xy (:, 2),“k * - - - - - -”)
标题(“y”)