Solving an Integro-differential equation numerically

50 visualizaciones (últimos 30 días)
Freyja
Freyja el 28 de Mzo. de 2015
Editada: Claudio Gelmi el 25 de Abr. de 2024
Hi, I am interested in writing a code which gives a numerical solution to an integro-differential equation. First off I am very new to integro-differential equations and do not quite understand them so I decided to start simple and would like some help with the first steps. My proposed equation is in the attached picture and the formulas I wish to use are also there though I'm open to suggestions. Even if someone can help me with the first step (just the maths part) where i = 0 I would be very grateful. My goal is to end up with a system of linear algebraic equations which I can then solve with Matlab. Thanks in advance to anyone who takes the time to look at this tricky problem.
Best regards, Freyja

Respuestas (3)

Claudio Gelmi
Claudio Gelmi el 6 de En. de 2017
Editada: Claudio Gelmi el 9 de En. de 2017
Take a look at this solver:
"IDSOLVER: A general purpose solver for nth-order integro-differential equations": http://dx.doi.org/10.1016/j.cpc.2013.09.008
Best wishes,
Claudio
  2 comentarios
Hewa selman
Hewa selman el 23 de Dic. de 2021
I can not find the code idsolver
Claudio Gelmi
Claudio Gelmi el 25 de Abr. de 2024
Editada: Claudio Gelmi el 25 de Abr. de 2024
https://github.com/cagelmi/integro-differential-solver-matlab

Iniciar sesión para comentar.


Roger Stafford
Roger Stafford el 9 de En. de 2017
I hate to see numerical approximation methods used when there exists a very simple and precise method done by hand. First we designate by K the integral of t*y(t) from 0 to 1, which is unknown as yet. This gives
y(x) = 1 + (K-1/3)*x
Integrating this w.r. to x gives
y(x) = x + (K-1/3)*x^2/2 + C
where C is the unknown constant of integration. However, since y(0) = 0, this implies that C = 0. Now we have
t*y(t) = t^2 + (K-1/3)*t^3/2
Integrating t*y(t) from 0 to 1 gives t^3/3 + (K-1/3)*t^4/8 evaluated at t = 1 minus its value at t = 0, so that gives
K = 1/3 + (K-1/3)*1/8
which has the unique solution K = 1/3. This in turn gives us our final answer:
y(x) = x.
No need for matlab or numerical approximations.

Torsten
Torsten el 30 de Mzo. de 2015
i=0:
(y(1/2)-y(0))/(1/2)=1-1/3*0+0*integral_0^1(t*y(t))dt
-> 2*y(1/2)=2*y(0)+1-1/3*0+0*integral_0^1(t*y(t))dt
-> 2*y(1/2)=1
-> y(1/2)=1/2
Now do the same for i=1, and you are done.
Best wishes
Torsten.
  2 comentarios
Freyja
Freyja el 4 de Abr. de 2015
Hi Torsten, Thanks for replying, unfortunately it's not quite was I was looking for, but either way I've solved it now so it's all good :)
Thanks anyway :D
Roger Stafford
Roger Stafford el 4 de Abr. de 2015
If you use the trapezoidal approximation to the integral, your exact solution will not quite satisfy your equation. Only if you use an exact integral using 'int' or calculus methods will the equation hold true.

Iniciar sesión para comentar.

Community Treasure Hunt

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

Start Hunting!

Translated by