How do you update variables in NDSolve for each step?

  • Thread starter xpress907
  • Start date
  • #1
2
0
Im using NDSolve. I need to be able to update a variable inside NDSolve each time NDSolve takes a step. "rand" is the variable I want to update each step. I want it to be a different number each step. The below is an example that illustrates what I have currently happening ("rand" does not update for each step).
Code:
rand=RandomReal[]
Solution = y /. Flatten[ NDSolve[{y'[x] == .25 rand, y[0] == 1}, y, {x, -10, 10}]]
Plot[Evaluate[Solution[x]], {x, -10, 10}, PlotRange -> {-1.5, 1.5}]
Instead of picking 1 random variable for "rand" for the entire x domain, I want "rand" to be different for each step i.e. a different "rand" for x=1, x=2, x=3, etc.
 
Last edited:

Answers and Replies

  • #2
489
0
When you say each step, do you mean each step in x i.e step in the internal integration?

If so then the only way I can think of at the moment (not even sure if this is what you want) is to generate a table of random points, each associated with an x value and parse that as a function of x, i.e.

y'[x] = 0.25 f(x) where f(x) maps to your interpolated random set.
 
  • #3
2
0
yes, when i say step i mean each step in x inside of NDSolve.

I think i may have found an answer to this. Im posting it incase anyone else should ever find this and need help.

The ?NumericQ prevents the expression simply getting replaced by RandomReal[].

rand[x_?NumericQ] := RandomReal[];
Solution = y /. Flatten[NDSolve[{y'[x] == .25 rand[x], y[0] == 1}, y, {x, -10, 10}, PrecisionGoal->0]]
 
  • #4
489
0
You could also probably wrap it in an Evaluate[].
 

Related Threads on How do you update variables in NDSolve for each step?

  • Last Post
Replies
1
Views
2K
Replies
5
Views
558
  • Last Post
Replies
1
Views
2K
Replies
4
Views
771
Replies
6
Views
33K
  • Last Post
Replies
3
Views
2K
Replies
3
Views
1K
Replies
2
Views
2K
Replies
5
Views
3K
Top