solve a complex second order differential equation

조회 수: 8 (최근 30일)
嘉杰 程
嘉杰 程 . 2021년 10월 20일
댓글: 嘉杰 程 . 2021년 10월 22일
the ode has a form:
and for, given , how could I use ode45 to solve it with plot? thx

채택된 답변

Bjorn Gustavsson
Bjorn Gustavsson 2021년 10월 20일
편집: Bjorn Gustavsson 님. 2021년 10월 20일
The first step is to convert your second-order ODE to two coupled first-order ODEs:
Then you should write that ODE-system as a matlab-function:
function [dphidt_domegadt] = yourODEs(t,phi_w)
phi = phi_w(1);
w = phi_w(2);
dphidt = w;
if t == 0 % Here I assume that domegadt/t goes to zero as t -> 0+, perhaps there are solutions for other finite values of that ratio...
domegadt = phi^3;
domegadt = -2/t*dphidt - phi^3;
dphidt_domegadt = [dphidt;
This should be possible to integrate with ode45:
phi0w0 = [1 0];
t_span = [0 exp(2)]; % some limits of yours
[t,phi_w] = ode45(@(t,phi_w) yourODEs(t,phi_w),t_span,phi0w0);
  댓글 수: 9
嘉杰 程
嘉杰 程 2021년 10월 22일
actually this is only a specific function when n=3

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Walter Roberson
Walter Roberson 2021년 10월 20일
You cannot use any numeric solver for that. You have initial conditions at η = 0, but at 0 you have a division by 0 which gets you a numeric infinity. That numeric infinity is multiplied by the boundary condition of 0, but numeric infinity times numeric 0 gives you NaN, not 0.
If you work symbolically you might think that the infinity and the 0 cancel out, but that only works if the φ' approaches 0 faster than 1/η approaches infinity, which is something that we do not immediately know to be true.
  댓글 수: 3
Bjorn Gustavsson
Bjorn Gustavsson 2021년 10월 20일
That is not enough. The ratio of 1/t*dphi/dt has to behave well for t = 0.

댓글을 달려면 로그인하십시오.


Help CenterFile Exchange에서 Programming에 대해 자세히 알아보기





Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by