View Full Version : bifurcation
I want to produce a bifurcation diagram using mathematica to represent equilibrium points of p1 using the data obtained from the following code, where pn1, pn2, pn3 are recrusion exquations. i.e. x-axis will be the paramter t (ranging from 0-0.3) and y-axis will be the values of p1 this code produces.
series = {};
For[i = 0, i ≤ 300, ++i, p1sol = Sort[
p1 /. NSolve[{pn1 == 0, pn2 == 0, pn3 == 0} /. t -> i/1000.0, {p1, p2, p3}]];
series = Join[p1series, {Join[{i/1000.0}, p1sol]}]]
Thanks if you can help me.
Pythagorean
Sep15-10, 10:29 PM
I've made bifurcation diagrams in Matlab, but I'm not familiar with mathematica's language.
If you want to write it as pseudocode and specifically tell me the issue you're having, I might be able to offer some advice.
In mathematica I can export this as a table so I just have the data. I could use matlab to generate the actual plot using these data. Would this be possible? Do you have an example of this?
% a prompt for generating a list
series = {};
For[i = 0, i ≤ 300, ++i, p1sol = Sort[
p1 /. NSolve[{pn1 == 0, pn2 == 0, pn3 == 0} /. t -> i/1000.0, {p1, p2, p3}]];
%NSolve gives a list of numerical approximations for all of the roots of the polynomial
%equation, (maybe the root function in matlab?)
% /.t this just evaluates the equations at t
% t (plotted on the x-axis) ranges from 0-0.3 (since 300/1000)
series = Join[p1series, {Join[{i/1000.0}, p1sol]}]]
%The series is a list of the values of p1 at specific values of t.
Simon_Tyler
Sep16-10, 04:38 AM
In Mathematica, maybe the easiest way is to use ListPlot:
eg the following is the bifurcation diagram for the logistic map (http://demonstrations.wolfram.com/search.html?query=logistic+map):
ListPlot[Table[Thread[{r,
Union[NestList[r # (1 - #) &, .77, 1000][[-50 ;;]]]}], {r, 1, 4, .01}],
PlotStyle -> PointSize[Tiny]]
There are probably better ways of doing this. Have a look at the code on the demonstration site (http://demonstrations.wolfram.com/search.html?query=bifurcation+diagram)
Pythagorean
Sep18-10, 09:15 PM
%Matlab is relatively simple to plot in. You have a matrix of data, you just rip out vectors from it:
%for instance, a matrix S, with size MxN, you just declare a vector to be a slice of the matrix:
parameter = S(:,n) %the whole row in the nth column becomes a vector called 'parameter')
%Do the same with your stable points, pulling them out of the appropriate row (or column, depending on you shaped your data).
stablepoints = S(:,n+1) %or wherever your stable points are (there's no guarantee it will be n+1, I just mean this as an example)
stablepoints2 = S(:,n+2) %if you have a second set of stable points
%Then to plot, just:
plot(parameter,stablepoints,'*') %the * ensures a point will be plotted. By default, MATLAB will connect the points which is no what you want in a bifurcation diagram.
%If you have more than one vector of stable points you can add:
hold on
%so that it won't clear your last plot and will add any additional plots right into the current figure
plot(parameter,stablepoints2,'*')
plot(parameter,stablepoints3,'*')
%making it look pretty:
title 'this is your title'
xlabel 'bifurcation parameter, r'
ylabel 'stable points'
%Is this what you're asking for?
Yes! Thank you so much, this works well!
Hi, just one more question... I want to adjust the line width to make it more clear. From what I've read online it suggests the code would look something like this...
plot(parameter,stablepoints2,'*', 'LineWidth', 2)
Is this right? I've tried lots of different line width points but it doesn't seem to be working.
Also, I'd like to plot each set of points in a different colour?
Thanks again!
Pythagorean
Sep21-10, 05:50 AM
For colors:
plot(x,y,'r*')
would be a red star
on my iPhone, would have to research the other question on matlab, maybe tomorrow.
Pythagorean
Sep21-10, 06:00 PM
So I'm not haveing any problems with that 'LineWidth' line. It thickens the line and plots it. Maybe if you post your code and the error I can trouble shoot.
type 'doc LineSpec' at the MATLAB command line for the color and marker shape codes (i.e r is red, k is black, etc.)
I would also suggest using 'doc' instead of 'help' in general when you're first learning a command.
cheers for the colour tip!
vBulletin® v3.8.7, Copyright ©2000-2012, vBulletin Solutions, Inc.