00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #include "ga_bistable.h"
00015
00016 void ode1(double time,double * u,double * du,void * data)
00017 {
00018 Parameters * p = (Parameters*)data;
00019 double * k = (*p).params;
00020 double * a = (*p).alphas;
00021 double r0 = k[2] - k[3]*u[0],
00022 r1 = k[4] - k[5]*u[1],
00023 r2 = k[0]*u[0]*u[0]*u[1] - k[1]*u[0]*u[0]*u[0];
00024 du[0] = a[0]*(r0 + r2);
00025 du[1] = a[1]*(r1 - r2);
00026 }
00027
00028 void ode2(double time,double * u,double * du,void * data)
00029 {
00030 Parameters * p = (Parameters*)data;
00031 double * k = (*p).params;
00032 double * a = (*p).alphas;
00033 double r0 = k[0]/(k[1] + pow(u[1],4)) - k[2]*u[0],
00034 r1 = k[3]/(k[4] + pow(u[0],4)) - k[5]*u[1];
00035 du[0] = a[0]*r0;
00036 du[1] = a[1]*r1;
00037 }
00038
00039 int main()
00040 {
00041 int i;
00042 double iv[] = { 1.8, 2.3 };
00043 Parameters * p;
00044 BistablePoint bis;
00045
00046
00047 bis = makeBistable(2,6,iv,30,2000,&(ode1));
00048
00049 p = bis.param;
00050 if (!p) return 0;
00051 if (bis.unstable)
00052 {
00053 printf("\nunstable steady state: ");
00054 for (i=0; i < (*p).numVars; ++i)
00055 printf("%lf ",bis.unstable[i]);
00056
00057 free(bis.unstable);
00058 }
00059 else
00060 {
00061 printf("no unstable state\n");
00062 }
00063
00064 if (bis.stable1 || bis.stable2)
00065 {
00066 if (bis.stable1)
00067 {
00068 printf("\nstable steady state: ");
00069 for (i=0; i < (*p).numVars; ++i)
00070 printf("%lf ",bis.stable1[i]);
00071
00072 free(bis.stable1);
00073 }
00074 if (bis.stable2)
00075 {
00076 printf("\nstable steady state: ");
00077 for (i=0; i < (*p).numVars; ++i)
00078 printf("%lf ",bis.stable2[i]);
00079
00080 free(bis.stable2);
00081 }
00082 }
00083 else
00084 {
00085 printf("no stable states\n");
00086 }
00087
00088 printf("\nparameters: ");
00089 for (i=0; i < (*p).numParams; ++i)
00090 {
00091 printf("%lf ",(*p).params[i]);
00092 }
00093 printf("\n");
00094 printf("\nalphas: ");
00095 for (i=0; i < (*p).numVars; ++i)
00096 {
00097 printf("%lf ",(*p).alphas[i]);
00098 }
00099 printf("\n");
00100
00101 deleteGAindividual(p);
00102
00103 return 0;
00104 }