⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bifurcation_coexist_attractors.cpp

📁 在多吸引子的情况下, 求解系统完整的分岔图
💻 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 + -