Mathematica Plotting in a loop in mathematica

AI Thread Summary
The discussion focuses on solving a system of differential equations in Mathematica and plotting the solution curves while varying parameters. The user seeks advice on implementing a loop to automate the plotting for different parameter values. The suggested approach involves using the Table function to generate an array of solutions with NDSolve and then plotting these solutions in another Table loop. Additionally, there is a related issue raised about handling two lists of temperature and time, with a recommendation to use a Do loop to iterate through the corresponding elements. The conversation highlights effective methods for parameterized plotting and list manipulation in Mathematica.
mummerta
Messages
4
Reaction score
0
I am trying to solve a system of differential equations and plot solution curves. The differential equations have parameters. I would like to write a loop for these parameters and have the solution curves plot.

Here is my code for the solving / plotting. The parameters I want to change are are currently 7 and 4.

sol = NDSolve[{x'[t] == -7*x[t] y[t] + 4 y[t],
y'[t] == 7*x[t] y[t] - 4 y[t], x[0] == 50, y[0] == 10}, {x,
y}, {t, 0, 10}]
Plot[Evaluate[x[t] /. sol], {t, 0, 1}, PlotRange -> All]
Plot[Evaluate[y[t] /. sol], {t, 0, 1}, PlotRange -> All]
ParametricPlot[Evaluate[{x[t], y[t]} /. sol], {t, 0, 10},
PlotRange -> All]
{x[10], y[10]} /. sol

I don't know how to create a loop (or even which type of loop to use) that will output a plot for each new parameter value.

Any advice that you have to offer would be much appreciated.
 
Last edited:
Physics news on Phys.org
Use the Table[..] function to do the loop.

First use Table[NDSolve[...],{i,Length[arr]}] to get an array of solutions for the parameters you want, where 'arr' is an array storing your parameters.

Then just do a similar loop for your plot. ie. Table[Plot[...],{i,Length[solArr]}], where solArr is the array of solutions that would have been returned from the previous line.
 
Thanks so much! I never would have thought to use a Table.

I now have solutions and graphs running with 4 parameters!
 
Hi, I have a problem with mathematica...I have two lists ...one is for temperature and the other is for time...and they are related..that is...each element in time list corresponds to temperature on the other list...I have a huge formula where i need to use corresponding elements from both lists... any suggestions ?
 
If your two list are in list format such as:

Time = {1, 2, 3, 4} and Temp = {4, 5, 6, 7}

with the correspondence between
(Time, Temp)
(1,4)
(2,5)
(3,6)
(4,7)

That is Time[] corresponds to Temp[]

Then you can use a Do loop in the following way:

Do[ put commands here separated by semicolons referencing i , {i,1,4} ]

For example

Do[Print[Time[]*Temp[];
Print[Time[]+Temp[], {i,1,4}]
 
You can join the sets dynamically. You can create a union. And most functions will iterate the lists, either as a union or indivdually.
 

Similar threads

Replies
1
Views
2K
Replies
8
Views
3K
Replies
1
Views
2K
Replies
5
Views
2K
Replies
1
Views
2K
Replies
4
Views
3K
Replies
1
Views
2K
Replies
1
Views
2K
Back
Top