Mathematica Plotting Logistics Equation with Mathematica

AI Thread Summary
The discussion centers on using Mathematica to graph data points generated from a C++ program based on the logistics equation. Users share methods for importing and filtering data in Mathematica, emphasizing the need to remove empty lists to avoid plotting issues. Suggestions include using the "Select" and "DeleteCases" functions to clean the data before plotting. Some participants also recommend alternative software like DPlot and Gnuplot for easier data visualization. The conversation highlights the challenges faced with older software and the desire for efficient plotting solutions.
Orson1981
Messages
13
Reaction score
0
I'm going through "The Chaos Cookbook" right now, a fairly old book on chaos programming. A bit too old I'm afraid, all the programs are written in Pascal and Basic. I had been using Excel (well, Open Office Calc) to do the iterations and graphing, but I feel that the size of the programs are out growing the scope of Excel. I wrote a C++ program to create the data points for a Martin diagram of the Logistics equation (the data is here http://www.box.net/shared/kr2cz5es0g if you care).

My question is how can I get mathematica to turn these data points into a graph, and/or is there perhaps better software I should be using for something like this (The main advantage is I get mathematica for free from my university).

It might be worth adding I can, pretty much, change the format of the data from that file at will if someone thinks a different format would work better.

Thanks for your help!
 
Physics news on Phys.org
You could start by something like

Code:
data = Import["data.txt", "Data"];
ListPlot[data]

and then probably do some processing (filter the data, make a fit, etc) as your data looks a bit strange.
 
After sorting your input in DPlot (www.dplot.com), the default plot you get is shown here:

MartinPlot.gif


If you try DPlot and have any questions please let me know at support@dplot.com.

David Hyde
 
Hmm, I found something strange in Mathematica 6.0. If there are still empty lists (corresponding to empty lines in the source file) in the data you feed to ListPlot, you get a junk image. So you have to filter those out on import. The following does work and plots all the data points (also those missing in David's post):
Code:
data = Select[Import["data.txt", "Data"], Length[#] > 1 &];
ListPlot[data]

(By the way you have 20 newlines and 845 obsolete points in your list)
 
Here is another way to deal with the empty lists:

Code:
data = DeleteCases[Import["data.txt", "Data"], {}];
ListPlot[data]
 
Whoops, I overlooked the blank lines, as did DPlot. You can copy/paste the individual data sets (assuming that's what they are) or send each set to DPlot programmatically, then Edit>Swap X,Y, Edit>Sort, and Edit>Swap X,Y to restore the original order. It isn't clear if this is what you're after or not, but here's the result:

MartinPlotb.gif
 
Thanks everyone for your input,

To David: I tried DPlot over the weekend and could manage to make it give me anything, I'll re-read your second post and try again this evening. I really could use a program that can do things like this easily, so I'm hoping it works out.

To CompuChip and Crosson: I tried your suggested line of code to no effect, I checked the mathematica help file and it appears that 5.2 doesn't support the function "Data" for the import command. I tried to fiddle around with the "List" command and the "Table" command but only ended up with blank graphs.

I've changed up my program to get rid of the white spaces and got rid of the bad data. The new list can be found at the same place as the old list. http://www.box.net/shared/kr2cz5es0g

The data itself is from the logistics equation x1 = k * x * (1-x). Each set of data points is formatted as: x1 , x . Then x1 becomes the new x and the program is run again to produce a new set of points. Knowing I could get it working in excel so I threw it in and got

note: this is with many more data points than in the above text file, plus I switched the x - y-axis for cosmetic reasons.

MartinPlot1.jpg


This takes a long time to process in excel though so I'm still hoping for another option such as mathematica (which would be nice for many reasons) or DPlot.
 
Consider gnuplot. It's stable, easy to use, and has been around forever.

- Warren
 
There was so much scatter in your data that I thought you must have intended the blank lines to be delineators between data sets... or something.

With a text file containing comma- or tab-separated values like yours, you can just drag the file onto the DPlot window and it will interpret it correctly. Alternatively after selecting File>Open, pick file type "D Multiple columns e.g. CSV files".

When I do that with your updated file and turn symbols on, lines off, I get:

MartinPlotc.gif


Should probably take any DPlot questions off-line - I don't mind answering questions but as a newbie here I don't want to wear out my welcome, either. You can get me at support@dplot.com.
 
  • #10
Orson1981 said:
To CompuChip and Crosson: I tried your suggested line of code to no effect, I checked the mathematica help file and it appears that 5.2 doesn't support the function "Data" for the import command.
Try "CSV"

Orson1981 said:
The data itself is from the logistics equation x1 = k * x * (1-x). Each set of data points is formatted as: x1 , x . Then x1 becomes the new x and the program is run again to produce a new set of points.
You can probably easily make the list in Mathematica to begin with, using NestList and related functions.

Orson1981 said:
I switched the x - y-axis for cosmetic reasons.
To do this in Mathematica, you can just map the elements of the list to Reverse:
Code:
ListPlot[Reverse /@ data]
 

Similar threads

Replies
3
Views
2K
Replies
2
Views
2K
Replies
3
Views
4K
Replies
2
Views
3K
Replies
1
Views
4K
Replies
3
Views
6K
Replies
23
Views
11K
Replies
3
Views
2K
Back
Top