1

This is a follow up to this question. This answer is great it gives the correct solution and I can plot it, but I have a problem: when I try to integrate the solution in this way:

NIntegrate[(sol[r][[1]]/.{t->t0})r^2,{r,10^7,10^8}]

whith $t_0$ fixed, the solution obtained before is somehow lost and I have sol[r][[1]]=r. How can I integrate sol[r][[1]]?

Maybe I should add that I integrate in a different cell

mattiav27
  • 6,677
  • 3
  • 28
  • 64
  • 2
    I don't think it's reasonable to expect people will follow your links to dig out the value of sol. Link's are OK for further context, leave them in, but please [edit] you question to make it as self contained as possible. Ideally a simple copy&paste should be enough to reproduce your problem. – rhermans Aug 21 '19 at 13:23

2 Answers2

2

The argument of NIntegrate has to be numeric.

Try

sol = ParametricNDSolveValue[{eq, ic}, {\[CapitalSigma] , h, T}, {t,0, t0}, {r}] 
(* without "[t]" *)

f[r_?NumericQ] := sol[r][[1]][t0] r^2 (*integrand*)
NIntegrate [f[r], {r, 10^4, 10^5}]
(*0.0281089*)
Ulrich Neumann
  • 53,729
  • 2
  • 23
  • 55
2

Answering the question in the title, which seems only tangentially related to the question in the body.

The expression sol[r][[1]] is equivalent to Part[sol[r], 1]. It wants the first part of sol[r]. If sol[r] evaluates to something like {a, b, c}, then the first part would be a. If it does not evaluate, then the first part of sol[r] is r, and that is what is returned.

Jason B.
  • 68,381
  • 3
  • 139
  • 286
  • It's always a dilemma, whether to answer the question asked or address what you perceive is the OP's true desire. (+1) -- If you wanted to address the other question, you might suggest Indexed to replace Part. – Michael E2 Aug 21 '19 at 14:02