de94r_c.zip, de94d_c.zip, de96r_c.zip, de96d_c.zip, de90r_c.zip, de90d_c.zip, de92r_c.zip, de92d_c.zip

tde94r_c.zip, tde94d_c.zip, tde96r_c.zip, tde96d_c.zip , tde90r_c.zip, tde90d_c.zip, tde92r_c.zip, tde92d_c.zip

de94r_c (: de96r_c, de90r_c, de92r_c)

  M

                                Y ' =  F( X, Y ) ,

          Y = ( y1, ..., yM ) ,   F = ( f1 ( X, y1, ..., yM ), ..., fM ( X, y1, ..., yM ) ) 

.

YX Xn Xn + H. , .   P ( ), ,  - .   H , .

 ..,  ..  A -  . . : "", 1975.

. . . .. .: "", 1979.

    int de94r_c(real *f, S_fp fj, S_fp fx, integer *m,
                integer *jstart, real *hmin, real *eps, real *p, real *yx, real *x,
                real *h, logical *bul, real *xp, real *yp, real *a, real *a1,
                real *a2, real *rab, real *r1, real *r2, real *r3, real *r4,
                real *yd, integer *ierr)

f - . :
int f (float *x, float *y, float *dy, int *m).
x, y - , . dy; , .. m ≠ 1,   y dy   m (   x, y dy: );
fj - ∂f / ∂y . :
int fj (float *x, float *y, float *z, int *m).
x, y - , . , .. m ≠ 1, y m, z - m * m. ∂f / ∂y z,   i -    j -  y ( j ) z ( i, j )( x, y z: );
fx - x ∂f / ∂x. :
int fx (float *x, float *y, float *z1, int *m).
: x, y - , . , .. m ≠ 1, y z1 m. x ∂f / ∂x z1;   i -  z1 ( i ) ( x, y z1: );
m - (: );
jstart - , :
0,+1 - , x, yx h, ;
-1 - h / hmin;
  jstart + 1;
hmin - , (: );
eps - , (: );
p - , (: );
yx, x - ; x , yx - ; , .. m ≠ 1, yx m;
h - , ; , , , eps; h , ;
bul - , TRUE_, h , FALSE_ ; bul FALSE_, ; , .. h , bul ;
xp, yp - m, ; xp, yp , x, yx (.. );
            a -
        a1, a2  
m * m;
rab - 5 * m; m , ;
       r1, r2 -
       r3, r4  
            yd  
m;
ierr - , 65,  -  eps; h, hmin jstart = - 1.

de96r_c - . de96r_c de94r_c , de96r_c   x . de96r_c . de96r_c :

int de96r_c (real *f, integer *m, integer *jstart, real *hmin,
         real *eps, real *p, real *yx, real *x, real *h, logical *bul,
         real *xp, real *yp, real *a, real *a1, real *a2, real *rab, real *r1,
         real *r2, real *r3, real *r4, real *yd, integer *ierr) 
de96r_c de94r_c fj fx. de96r_c , de94r_c;
de90r_c - . ,   x , ..   y' = f (y) . de90r_c :
int de90r_c (real *f, S_fp fj, integer *m, integer *jstart,
         real *hmin, real *eps, real *p, real *yx, real *x, real *h,
         logical *bul, real *xp, real *yp, real *a, real *a1, real *a2,
         real *rab, real *r1, real *r2, real *yd, integer *ierr)
de90r_c de94r_c fx, r3, r4. de90r_c , de94r_c, rab. de90r_c rab 4 * m;
de92r_c - . , x, ..   y' = f (y) . de92r_c de94r_c , de92r_c  ∂f / ∂y   ∂f / ∂x . de92r_c :
int de92r_c (real *f, integer *m, integer *jstart, real *hmin,
         real *eps, real *p, real *yx, real *x, real *h, logical *bul,
         real *xp, real *yp, real *a, real *a1, real *a2, real *rab,
         real *r1, real *r2, real *yd, integer *ierr)
de92r_c de94r_c fj, fx, r3, r4. , de94r_c, rab. de92r_c rab 4 * m;
de94d_c - . , de94r_c; hmin, eps, p, yx, x, h, xp, yp, a, a1, a2, rab, r1, r2, r3, r4, yd x, y, dy, z, z1 f, fj, fx double;
de96d_c - . , de96r_c; hmin, eps, p, yx, x, h, xp, yp, a, a1, a2, rab, r1, r2, r3, r4, yd x, y, dy f double;
de90d_c - . , de90r_c; hmin, eps, p, yx, x, h, xp, yp, a, a1, a2, rab, r1, r2, yd x, y, dy, z f, fj double;
de92d_c - . , de92r_c; hmin, eps, p, yx, x, h, xp, yp, a, a1, a2, rab, r1, r2, yd x, y, dy f double.

aig2r_c - . de90r_c, de92r_c, de94r_c, de96r_c;
aig2d_c - , , . de90d_c, de92d_c, de94d_c, de96d_c;
utde20_c - de90r_c, de92r_c, de94r_c, de96r_c;
utde21_c - de90d_c, de92d_c, de94d_c, de96d_c.
  , de90r_c de92rs_c, de92rk_c; de92r_c de92rs_c, de92rk_c, de84rj_c; de94r_c de96rs_c, de92rk_c; de96r_c de96rs_c, de92rk_c, de84rj_c, de96rx_c; de90d_c de92ds_c, de92dk_c; de92d_c de92ds_c, de92dk_c, de84dj_c; de94d_c de94ds_c, de92dk_c; de96d_c de96ds_c, de92dk_c, de84dj_c, de96dx_c.

 

.

m, hmin, eps, p . f, fj, fx m, x, y .

  xn  h de94r_c . ,   x,   xn - h.  xn   xn  h > 0   xn  h < 0. f .   x < xn  (h > 0)   x < xn  (h < 0),   x  .

fj fx   x  (.. de92r_c, de96r_c, de92d_c, de96d_c),   y    x  . , , fj fx. (, , ), , , . , eps. de92r_c, de96r_c, , , .. de92d_c, de96d_c.

  x  (.. de96r_c, de96d_c), , , f x, xn, , xn - Δ, xn + Δ Δ - , eps.   x < xn    x > xn  ,   x  .

      
     

      y1' = - 100y1 
      y2' = - 100y1  - 2y2  + 20e - 100x + 2e - x cos x 
      y3' = - 100y1  + 9998y2 - 9990y3 - 10y4  + 20e - 100x + 2e - x cos x 
      y4' = - 100y1  + 9988y2  + 20y3 - 10010y4  + 20e - 100x + 2e - x cos x 

      x  =  0 ,  y1(0) = 10 ,  y2(0) = 11 ,  y3(0) = 111 ,  y4(0) = 111 . 

       :

      y1  = 10e - 100x 
      y2  = 10e - 100x + e - x cos x + e - x sin x 
      y3  = y2  + 100e - 10000x cos 10x 
      y4  = y3  + 100e - 10000x sin 10x 

         :

              - 100        0             0              0      
              - 100      - 2             0              0      
              - 100        9998     - 9990     - 10     
              - 100        9988       20         - 10010   

       x      :

                        0                 
     - 2000e - 100x - 2e - x (cos x + sin x)   
     - 2000e - 100x - 2e - x (cos x + sin x)   
     - 2000e - 100x - 2e - x (cos x + sin x)   

de94r_c, f, fj, fx , de94r_c.

int main(void)
{
    /* Builtin functions */
    double exp(double), cos(double), sin(double);

    /* Local variables */
    extern int de94r_c(U_fp, U_fp, U_fp, int *, int *, float *, float *,
                       float *, float *, float *, float *, logical *,
                       float *, float *, float *, float *, float *,
                       float *, float *, float *, float *, float *,
                       float *, int *);
    static float hmin;
    static int ierr;
    static float a[16] /* was [4][4] */;
    extern int f_c();
    static float h__;
    static int m;
    static float p, x, a1[16] /* was [4][4] */,
                       a2[16] /* was [4][4] */,
                 r1[4], r2[4], r3[4], r4[4], y1, y2, y3, y4;
    extern int fj_c();
    static int ih;
    static float yd[4];
    extern int fx_c();
    static float xp, yp[4], yx[4];
    static int jstart;
    static float rab[20];
    static logical bul;
    static float eps;

    m = 4;
    x = 0.f;
    yx[0] = 10.f;
    yx[1] = 11.f;
    yx[2] = 111.f;
    yx[3] = 111.f;
    hmin = 1e-10f;
    eps = 1e-4f;
    p = 1e3f;
    jstart = 0;
    h__ = .01f;
    ih = 0;
L100:
    ++ih;
    de94r_c((U_fp)f_c, (U_fp)fj_c, (U_fp)fx_c, &m, &jstart, &hmin, &eps, &p,
            yx, &x, &h__, &bul, &xp, yp, a, a1, a2, rab, r1, r2, r3, r4, yd,
            &ierr);

/*   BCEHE TOHOO PEEH CCTEM: */
    y1 = (float)exp(x * -100.f) * 10.f;
    y2 = y1 + (float)exp(-x) * ((float)cos(x) + (float)sin(x));
    y3 = y2 + (float)exp(x * -1e4f) * 100.f *
         (float)cos(x * 10.f);
    y4 = y3 + (float)exp(x * -1e4f) * 100.f *
         (float)sin(x * 10.f);

    printf("\n %16.7e %16.7e ", y1, y2);
    printf("\n %16.7e %16.7e \n", y3, y4);
    printf("\n %16.7e %16.7e ", yx[0], yx[1]);
    printf("\n %16.7e %16.7e \n", yx[2], yx[3]);
    printf("\n %16.7e \n", x);
    printf("\n %16.7e \n", h__);
/* PACEATKA OPEHOCT PEHHOO PEEH */
    printf("\n %16.7e %16.7e ", rab[0], rab[1]);
    printf("\n %16.7e %16.7e \n\n", rab[2], rab[3]);
    switch (ih) {
        case 1:  goto L101;
        case 2:  goto L102;
        case 3:  goto L103;
        case 4:  goto L104;
        case 5:  goto L105;
        case 6:  goto L106;
    }
L101:
    h__ = 1e-8f;
    goto L100;
L102:
    h__ = -1e-8f;
    goto L100;
L103:
    jstart = -1;
    goto L100;
L104:
    jstart = -1;
    h__ = -1e-8f;
    goto L100;
L105:
    h__ = .01f;
    goto L100;
L106:
    return 0;
} /* main */

int f_c(float *x, float *y, float *dy, int *m)
{
    /* Builtin functions */
    double exp(double), cos(double);

    /* Local variables */
    static float t1;

    /* Parameter adjustments */
    --dy;
    --y;

    /* Function Body */
    dy[1] = y[1] * -100.f;
    t1 = (float)exp(*x * -100.f) * 20.f +
         (float)exp(-(*x)) * 2.f * (float)cos(*x);
    dy[2] = dy[1] - y[2] * 2.f + t1;
    dy[3] = dy[1] + y[2] * 9998.f - y[3] * 9990.f - y[4] * 10.f + t1;
    dy[4] = dy[1] + y[2] * 9988.f + y[3] * 20.f - y[4] * 10010.f + t1;
    return 0;
} /* f_c */

int fj_c(float *x, float *y, float *df, int *m)
{
#define df_ref(a_1,a_2) df[(a_2)*4 + a_1]

    /* Parameter adjustments */
    df -= 5;
    --y;

    /* Function Body */
    df_ref(1, 1) = -100.f;
    df_ref(1, 2) = 0.f;
    df_ref(1, 3) = 0.f;
    df_ref(1, 4) = 0.f;
    df_ref(2, 1) = -100.f;
    df_ref(2, 2) = -2.f;
    df_ref(2, 3) = 0.f;
    df_ref(2, 4) = 0.f;
    df_ref(3, 1) = -100.f;
    df_ref(3, 2) = 9998.f;
    df_ref(3, 3) = -9990.f;
    df_ref(3, 4) = -10.f;
    df_ref(4, 1) = -100.f;
    df_ref(4, 2) = 9988.f;
    df_ref(4, 3) = 20.f;
    df_ref(4, 4) = -10010.f;
    return 0;
} /* fj_c */

#undef df_ref

int fx_c(float *x, float *y, float *dx, int *m)
{
    /* Builtin functions */
    double exp(double), cos(double), sin(double);

    /* Parameter adjustments */
    --dx;
    --y;

    /* Function Body */
    dx[1] = 0.f;
    dx[2] = (float)exp(*x * -100.f) * -2e3f -
            (float)exp(-(*x)) * 2.f * ((float)cos(*x) +
            (float)sin(*x));
    dx[3] = dx[2];
    dx[4] = dx[2];
    return 0;
} /* fx_c */


:

-

              y1                                   y2 
      9.997558891759 + 00     1.099755889174 + 01
              y3                                   y4 
      1.085857138761 + 02     1.085880963993 + 02
             yx(1)                               yx(2)
      9.997558891700 + 00     1.099755889169 + 01
             yx(3)                                yx(4)
      1.085857138677 + 02     1.085880963909 + 02
              x                                     h
      2.441406250001 - 06     2.441406250001 - 06

:

            rab(1)                           rab(2)
    - 9.701276818918 - 13     - 2.910383045670 - 12
            rab(3)                           rab(4)
      7.823109626764 - 09       7.784304519497 - 09

-

              y1                                   y2 
      9.997548894156 + 00     1.099754889414 + 01
              y3                                   y4 
      1.085759455506 + 02     1.085783375935 + 02
             yx(1)                               yx(2)
      9.997548894098 + 00     1.099754889408 + 01
             yx(3)                               yx(4)
      1.085759455420 + 02     1.085783375847 + 02
              x                                     h
      2.451406249999 - 06     2.000000000004 - 08

:

            rab(1)                           rab(2)
      0.000000000000 + 00     0.000000000000 + 00
            rab(3)                           rab(4)
    - 7.761021455135 - 12   - 1.552204291027 - 11

-

              y1                                   y2 
      9.997558891759 + 00     1.099755889174 + 01
              y3                                   y4 
      1.085857138761 + 02     1.085880963993 + 02
             yx(1)                               yx(2)
      9.997558891613 + 00     1.099755889160 + 01
             yx(3)                               yx(4)
      1.085857138667 + 02     1.085880963901 + 02
              x                                     h
      2.441406249998 - 06   - 2.000000000004 - 08

:

            rab(1)                           rab(2)
    - 9.701276818918 - 13   - 9.701276818918 - 13
            rab(3)                           rab(4)
    - 2.328306436536 - 11   - 1.552204291027 - 11

-

              y1                                   y2 
      9.997568889303 + 00     1.099756888929 + 01
              y3                                   y4 
      1.085954831772 + 02     1.085978561790 + 02
             yx(1)                               yx(2)
      9.997568889157 + 00     1.099756888914 + 01
             yx(3)                               yx(4)
      1.085954831680 + 02     1.085978561698 + 02
              x                                     h
      2.431406249996 - 06   - 4.000000000008 - 08

:

            rab(1)                           rab(2)
    - 1.940255363783 - 12   - 1.940255363783 - 12
            rab(3)                           rab(4)
    - 1.552204291027 - 11   - 1.552204291027 - 11

-

              y1                                   y2 
      9.997558891759 + 00     1.099755889174 + 01
              y3                                   y4 
      1.085857138761 + 02     1.085880963993 + 02
             yx(1)                               yx(2)
      9.997558891613 + 00     1.099755889160 + 01
             yx(3)                               yx(4)
      1.085857138667 + 02     1.085880963901 + 02
              x                                     h
      2.441406249998 - 06   - 2.000000000004 - 08

:

            rab(1)                           rab(2)
    - 9.701276818918 - 13   - 9.701276818918 - 13
            rab(3)                           rab(4)
    - 2.328306436536 - 11   - 1.552204291027 - 11

-

              y1                                   y2 
      9.995118379389 + 00     1.099511837936 + 01
              y3                                   y4 
      1.062995982552 + 02     1.062342483763 + 02
             yx(1)                               yx(2)
      9.995118379200 + 00     1.099511837916 + 01
             yx(3)                               yx(4)
      1.062995982379 + 02     1.062342483588 + 02
              x                                     h
      4.882812499996 - 06     2.441406250001 - 06

:

            rab(1)                           rab(2)
    - 1.940255363783 - 12   - 2.910387045670 - 12
            rab(3)                           rab(4)
      7.644606133297 - 09     7.590278983110 - 09