Problem using Nintegrate and NDsolve

I am going to use Nintegrate to integrate the result of NDsolve and also a Table. How I can do this? My code is:

Clear["Global*"]

yy = 10^-4;
rr = 0.999;
xx = 10^-15;
zz = 10^-4;
mm = 10^-4;

ic = -17.5

s = NDSolve[{D[y[t],
t] == (3 y[t])/5 - (12 m[t]^2 y[t])/5 + (2 r[t] y[t])/
5 - (6 x[t]^2 y[t])/5 + (3 y[t]^2)/5 + (7 y[t] z[t])/
5 - (y[t] z[t]^2)/10,
D[r[t], t] == -((2 r[t])/5) - (12 m[t]^2 r[t])/5 + (2 r[t]^2)/
5 - (6 r[t] x[t]^2)/5 + (3 r[t] y[t])/5 + (7 r[t] z[t])/
5 - (r[t] z[t]^2)/10,
D[x[t], t] == (9 x[t])/5 - (6 m[t]^2 x[t])/5 + (r[t] x[t])/
5 - (3 x[t]^3)/5 + (3 x[t] y[t])/10 + (x[t] z[t])/
5 - (x[t] z[t]^2)/20,
D[z[t], t] ==
12/5 + (12 m[t]^2)/5 - (12 r[t])/5 - (24 x[t]^2)/5 - (18 y[t])/
5 - (18 z[t])/5 - (6 m[t]^2 z[t])/5 + (r[t] z[t])/
5 - (3 x[t]^2 z[t])/5 + (3 y[t] z[t])/10 + (13 z[t]^2)/10 -
z[t]^3/20,
D[m[t], t] == -2 Sqrt[3] - (6 m[t])/5 -
2 Sqrt[3] m[t]^2 - (6 m[t]^3)/5 +
2 Sqrt[3] r[t] + (m[t] r[t])/5 +
2 Sqrt[3] x[t]^2 - (3 m[t] x[t]^2)/5 +
2 Sqrt[3] y[t] + (3 m[t] y[t])/10 +
2 Sqrt[3] z[t] + (6 m[t] z[t])/5 -
z[t]^2/(4 Sqrt[3]) - (m[t] z[t]^2)/20, x[ic] == xx, y[ic] == yy,
m[ic] == mm, z[ic] == zz, r[ic] == rr}, {x, y, z, m, r}, {t, ic,
10}]


I use the result to find

H = Table[
Exp[NIntegrate[z[t]/5 +  (z[t]^2)/20 /.
First@s, {t, 0, i}]], {i, -17.5, 10, 0.2}]


Now I am going to compute:

NIntegrate[Exp[-t] x[t]^2 (H)^-1 , {t, 0, -7}]


but this does not work. In fact I dont know how to call H and x[t] together?

• Sara, it doesn't make much sense to me to multiply your integrand by a table of numbers. Can you show us what mathematical expression yo are trying to reproduce? Jun 21, 2016 at 13:18
• Did you forget a /. First@s in your last NIntegrate? Is H supposed to represent the interpolation of the table? Jun 21, 2016 at 13:19
• @MarcoB, In fact, this is a physical expression and I compute different parts with mathematica. The last step is integrating these quantities which originate from different parts. In other words, I dont know how to first, behave H as a function to be integrated beside x[t] and second how to gather H and x[t] with the analytical function Exp[t].
– sara
Jun 21, 2016 at 14:06
• @MichaelE2, because of the existence of H, using /. First@s does not work. In fact I tried different type of writing my purpose and I couldnt get result.
– sara
Jun 21, 2016 at 14:09
• @MichaelE2, It seems I was not specific enough, sorry, I want to first make a function out of H then integrate the expression so that the result is a number.
– sara
Jun 21, 2016 at 15:37

I think this gives what you want: We construct the integral inside the definition of H by adding another ODE to the NDSolve system, which I called logH. This in fact calculates the integral from ic, not from 0. So to define H we need to subtract logH[0] from logH[t] before exponentiating. This should be a much more accurate (and faster) way of computing H than interpolating a table.

ClearAll[x, y, z, m, r, logH, t];

yy = 10^-4;
rr = 0.999;
xx = 10^-15;
zz = 10^-4;
mm = 10^-4;

ic = -17.5;

s = NDSolve[{D[y[t],
t] == (3 y[t])/5 - (12 m[t]^2 y[t])/5 + (2 r[t] y[t])/
5 - (6 x[t]^2 y[t])/5 + (3 y[t]^2)/5 + (7 y[t] z[t])/
5 - (y[t] z[t]^2)/10,
D[r[t], t] == -((2 r[t])/5) - (12 m[t]^2 r[t])/5 + (2 r[t]^2)/
5 - (6 r[t] x[t]^2)/5 + (3 r[t] y[t])/5 + (7 r[t] z[t])/
5 - (r[t] z[t]^2)/10,
D[x[t], t] == (9 x[t])/5 - (6 m[t]^2 x[t])/5 + (r[t] x[t])/
5 - (3 x[t]^3)/5 + (3 x[t] y[t])/10 + (x[t] z[t])/
5 - (x[t] z[t]^2)/20,
D[z[t], t] ==
12/5 + (12 m[t]^2)/5 - (12 r[t])/5 - (24 x[t]^2)/5 - (18 y[t])/
5 - (18 z[t])/5 - (6 m[t]^2 z[t])/5 + (r[t] z[t])/
5 - (3 x[t]^2 z[t])/5 + (3 y[t] z[t])/10 + (13 z[t]^2)/10 -
z[t]^3/20,
D[m[t], t] == -2 Sqrt[3] - (6 m[t])/5 -
2 Sqrt[3] m[t]^2 - (6 m[t]^3)/5 +
2 Sqrt[3] r[t] + (m[t] r[t])/5 +
2 Sqrt[3] x[t]^2 - (3 m[t] x[t]^2)/5 +
2 Sqrt[3] y[t] + (3 m[t] y[t])/10 +
2 Sqrt[3] z[t] + (6 m[t] z[t])/5 -
z[t]^2/(4 Sqrt[3]) - (m[t] z[t]^2)/20, x[ic] == xx, y[ic] == yy,
m[ic] == mm, z[ic] == zz, r[ic] == rr,
logH'[t] == z[t]/5 + (z[t]^2)/20, logH[ic] == 0
},
{x, y, z, m, r, logH}, {t, ic, 10}];


Now construct H from logH.

ClearAll[H];
With[{logH = logH /. First@s},
H[t_] := Exp[logH[t] - logH[0]]];

H[t]


We can see an image of the plot of logH inside the InterpolatingFunction in the image above.

Finally, here is the integral:

NIntegrate[
Evaluate[Exp[-t] x[t]^2 (H[t])^-1 /. First@s],
{t, 0, -7}]
(*  -2.25183  *)

• That`s precious. Thank you.. @Michael E2
– sara
Jun 22, 2016 at 6:22