Solving a system of integro-differential equations
7 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
I have a system of integro-differential equations that I need to solve. I am having some trouble with it. The system is as below:





This is a complicated system, and I am struggling with how to tackle the integrals, mainly how to pass the previous values in a solver like ode23s. Please note that for the infinite sum, it is reasonable to truncate it after some terms (e.g. n=0 to 5) which would be decided by the user. Would appreciate help in solving this system.
3 Kommentare
Walter Roberson
am 20 Okt. 2023
Have you tried setting up the system symbolically, with some small fixed number of terms for the infinite series (for example, 5 terms to experiment with), and then following the steps shown in the first example for odeFunction and see if MATLAB is able to figure out what the resulting ode system should look like?
Antworten (1)
Torsten
am 20 Okt. 2023
Bearbeitet: Torsten
am 20 Okt. 2023
Define
dI_n / dt = P1*exp(-lambda_n^2*D_a*t) , I_n(0) = 0
as additional ODEs to be solved. Then
I_n = integral_{tau = 0}^{tau = t} P1(tau)*exp(-lambda_n(tau)^2*D_a*tau) dtau
2 Kommentare
Torsten
am 24 Okt. 2023
Bearbeitet: Torsten
am 25 Okt. 2023
If I do as you suggested, does that not mean that I_n would actually be solved only for the current timestep, and not all past timesteps?
I_n is computed by the additional ODE from t = 0 up to the time t in the upper limit of integration. And this value is needed to compute B_n(t) according to your formula.
Is there ay way to pass the vectors of past values of P1, l, and t to my ode function, where I can then use a numerical integration to evaluate the integral?
Why ? I_n , the value of the additional ODE function, is the value of the integral.
If
y(t) = integral_{s=0}^{s=t} g(s) ds,
then
dy/dt = g(t), y(0) = 0.
It's nothing but the fundamental theorem of calculus.
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!