声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2941|回复: 5

[稳定性与分岔] 关于滚动轴承-转子系统非线性动力学程序方面的一些问题

[复制链接]
发表于 2017-12-14 16:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下面这个程序有点小问题,麻烦各位能否改一下,其中庞加莱图算出的数据总是不太多,而且画出的图有点问题
  1. #include "stdio.h"
  2. #include "math.h"
  3. #include "conio.h"
  4. #include<stdlib.h>
  5. #define PI 3.1415926
  6. #define Epsilon  1.0e-7
  7. #define Epsilon1 1.0e-6
  8. #define g 9.8
  9. double TimeSup,xtTimeInf,pklTimeStart;
  10. double M;
  11. int NN;/* Di NN Ge Poincare JieMian*/
  12. double h,w;
  13. double G,e,b,w0,bc,wc,p;
  14. double m,c,q,k1,kc,f1,u,s,kn;

  15. double ss,W,kb,game,n_rotor,w_rotor,w_c,omega;

  16. double hh,hh2;
  17. double t,tt,phi;
  18. static double y[10],f[10],F[2],sita[10],clearance[10];               

  19. static double sta[10],stb[10];
  20. int n1;
  21. static double k[10][5];
  22. void cca(); void hfa();  void ccb();void hfb();
  23. void ccc(); void hfc();
  24. void R_K();  void chR_K();    void equation();
  25. void pkl2pi();
  26. main()
  27. {
  28.   FILE *y1y2,*y1y3,*y3y4;
  29.   FILE *y1t,*y2t,*y3t,*y4t;
  30.   FILE *pkly1y2,*pkly1y3,*pkly3y4;

  31.   int i;

  32.   printf("Please wait... ...\n");
  33.   y1y2=fopen("3 y1y2.txt","w");
  34.   y1y3=fopen("3 y1y3.txt","w");
  35.   y3y4=fopen("3 y3y4.txt","w");

  36.   y1t=fopen("3 y1t.txt","w");
  37.   y2t=fopen("3 y2t.txt","w");
  38.   y3t=fopen("3 y3t.txt","w");
  39.   y4t=fopen("3 y4t.txt","w");

  40.   pkly1y2=fopen("3 pkly1y2.txt","w");
  41.   pkly1y3=fopen("3 pkly1y3.txt","w");
  42.   pkly3y4=fopen("3 pkly3y4.txt","w");
  43. /***************** parameter start  **************/
  44.   M=4;h=PI/512;
  45.    m=0.9;c=300.0;kb=7.055e9;game=20.0e-6;W=20.0;
  46.   n_rotor=21500;
  47.   w_rotor=n_rotor*PI/30.0;        //×a&#203;ù×a&#187;&#187;&#206;a&#189;&#199;&#203;ù&#182;è
  48.   w0=sqrt(kb*sqrt(game)/(m));
  49.   w_c=0.4*w_rotor;            
  50.   e=c/(m*w0);
  51.   ss=kb*pow(game,1.5);
  52.   omega=w_rotor/w0;
  53.   y[1]=0.0;y[2]=0.0;y[3]=0.0;y[4]=0.0;
  54.   
  55.   TimeSup=1100.0;xtTimeInf=TimeSup-100;
  56.   pklTimeStart=0.0;
  57. /***************** parameter end  ****************/

  58.   hh=h;hh2=hh/2.0;
  59.   tt=0.0;t=0.0;NN=1;
  60.    
  61.   equation();
  62.   cca();
  63.   while(tt<=TimeSup)
  64.   {
  65.     chR_K();
  66.    
  67.     if(tt>xtTimeInf)
  68.     {
  69.       fprintf(y1y2,"%-16.8f%-16.8f\n",y[1],y[2]);
  70.       fprintf(y1y3,"%-16.8f%-16.8f\n",y[1],y[3]);
  71.       fprintf(y3y4,"%-16.8f%-16.8f\n",y[3],y[4]);

  72.       fprintf(y1t,"%-16.8f%-16.8f\n",tt,y[1]);
  73.       fprintf(y2t,"%-16.8f%-16.8f\n",tt,y[2]);
  74.       fprintf(y3t,"%-16.8f%-16.8f\n",tt,y[3]);
  75.       fprintf(y4t,"%-16.8f%-16.8f\n",tt,y[4]);
  76.     }
  77.     //if(tt>xtTimeInf)
  78.     if(tt-NN*2*PI<0.0&&-1*tt+NN*2*PI<=h)
  79. {
  80.   cca();
  81.   { int temp1=0;double temp2=1.0;
  82.     while(temp1!=1.0)
  83.     { chR_K();
  84.       if(tt<NN*2*PI)ccc();
  85.       if(tt>NN*2*PI)
  86.       {
  87.     while(temp2>Epsilon)
  88.     {if(tt<NN*2*PI)
  89.       ccc();
  90.       if(tt>NN*2*PI)
  91.       { hfc();
  92.         hh=hh/10.0;hh2=hh/2.0;
  93.       }
  94.       R_K();
  95.       temp2=fabs(tt-NN*2*PI);
  96.        }
  97.        hh=h;hh2=hh/2.0;temp1=1.0;
  98.        if(tt>xtTimeInf)
  99.        {
  100.      fprintf(pkly1y2,"%-16.8f%-16.8f\n",y[1],y[2]);
  101.      fprintf(pkly1y3,"%-16.8f%-16.8f\n",y[1],y[3]);
  102.      fprintf(pkly3y4,"%-16.8f%-16.8f\n",y[3],y[4]);
  103.    
  104.        }
  105.        NN++;
  106.        hfa();
  107.     }
  108.    }
  109.   }
  110. }

  111. printf("%-16.8f\n",tt);
  112.   }

  113. printf("Over!\n");
  114. getch();
  115. }

  116. void cca()
  117. {
  118.   int i;
  119.   sta[0]=t;
  120.   for(i=1;i<=M;i++)sta[i]=y[i];
  121.   sta[5]=tt;
  122. }
  123. void hfa()
  124. {
  125.   int i;
  126.   t=sta[0];
  127.   for(i=1;i<=M;i++)y[i]=sta[i];
  128.   tt=sta[5];
  129. }
  130. void ccb()
  131. {
  132.   int i;
  133.   stb[0]=t;
  134.   for(i=1;i<=M;i++)stb[i]=y[i];
  135.   stb[5]=tt;
  136. }
  137. void hfb()
  138. {
  139.   int i;
  140.   t=stb[0];
  141.   for(i=1;i<=M;i++)y[i]=stb[i];
  142.   tt=stb[5];
  143. }
  144. void ccc()   /* only usefully to 2*PI/w poincare*/
  145. { int i;
  146.   stb[0]=t;
  147.   for(i=1;i<=M;i++)stb[i]=y[i];
  148.   stb[5]=tt;
  149. }
  150. void hfc()
  151. { int i;t=stb[0];
  152.   for(i=1;i<=M;i++)y[i]=stb[i];
  153.   tt=stb[5];
  154. }
  155. void chR_K()
  156. {
  157.   long l,temp=1;
  158.   double Delta=1.0;
  159.   double tempy2;
  160.   hh=h;hh2=hh/2.0;
  161.   ccb();
  162.   R_K();
  163.   while(Delta>Epsilon1)
  164.   {
  165.     tempy2=y[2];
  166.     hh=hh/2.0;hh2=hh/2.0;
  167.     hfb();
  168.     temp=2*temp;
  169.     for(l=1;l<=temp;l++)R_K();
  170.     Delta=fabs(y[2]-tempy2)/15.0;
  171.   }
  172.   hh=h;
  173.   hh2=hh/2.0;
  174. }
  175. void R_K()
  176. {
  177.   int i;
  178.   tt=tt+hh;
  179.   equation();
  180.   for(i=1;i<=M;i++)
  181.   {
  182.     k[i][1]=hh*f[i];
  183.       k[i][0]=y[i];
  184.       y[i]=k[i][0]+1.0/2.0*k[i][1];
  185.   }
  186.   t=t+hh2;
  187.   equation();
  188.   for(i=1;i<=M;i++)
  189.   {
  190.     k[i][2]=hh*f[i];
  191.       y[i]=k[i][0]+1.0/2.0*k[i][2];
  192.   }
  193.   equation();
  194.   for(i=1;i<=M;i++)
  195.   {
  196.     k[i][3]=hh*f[i];
  197.       y[i]=k[i][0]+k[i][3];
  198.   }
  199.   t=t+hh2;
  200.   equation();
  201.   for(i=1;i<=M;i++)
  202.     k[i][4]=hh*f[i];
  203.   for(i=1;i<=M;i++)
  204.     y[i]=k[i][0]+(k[i][1]+2.0*k[i][2]+2.0*k[i][3]+k[i][4])/6.0;
  205. }

  206. void pkl2pi(FILE *pkly1y2,FILE *pkly1y3,FILE *pkly3y4)
  207. {
  208. if(tt-NN*2*PI<0.0&&-1*tt+NN*2*PI<=h)
  209. {
  210.   cca();
  211.   { int temp1=0;double temp2=1.0;
  212.     while(temp1!=1.0)
  213.     { chR_K();
  214.       if(tt<NN*2*PI)ccc();
  215.       if(tt>NN*2*PI)
  216.       {
  217.     while(temp2>Epsilon)
  218.     {if(tt<NN*2*PI)
  219.       ccc();
  220.       if(tt>NN*2*PI)
  221.       { hfc();
  222.         hh=hh/10.0;hh2=hh/2.0;
  223.       }
  224.       R_K();
  225.       temp2=fabs(tt-NN*2*PI);
  226.        }
  227.        hh=h;hh2=hh/2.0;temp1=1.0;
  228.        if(tt>pklTimeStart)
  229.        {
  230.      fprintf(pkly1y2,"%-16.8f%-16.8f\n",y[1],y[2]);
  231.      fprintf(pkly1y3,"%-16.8f%-16.8f\n",y[1],y[3]);
  232.      fprintf(pkly3y4,"%-16.8f%-16.8f\n",y[3],y[4]);
  233.      printf("%-16.8f\n",tt);
  234.        }
  235.        NN++;
  236.        hfa();
  237.     }
  238.    }
  239.   }
  240. }
  241. }

  242. void equation()
  243. {

  244.   int i,j,k;
  245.   
  246.   for(j=0;j<=1;j++)
  247.       F[j]=0.0;
  248.   for(k=1;k<=9;k++)
  249.   {
  250.       sita[k]=0.0;
  251.       clearance[k]=0.0;
  252.   }
  253.   for(i=1;i<=9;i++)
  254.   {
  255.       sita[i]=2*PI*(i-1)/9+w_c*t;
  256.       clearance[i]=y[3]*sin(sita[i])+y[1]*cos(sita[i])-game;
  257.       if(clearance[i]<=0)
  258.           clearance[i]=0;
  259.          
  260.       F[0]=F[0]+kb*pow(clearance[i],1.5)*cos(sita[i]);
  261.       F[1]=F[1]+kb*pow(clearance[i],1.5)*sin(sita[i]);
  262.   }

  263.   f[1]=y[2];
  264.   f[2]=-(c/m)*y[2]+W/m-F[0]/m;
  265.   f[3]=y[4];
  266.   f[4]=-(c/m)*y[4]-F[1]/m;
复制代码
回复
分享到:

使用道具 举报

 楼主| 发表于 2017-12-14 16:18 | 显示全部楼层
本帖最后由 佩刀 于 2017-12-14 16:26 编辑

其中图形如下 QQ截图20171214162444.png QQ截图20171214162511.png
 楼主| 发表于 2017-12-14 16:28 | 显示全部楼层
程序后面少了一个“}”
发表于 2018-1-18 16:18 | 显示全部楼层
楼主,你好,我对你这个庞加莱图挺感兴趣的,能指导一下你的这个程序参数定义部分的含义吗?谢谢!
发表于 2018-1-18 16:21 | 显示全部楼层
M=4;h=PI/512;
m=0.9;c=300.0;kb=7.055e9;game=20.0e-6;W=20.0;

发表于 2018-7-11 13:07 | 显示全部楼层
for(i=1;i<=9;i++)
  {
      sita[i]=2*PI*(i-1)/9+w_c*t;
      clearance[i]=y[3]*sin(sita[i])+y[1]*cos(sita[i])-game;
      if(clearance[i]<=0)
          clearance[i]=0;
         
      F[0]=F[0]+kb*pow(clearance[i],1.5)*cos(sita[i]);
      F[1]=F[1]+kb*pow(clearance[i],1.5)*sin(sita[i]);


我觉得这段程序与理论实际不符。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 06:47 , Processed in 0.074126 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表