octopussheng 发表于 2007-7-17 11:07

张琪昌编的<分岔与混沌理论及应用>附录的后两个程序

看了论坛已经有了这本书附录中中心流形的计算程序,虽然有点问题,很多方程不能算,但是后面两个程序还没有经过大家的测试,先贴出来,免得大家敲程序,呵呵,很累的哦!

关于第一个中心流形计算程序,我把例4.4.1中korder取为3的时候,也会出来很有意思的结果,虽然是错误的,请有想法的朋友也试一下吧!

用别的系统,出不来结果!谁让咱的mathematica学的不咋样,刚开始接触!:@L :@L

言归正传
附录2——5.6 计算高阶规范形的周期平均法
"The first three lines are the parameters and function determined by the system"
"The last line is the results which is saved with the filename lf in the current
directory. The first part of olf is , and the second part of olf is , wich is the
high order averaging equations."
k=The order of the high order averaging equation
w=Natural frequency of the nonlinear oscillator
f={0,The nonlinear function}
y={y1,y2}
eta={{Cos,Sin},{-Sin,Cos}}
x=eta.y
x1=x[]
x2=x[]
enta=Simplify]
g=enta.f>>og
ff=Table
gg=Table
hh=Table
dh=Table
dhf={0,0}
lf={0,0}
gg[]=g/.ep->0>>og1
tt=2 Pi/w
fit={{Cos,Sin},{-Sin/r,Cos/r}}
ff[]=1/tt Integrate],{t,0,tt}];
lf=Simplify]/.{y1->r Cos,y2->r Sin}]];
Do[
   yy1=y1;
   yy2=y2;
   hh[]=1/tt Integrate]-ff[])/.t->(t+tao),{tao,0,tt}];
   dh[]=Outer],{y1,y2}];
   Do[
      yy1=yy1+ep^j hh[]
   ,{j,1,i-1}];
   Do[
      yy2=yy2+ep^j hh[]
   ,{j,1,i-1}];
   Do[
      dhf=dhf+dh[].ff[]
   ,{j,1,i-1}];
   gg[]=(1/(i-1)! D/.ep->0)-dhf;
   ff[]=1/tt Integrate],{t,0,tt}];
   lf=lf+ep^(i-1) Simplify]/.{y1->rCos,y2->rSin}]]
,{i,2,k}]
ep lf>>olf

[ 本帖最后由 无水1324 于 2007-7-17 11:42 编辑 ]

octopussheng 发表于 2007-7-17 11:09

5.9 计算半单系统规范形的通用程序方法


Print["***********************************************************"];
Print["               Read the input functions                  "];
Print["***********************************************************"];
SetDirectory["path"];
ReadList["file"];
Print["***********************************************************"];
Print["Transform the real functions form to complex functions form"];
Print["***********************************************************"];
epsilon=\;
FA=Table;
F=Table,{i,1,n}];
X=Table,{i,1,n}];
U=Table,{i,1,n}];
Jacobi:=Outer
A=Jacobi;;
Do[
   A=A/.{x->0};
,{k,1,n}]
B=Eigenvalues;
Table=0,{k,1,n}];
Do[
   If]]!=0,
      bb=1/2;,
      bb=1;];
,{k,1,n}];
BC=DiagonalMatrix,{k,1,n}]];
EV=Eigenvectors;
EV=Transpose.BC;
IEV=Inverse;
X=EV.U;
Do[
   x=X[]
,{i,n}]
F=IEV.F;
J0=DiagonalMatrix;
F=F-J0.U;
Do[
   FFI=CoefficientList],\];
   le=Length];
   Do[
      fci=Part,k1];
      Do[
         fci=fci/.{u->v};
      ,{k,1,n}];
   ,{k1,1,le}];
,{i,1,n}];
Print["***********************************************************"];
Print["   Compute the normal form and nonlinear transformation    "];
Print["***********************************************************"];
Co3_:=D,{u,nk}]/nk!
ne_:=j-Sum,{i,1,k-1}];
Table=0,{i,n,8}];
Table=0,{i,1,n}];
Do=Table,{j,0,norder-1}];
Do=Table,{j,0,norder-1}];
Do[
   If[j>2,
      Do[
         Do[
            fc=fci;
            If[k1<j,
               Do=u+Sum[\^j1* TP[],{j1,1,j-k1}],{k,1,n}];
               Do=fc/.{v->vv};,{i,1,n}];
               Do=fc/.{v->vv};,{i,1,n}];
            ];
         ,{k1,2,le}];
         FF=Table,{k1,2,le}];
         EE=Table^i,0],{i,1,le-1}];
         f=FF.EE;
      ,{k,1,n}];
      F=Table,{i,1,n}];
      Do=CofficientList],\],{i,1,n}];
      Do=FFI,{i,1,n}];
   ];
   Do=Length],{k,1,n}];
   Do,g=0;,g=Part,j]];,{k,1,n}];
   FA=Sum,U].TNF,{j1,1,j-2}];
   If;];
   Table=0,{k,n}];
   Table=0,{k,n}];
   Do[
      Do[
         Do[
            Do[
               Do[
                  Do[
                     Do[
                        Do[
                           nk=j-Sum,{i,1,n-1}];
                           Do[
                              nn=Sum*10^(n-i),{i,1,n}]+10^n;
                              b=g-FA[];
                              Do=Co3,{i,1,n}];
                              \=Sum]*nk,{i,1,n}]-B[];
                              If[
                                 \==0,
                                 un=b;
                                 hp=0;
                                 hp=b/\;
                                 un=0;
                                 ];
                              xs=Product^nk,{i,1,n}];
                              p=p+hp*xs;
                              nf=nf+un*xs;
                           ,{k,1,n}];
                        ,{nk,0,ne}];
                     ,{nk,0,ne}];
                  ,{nk,0,ne}];
               ,{nk,0,ne}];
            ,{nk,0,ne}];
         ,{nk,0,ne}];
      ,{nk,0,ne}];
   ,{nk,0,j}];
   TP=Table,{k,1,n}];
   TNF=Table,{k,1,n}];
,{j,2,norder}];

"************************************************************"
"             The normal form in complex form               ";
"**********************************************************" ;
"****************************************************">>d.txt;
"         The normal form in complex form         ">>>d.txt;
"***************************************************">>>d.txt;
Do[
   tf=Sum[\^jTNF,{j,1,norder-1}][]
,{k,1,n}];
Do[
   "D<>"],t]=">>>d.txt;
   tf=B[]*u+tf>>>d.txt;
,{i,1,n}];

"***************************************************">>>d.txt;
"      Transform back to system in real form      ">>>d.txt;
"***************************************************">>>d.txt;
Clear;
X=Table,{i,1,n}];
F=Simplify,{i,1,n}]];
Do->y};,{k,1,n}];
Y=IEV.X;
Do=Y[],{k,1,n}];
"D=">>>d.txt
F1=Simplify>>>d.txt

"***************************************************">>>d.txt;
"      Transform back to system in Polar form       ">>>d.txt;
"***************************************************">>>d.txt;
conjug=Complex_:>Complex;
nz=0;ni=0;cnz=0;cni=0;cm=0;
Do[
   If]]! =0,
      If]]==0,cnz=cnz+1;];,
      cm=cm+1;
      If]]==0,nz=nz+1;];
   ];
,{k,n}];
sm=n-cm;
ni=(cm-nz)/2;
cni=(cm-cnz)/2;
k2=0;k1=0;
Do[
   If]]>0,
       k2=k1+1;
       v=r Exp];,
       If]]==0,
         v=u;,
         k1=k1+1;
         v=r Exp[-I \];
       ];
   ];
,{k,n}];
k1=0;k2=0;nzn=nz+cnz;
Do[
   If]]==0,
       ga=tf;
       Do->v};,{i,1,n}];
       k2=k2+1;
       "D<>"],t]=">>>d.txt;
       g=Expand]]>>>d.txt;
       If]]<0,
         ga=tf;
         Do->v};,{i,1,n}];
         k1=k1+1;
         gc=ga Exp];
         gd=gc/.conjug;
         "D<>"],t]=">>>d.txt;
         g=Expand]]]>>>d.txt;
         "D[\["<>ToString<>"],t]=">>>d.txt;
         g=Expand)]]]]>>>d.txt;
       ];
   ];
,{k,n}];

[ 本帖最后由 无水1324 于 2007-7-17 11:43 编辑 ]

无水1324 发表于 2007-7-17 11:41

回复 #2 octopussheng 的帖子

与另外的帖子重复没有?

octopussheng 发表于 2007-7-17 13:43

没有,我看那个只有第一个中心流形的计算程序,不放心无水可以检查一下,呵呵!

无水1324 发表于 2007-7-17 13:48

原帖由 octopussheng 于 2007-7-17 13:43 发表 http://www.chinavib.com/forum/images/common/back.gif
没有,我看那个只有第一个中心流形的计算程序,不放心无水可以检查一下,呵呵!

一直没有时间做这个问题,最近在用奇异性理论分析,遇到很多困难,看书还是模糊的

octopussheng 发表于 2007-7-17 13:52

奇异性理论我就看过一遍,因为暂时没有用上,所以就没有太用心去看,呵呵!

中心流形、规范形理论倒是看的仔细点!

不过现在规范形还是没有用好!还在学习!
页: [1]
查看完整版本: 张琪昌编的<分岔与混沌理论及应用>附录的后两个程序