ODE45 for a second order differential equation

조회 수: 96 (최근 30일)
Remston Martis
Remston Martis 2018년 4월 21일
편집: Ebraheem Menda 2021년 6월 30일
I have a second order differential equation : y''=(2*y)+(8*x)*(9-x); Boundary Conditions y(0)=0 , y(9)=0 Need to solve the diff eq using ode45.
I've tried watching a bunch of tutorials but I just cannot seem to figure out how the function is written as a column vector [y';y'']. I don't understand it at all and that might make this query vague too.
Hope someone can help with the code or the explanation on how to solve the above.
Thank you

채택된 답변

Torsten
Torsten 2018년 4월 23일
[x,y] = ode45(@fun,[0 9],[0 -28]);
function dy = fun(x,y)
dy = zeros(2,1);
dy(1) = y(2);
dy(2) = 2*y(1)+8*x*(9-x);
But for a boundary value problem like yours, you will have to use "bvp4c" instead of "ode45".
Best wishes
Torsten.
  댓글 수: 5
Torsten
Torsten 2018년 4월 23일
편집: Torsten 2018년 4월 23일
There seems to be a duplicate of ode45 on your desktop - rename or remove it.
Remston Martis
Remston Martis 2018년 4월 23일
Brilliant. Thank you Torsten!

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

추가 답변 (2개)

Stephan
Stephan 2018년 4월 22일
편집: Stephan 2018년 4월 22일

Hi,

transform a n-th order ode into a system of n 1st order ode's to solve it.

Matlab documentation example: https://de.mathworks.com/help/matlab/math/solve-nonstiff-odes.html

More examples here: https://www.google.de/url?sa=t&source=web&rct=j&url=http://www.math.poly.edu/courses/ma2132/Notes/MA2132EquationsToSystems.pdf&ved=2ahUKEwiQ_tCRq83aAhWMMewKHQ7CC1IQFjALegQIBxAB&usg=AOvVaw07Im9F42d9LrfvRIzL35Pd

If you read this i guess you can quickly solve your problem.

  댓글 수: 2
Remston Martis
Remston Martis 2018년 4월 23일
편집: Remston Martis 2018년 4월 23일

I keep getting these errors: Attempt to execute SCRIPT ode45 as a

function: C:\Users\remst\Desktop\ode45.m

Error in ode45 (line 3) [x,y] = ode45(@fun,[0 9],[0 -28]);

My function declarations are:

function fun=fun(x,y)
fun=zeroes(2,1);
fun(1)=y(2);
fun(2)=(2*y(1))+8*x*(9-x);

Calling the function :

[x,y] = ode45(@fun,[0 9],[0 -28]);

Where am I going wrong? I've tried 10000s of ways

Ebraheem Menda
Ebraheem Menda 2021년 6월 30일
편집: Ebraheem Menda 2021년 6월 30일
In this case you have declared the name of the function and its output both with the same name 'fun'. That is the problem it seems.

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


NARSIRAM GURJAR
NARSIRAM GURJAR 2019년 9월 16일
C:\Users\remst\Desktop\ode45.m
save this file with different name

카테고리

Help CenterFile Exchange에서 Ordinary Differential Equations에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by