Produce a bifurcation diagram using mathematica

In summary, the bifurcation diagram was produced using the data obtained from the following code, but the author is not familiar with the language of mathematica and is having difficulty exporting the data as a table.
  • #1
jemma
36
0
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.
 
Physics news on Phys.org
  • #2


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.
 
  • #3


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.
 
  • #4
Last edited by a moderator:
  • #5


%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?
 
  • #6


Yes! Thank you so much, this works well!
 
  • #7


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!
 
Last edited:
  • #8


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.
 
  • #9


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.
 
  • #10


cheers for the colour tip!
 

What is a bifurcation diagram?

A bifurcation diagram is a graphical representation of the behavior of a dynamic system as one of its parameters is varied. It shows how the system's steady-state solutions change and how new solutions emerge as the parameter changes.

Why is it useful to produce a bifurcation diagram using Mathematica?

Mathematica is a powerful tool for mathematical and scientific computation, making it ideal for creating bifurcation diagrams. It allows for easy manipulation and visualization of data, making it easier to analyze and understand the behavior of a dynamic system.

What are the steps for producing a bifurcation diagram using Mathematica?

The general steps for producing a bifurcation diagram using Mathematica are as follows:

  1. Define the dynamic system using differential equations or iterative functions.
  2. Choose a parameter to vary and set its range.
  3. Use the Manipulate function to create an interactive plot of the system's behavior.
  4. Use the Plot or ListPlot function to generate the bifurcation diagram.

What are some common challenges when producing a bifurcation diagram using Mathematica?

One challenge is ensuring that the chosen parameter range is appropriate for capturing all possible behaviors of the system. Another challenge is interpreting the complex patterns and structures that may appear in the bifurcation diagram, which may require further analysis and understanding of the underlying mathematical equations.

Can a bifurcation diagram be produced for any type of dynamic system?

Yes, a bifurcation diagram can be produced for any type of dynamic system, as long as it can be described by a set of mathematical equations or iterative functions. However, some systems may have more complex or chaotic behaviors that may be more difficult to capture and analyze using a bifurcation diagram.

Similar threads

  • Engineering and Comp Sci Homework Help
Replies
1
Views
828
  • MATLAB, Maple, Mathematica, LaTeX
Replies
7
Views
2K
  • MATLAB, Maple, Mathematica, LaTeX
Replies
1
Views
3K
Replies
15
Views
2K
  • Programming and Computer Science
Replies
13
Views
1K
  • Engineering and Comp Sci Homework Help
Replies
8
Views
2K
  • General Math
Replies
3
Views
5K
  • Programming and Computer Science
Replies
1
Views
5K
  • Electromagnetism
Replies
11
Views
3K
  • Calculus and Beyond Homework Help
Replies
1
Views
1K
Back
Top