[Mathematica] NIntegrate Piecewise function with DE solution

  • Mathematica
  • Thread starter jackmell
  • Start date
  • #1
1,796
53

Main Question or Discussion Point

Hi,

I'd like to solve a DE, create a function with the solution, then use that solution in a Piecewise function, and then NIntegrate the Piecewise function but I can't get NIntegate to work. Here's what I'm trying to do:

Code:
mysol = NDSolve[{y'[x] == x, y[0] == 1}, y, {x, 0, 1}]
myy[x_] := Evaluate[y[x] /. mysol];

myf[x_] := Piecewise[{{myy[x], 0 < x <= 1}, {x^2, x > 1}}];

NIntegrate[myf[x], {x, 0, 2}]
NIntegrate then tells me it's not numeric in the interval.

Can someone explain to me what I'm doing wrong?

Thanks,
Jack
 

Answers and Replies

  • #2
phyzguy
Science Advisor
4,572
1,507
The output of NDSolve (mysol) is a list. You need to take the first element of it in your myy function definition, as follows:

Code:
In[25]:= mysol = NDSolve[{y'[x] == x, y[0] == 1}, y, {x, 0, 1}]

In[26]:= myy[x_] := Evaluate[y[x] /. mysol][[1]];

In[27]:= myf[x_] := Piecewise[{{myy[x], 0 < x <= 1}, {x^2, x > 1}}];

In[28]:= NIntegrate[myf[x], {x, 0, 2}]

Out[28]= 3.5
 
  • #3
1,796
53
The output of NDSolve (mysol) is a list. You need to take the first element of it in your myy function definition, as follows:

Code:
In[25]:= mysol = NDSolve[{y'[x] == x, y[0] == 1}, y, {x, 0, 1}]

In[26]:= myy[x_] := Evaluate[y[x] /. mysol][[1]];

In[27]:= myf[x_] := Piecewise[{{myy[x], 0 < x <= 1}, {x^2, x > 1}}];

In[28]:= NIntegrate[myf[x], {x, 0, 2}]

Out[28]= 3.5
Ok. Thanks a bunch. It's working now. :)
 

Related Threads on [Mathematica] NIntegrate Piecewise function with DE solution

Replies
2
Views
1K
Replies
2
Views
3K
Replies
2
Views
2K
Replies
2
Views
6K
Replies
1
Views
3K
Replies
13
Views
10K
Replies
1
Views
3K
Replies
5
Views
2K
Replies
1
Views
3K
Top