Plotting Logistics Equation with Mathematica

  • Context: Mathematica 
  • Thread starter Thread starter Orson1981
  • Start date Start date
  • Tags Tags
    Mathematica Plotting
Click For Summary

Discussion Overview

The discussion revolves around plotting data points generated from the logistics equation using Mathematica and other software options. Participants explore various methods for importing and visualizing the data, addressing issues related to data formatting and software capabilities.

Discussion Character

  • Technical explanation
  • Exploratory
  • Debate/contested

Main Points Raised

  • One participant shares their experience using C++ to generate data points for the logistics equation and seeks advice on plotting them in Mathematica.
  • Another suggests using the Import function in Mathematica with a specific command to plot the data, noting potential data processing needs.
  • A participant mentions issues with empty lists in Mathematica that can lead to incorrect plots and provides a solution for filtering out these empty entries.
  • Alternative methods for handling empty lists are proposed, including using DeleteCases to clean the data before plotting.
  • One participant expresses frustration with Mathematica's import capabilities and mentions trying to format the data differently to achieve successful plotting.
  • Another participant recommends using DPlot, highlighting its ease of use and stability, while also addressing potential issues with data scatter.
  • Suggestions for using gnuplot as another plotting option are presented, emphasizing its long-standing reliability.
  • Participants discuss the formatting of data points from the logistics equation and how to manipulate them for better visualization in Mathematica.

Areas of Agreement / Disagreement

Participants express varying opinions on the best software for plotting, with no consensus on a single solution. Some agree on the challenges posed by data formatting and software limitations, while others propose different approaches without resolving the underlying issues.

Contextual Notes

Participants note limitations related to specific software versions and the need for data cleaning. There are unresolved questions about the best practices for data import and visualization across different platforms.

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 ·
Replies
3
Views
2K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 3 ·
Replies
3
Views
4K
  • · Replies 2 ·
Replies
2
Views
3K
  • · Replies 11 ·
Replies
11
Views
17K
  • · Replies 1 ·
Replies
1
Views
4K
  • · Replies 3 ·
Replies
3
Views
6K
  • · Replies 23 ·
Replies
23
Views
11K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K