[Ubuntu-BD] The compiled program in g++ didn't give complete output in the terminal or any output file.

Pavel Sayekat pavelsayekat at gmail.com
Thu Jan 26 14:34:51 UTC 2012


I did a c++ code for solving a third order D.E. as follows:

/*By this program we will find out the initial condition.

/*The initial condition (when t=0) of the third order nonlinear ODE*/

/*Date: 23.01.2012*/

#include <stdio.h>

#include <math.h>

// FILE *fp;

 #define N 3

 int rk();

 int sub();

 int i, m;

 float F[N], K[4][N], temp[N],V[N], T_limit=5.1, h=0.5, T=0., e=0.1, c1,
c2, c3, lm=.8, x, x0, x1, x2;

   // Y[N] is the initial value of the dependent variable of our original
equation.

   // T (time) is the independent variable of our original equation.

   // K is used for iteration of Runge Katta Method.

   // T_limit is used as the final value of T (time)

int main()

 {

 float a0=0.4, b0=0.2, c0=0.1;

        float y0, y1, y2, z0, z1, z2;

 float k,j;

 float r, m1, m2, m3, m4, m5, m6, m7, m8, m9;

 float p1, p2, p3;

 float q1, q2;

 for (j=2.5;j<=10;j=j+0.2)

 {

 printf("\n");

 k=j;

// printf("Enter a +ve value of the root, k=");

      //k means lamda

// scanf("%f", &k);

  //r=-1/(k*k);

         //m1=2/(k*k*k);

   m2=18/pow(k,4);

   m3=72/pow(k,5);

   m4=120/pow(k,6);

   //m5=1/pow(k,3);

   //m6=12/pow(k,4);

   m7=m3;

   m8=240/pow(k,6);

   m9=360/pow(k,7);

             p1=-1/(k*k);

           p2=-6/pow(k,3);

           p3=-12/pow(k,4);

     q1=-2/pow(k,2);

     q2=-6/pow(k,3);

 y0=a0;

 z0=e*(b0*c0*m4+c0*c0*m9);

 x0=y0+z0;

 y1=-k*a0+e*(a0*a0*p1+a0*b0*p2+(b0*b0+2*c0*a0)*p3)+b0;

 z1=e*(-2*k*(b0*c0*m4+c0*c0*m9)+b0*c0*m3+c0*c0*m8);

 x1=y1+z1;

 y2=k*k*a0-3*e*k*(a0*a0*p1+a0*b0*p2+(b0*b0+2*c0*a0)*p3)-2*k*b0+2*e*(a0*b0*q1+(b0*b0+2*c0*a0)*q2)+2*c0;

 z2=e*(4*k*k*(b0*c0*m4+c0*c0*m9)-4*k*(b0*c0*m3+c0*c0*m8)+2*b0*c0*m2+2*c0*c0*m7);

        x2=y2+z2;

 printf("\n\t\t x0=%f \n\t\t x1=%f \n\t\t x2=%f", x0, x1, x2);

 printf("\n");

 printf("\n");

 sub();

 }

return 0;

}

 int sub()

 {

 c1=-3.0*lm; //sum of the A.U. roots.

 c2=3.0*lm*lm; //sum of the product of the roots taken two at a time

 c3=-lm*lm*lm; //product of the roots

// fp=fopen("learn1.dat", "w");

 V[0]=x0;

 V[1]=x1;

 V[2]=x2;

// printf("initial value\n");

// for (i=0; i<N; i++)

// {

// printf("Y[%d]=",i);

// scanf("%f", (Y+i));

// }

 do

 {

 printf ("%.2f\t",T);

// fprintf(fp, "%.2f\n", T);

 x=V[0];

 for(i=0; i<N; i++)

 {

 temp[i]=V[i];

 printf("%f\t",V[i]);

 }

 printf("%f\n",x);

// fprintf(fp, "%f\n", x);

 for(m=0; m<4; m++)

 {

 F[0]=V[1];

 F[1]=V[2];

 F[2]=-c3*V[0]-c2*V[1]-c1*V[2]-e*V[0]*V[0]*V[0];

 rk();

 }

 } while(T<T_limit+h);

 return 0;

 }

 int rk()

 {

 for(i=0; i<N; i++)

 {

 K[m][i]=F[i];

 if (m==0 || m==1)

 V[i]=temp[i]+.5*h*K[m][i];

 else if(m==2)

 V[i]=temp[i]+h*K[m][i];

 else V[i]=temp[i]+(K[0][i]+2*K[1][i]+2*K[2][i]+K[3][i])*h/6.;

 }

 if (m==0 || m==2)

 T=T+.5*h;

 return 0;

 }

But the compiled program gave me this

   x0=0.401573
   x1=-0.814725
   x2=1.773615

0.00 0.401573 -0.814725 1.773615 0.401573
0.50 0.369061 1.085164 6.471668 0.369061
1.00 2.058680 6.524188 16.426159 2.058680
1.50 7.990735 18.327394 27.232946 7.990735
2.00 18.454220 7.876439 -167.319901 18.454220
2.50 -28.053253 -251.635757 -664.048889 -28.053253
3.00 556.427917 14110.076172 153872.875000 556.427917
3.50 -71204488.000000 -11171593216.000000 1046708024770560.000000
-71204488.000000
4.00 24474019397295355228848128.000000 -inf -inf
24474019397295355228848128.000000
4.50 -nan -nan -nan -nan
5.00 -nan -nan -nan -nan
5.50 -nan -nan -nan -nan

   x0=0.400964
   x1=-0.890924
   x2=2.096703

6.00 0.400964 -0.890924 2.096703 0.400964

   x0=0.400612
   x1=-0.968352
   x2=2.455168

6.50 0.400612 -0.968352 2.455168 0.400612

   x0=0.400401
   x1=-1.046550
   x2=2.847923

7.00 0.400401 -1.046550 2.847923 0.400401

   x0=0.400270
   x1=-1.125250
   x2=3.274284

7.50 0.400270 -1.125250 3.274284 0.400270

   x0=0.400187
   x1=-1.204286
   x2=3.733802

8.00 0.400187 -1.204286 3.733802 0.400187

   x0=0.400131
   x1=-1.283556
   x2=4.226174

8.50 0.400131 -1.283556 4.226174 0.400131

   x0=0.400094
   x1=-1.362993
   x2=4.751190

9.00 0.400094 -1.362993 4.751190 0.400094

   x0=0.400069
   x1=-1.442549
   x2=5.308702

9.50 0.400069 -1.442549 5.308702 0.400069

   x0=0.400051
   x1=-1.522195
   x2=5.898601

10.00 0.400051 -1.522195 5.898601 0.400051

   x0=0.400039
   x1=-1.601908
   x2=6.520808

10.50 0.400039 -1.601908 6.520808 0.400039

   x0=0.400029
   x1=-1.681673
   x2=7.175263

11.00 0.400029 -1.681673 7.175263 0.400029

   x0=0.400023
   x1=-1.761478
   x2=7.861919

11.50 0.400023 -1.761478 7.861919 0.400023

   x0=0.400018
   x1=-1.841314
   x2=8.580742

12.00 0.400018 -1.841314 8.580742 0.400018

   x0=0.400014
   x1=-1.921176
   x2=9.331702

12.50 0.400014 -1.921176 9.331702 0.400014

   x0=0.400011
   x1=-2.001059
   x2=10.114779

13.00 0.400011 -2.001059 10.114779 0.400011

   x0=0.400009
   x1=-2.080957
   x2=10.929955

13.50 0.400009 -2.080957 10.929955 0.400009

   x0=0.400007
   x1=-2.160870
   x2=11.777213

14.00 0.400007 -2.160870 11.777213 0.400007

   x0=0.400006
   x1=-2.240794
   x2=12.656545

14.50 0.400006 -2.240794 12.656545 0.400006

   x0=0.400005
   x1=-2.320727
   x2=13.567937

15.00 0.400005 -2.320727 13.567937 0.400005

   x0=0.400004
   x1=-2.400669
   x2=14.511384

15.50 0.400004 -2.400669 14.511384 0.400004

   x0=0.400003
   x1=-2.480617
   x2=15.486879

16.00 0.400003 -2.480617 15.486879 0.400003

   x0=0.400003
   x1=-2.560571
   x2=16.494415

16.50 0.400003 -2.560571 16.494415 0.400003

   x0=0.400002
   x1=-2.640530
   x2=17.533987

17.00 0.400002 -2.640530 17.533987 0.400002

   x0=0.400002
   x1=-2.720493
   x2=18.605595

17.50 0.400002 -2.720493 18.605595 0.400002

   x0=0.400002
   x1=-2.800460
   x2=19.709229

18.00 0.400002 -2.800460 19.709229 0.400002

   x0=0.400001
   x1=-2.880430
   x2=20.844889

18.50 0.400001 -2.880430 20.844889 0.400001

   x0=0.400001
   x1=-2.960402
   x2=22.012573

19.00 0.400001 -2.960402 22.012573 0.400001

   x0=0.400001
   x1=-3.040378
   x2=23.212278

19.50 0.400001 -3.040378 23.212278 0.400001

   x0=0.400001
   x1=-3.120355
   x2=24.444002

20.00 0.400001 -3.120355 24.444002 0.400001

   x0=0.400001
   x1=-3.200335
   x2=25.707743

20.50 0.400001 -3.200335 25.707743 0.400001

   x0=0.400001
   x1=-3.280316
   x2=27.003500

21.00 0.400001 -3.280316 27.003500 0.400001

   x0=0.400001
   x1=-3.360298
   x2=28.331272

21.50 0.400001 -3.360298 28.331272 0.400001

   x0=0.400001
   x1=-3.440282
   x2=29.691055

22.00 0.400001 -3.440282 29.691055 0.400001

   x0=0.400000
   x1=-3.520268
   x2=31.082853

22.50 0.400000 -3.520268 31.082853 0.400000

   x0=0.400000
   x1=-3.600254
   x2=32.506660

23.00 0.400000 -3.600254 32.506660 0.400000

   x0=0.400000
   x1=-3.680242
   x2=33.962475

23.50 0.400000 -3.680242 33.962475 0.400000

   x0=0.400000
   x1=-3.760230
   x2=35.450302

24.00 0.400000 -3.760230 35.450302 0.400000

But every iteration should give me a little more detailed output like the
first one, for instance:

   x0=0.401573
   x1=-0.814725
   x2=1.773615

0.00 0.401573 -0.814725 1.773615 0.401573
0.50 0.369061 1.085164 6.471668 0.369061
1.00 2.058680 6.524188 16.426159 2.058680
1.50 7.990735 18.327394 27.232946 7.990735
2.00 18.454220 7.876439 -167.319901 18.454220
2.50 -28.053253 -251.635757 -664.048889 -28.053253
3.00 556.427917 14110.076172 153872.875000 556.427917
3.50 -71204488.000000 -11171593216.000000 1046708024770560.000000
-71204488.000000
4.00 24474019397295355228848128.000000 -inf -inf
24474019397295355228848128.000000
4.50 -nan -nan -nan -nan
5.00 -nan -nan -nan -nan
5.50 -nan -nan -nan -nan.


More information about the ubuntu-bd mailing list