📄 bifurcation_coexist_attractors.cpp
字号:
/*
动力系统的分岔图,对于研究系统的变化意义很大
下面是在多吸引子的情况下, 求解系统完整的分岔图- By Zou Hailin
*/
#include <iostream.h>
#include <fstream.h>
double A,B; /// 定义全局变量, 为映射的参数
void main()
{
void map(double *temp);
ofstream of("bifur_data.txt");
double temp[2];
/// 作为例子, 固定B=0.5, 使A变化
B=0.5;
long N=600; /// 讲变化参数区间分成N段
for(long i=0;i<=N;i++)
{
cout<<i<<" "<<N<<endl;
A=0.0+i*3.0/(double)N;
for(long j=0;j<6;j++)
{
for(long k=0;k<6;k++)
{
temp[0]=-3.0+j*6.0/6.0; //// 因为考虑多吸引子, 所以初始点散布在一二维区间上
temp[1]=-3.0+k*6.0/6.0;
for(long t=0;t<5000;t++)
{
map(temp);
////// 考虑是否发散
if(temp[0]>100||temp[0]<-100||temp[1]>100||temp[1]<-100)
{
continue; ///跳出循环
}
else
{
if(t>4950)///除去瞬态, 保留50步稳态
{
of<<A<<" "<<temp[0]<<endl; ///获取分岔图的数据
}
}
}
}
}
}
/////////////////////// 结果保留在 bifru_data.txt 文件中, 用其它画图软件就可画出分岔图: origin, matlab, maple等.
}
void map(double *temp)
{
double x1,x2;
x1=temp[0];
x2=temp[1];
///////////////////// 二维动力系统, 可以改成自己定义的. 也可以很简单地推广到三维
//Henon
double tp;
tp=x1;
x1=A-x1*x1+B*x2;
x2=tp;
//////////////// 二维动力系统结束
temp[0]=x1;
temp[1]=x2;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -