![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/773233/image.png)
solve a complex second order differential equation
조회 수: 3 (최근 30일)
이전 댓글 표시
the ode has a form:
(
)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/773188/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/773198/image.png)
and for
, given
, how could I use ode45 to solve it with plot? thx
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/773208/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/773213/image.png)
댓글 수: 0
채택된 답변
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:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/773233/image.png)
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;
else
domegadt = -2/t*dphidt - phi^3;
end
dphidt_domegadt = [dphidt;
domegadt];
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);
HTH
추가 답변 (1개)
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
2021년 10월 20일
That is not enough. The ratio of 1/t*dphi/dt has to behave well for t = 0.
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!