78169

Программирование искусственной нейронной сети

Лабораторная работа

Информатика, кибернетика и программирование

Пусть дано прямоугольное изображение, каждый пиксел которого характеризуется своей яркостью. Изображение разбивается на p прямоугольных кадров размером каждый. Кадр сжимается в вектор данных размерностью , который затем восстанавливается (например, после хранения или передачи по медленным каналам связи) в кадр того же размера

Русский

2017-10-18

217 KB

2 чел.

   Московский Государственный Технический Университет

им. Н.Э. Баумана

кафедра РК6 (САПР)

Отчёт

по лабораторной работе №4

по курсу "Интеллектуальные подсистемы САПР"

Группа: РК6-102

Студентка: Митина Е.В.

Преподаватель: Федорук В.Г.

Москва

2011

Программирование искусственной нейронной сети

Вариант 1

Пусть дано прямоугольное изображение, каждый пиксел которого характеризуется своей яркостью. Изображение разбивается на p прямоугольных кадров размером  каждый. Кадр сжимается в вектор данных размерностью , который затем восстанавливается (например, после хранения или передачи по медленным каналам связи) в кадр того же размера .

Решение этой задачи возможно с использованием сети, структурная схема которой представлена на рис.1.

Рис. 1.  Структурная схема сети для сжатия и восстановления изображения

Здесь , ,  — значение яркости -ого пикселя в -ом кадре, .

Сжатие (компрессия) данных осуществляется первым слоем нейронов, а восстановление (декомпрессия) — выходным. Сеть является автоассоциативной, поскольку ее выходной вектор  должен совпадать с входным .

Веса первого слоя нейронов в матричной форме обозначаются , а выходного слоя — . Вследствие линейности функций активации и однонаправленности распространения сигналов имеем: 

Обучение сети, состоящее в оптимальном подборе весов, составляющих матрицы  и , подразумевает минимизацию целевой функции в виде: 

Для отыскания минимума этой целевой функции будем использовать метод обратного распространения ошибки в режиме онлайн. В рамках данного метода уточнение весовых коэффициентов производится формулой метода градиента: 

Частные производные целевой функции по весам нейронов выходного слоя имеют следующий вид:

С учетом линейности функций активации выходного слоя нейронов  выражения для частных производных упрощаются: 

Компоненты вектора градиента для весов первого слоя нейронов определяются более сложно: 

Опять линейность функций активации и для первого слоя нейронов позволяет упростить выражения до следующего вида: 

Результаты работы программы

Обучение сети проводилось на следующем изображении:

Рис. 1. Изображение для обучения

Результаты работы сети приNv=4,Nh=4,L=2 (степень сжатия 8).

Рис. 2. Восстановленное изображение, степень сжатия 8.

Результаты работы сети приNv=4,Nh=4,L=6 (степень сжатия 2.7).

Рис. 3. Восстановленное изображение, степень сжатия 2.7.

Результаты работы сети приNv=2,Nh=2,L=2 (степень сжатия 2).

Рис. 4. Восстановленное изображение, степень сжатия 2.

Текст программы

//---------------------------------------------------------------------------

#include <math.h>

#include <stdlib.h>

#include <stdio.h>

#include <string.h>

#include <png.h>

#define PNG_BYTES_TO_CHECK 4

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused

int N_nu, N_h, L;

char f_obuch[256], f_rab[256], f_rez[256];

double x[100];

double h[100];

double **w2;

double **w1;

double *g;

double **w_nach2;

double **w_nach1;

double **w_new2;

double **w_new1;

 png_structp png_read_ptr;

 png_infop info_read_ptr;

 png_structp png_write_ptr;

 png_infop info_write_ptr;

 png_uint_32 width, height;

 int bit_depth, color_type, interlace_type;

 int compression_type, filter_method;

 int row, col;

 png_bytep *row_pointers;

 char sigBuf[PNG_BYTES_TO_CHECK];

 double mas[65550];

 FILE *fpIn;

 FILE *fpOut;

 FILE *fp;

int main(int argc, char* argv[])

{

void vvod_dann(void);

void obuchenie(void);

void dekom(double *per, int *k);

void decompres(double *per, int k);

void obuchenie2_of(void);

void obuchenie2(void);  // ìåòîä RPROP

 double per[65550];

 int k, pp,i,j;

  fp = fopen("rez.txt","w");

  vvod_dann();

  fprintf(fp,"Ishodnie dannie:\n");

  fprintf(fp," N_nu %d\n",N_nu);

  fprintf(fp," N_h %d\n",N_h);

  fprintf(fp," L %d\n",L);

  fprintf(fp," F_obuch %s\n",f_obuch);

  fprintf(fp," F_ishodn %s\n",f_rab);

  fprintf(fp," F_rezult %s\n",f_rez);

  printf("test1");

// obuchenie();

// obuchenie2();  // ìåòîä RPROP

obuchenie2_of();

  printf("test2");

  fprintf(fp,"Vesa 1go sloya:\n");

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

  {

   for (j=0; j<N_nu*N_h; j++)

    {

     fprintf(fp," % 10.4f",w1[i][j]);

    }

   fprintf(fp,"\n");

  }

  fprintf(fp,"Vesa 2go sloya:\n");

  for (i=0; i<N_nu*N_h; i++)

  {

   for (j=0; j<L; j++)

    {

     fprintf(fp," % 10.4f",w2[i][j]);

    }

   fprintf(fp,"\n");

  }

  dekom(per, &k);

  decompres(per, k);

  fclose(fp);

 return 0;

}

void vvod_dann(void)

{

 printf("N_nu=");

 scanf("%d", &N_nu);

 printf("N_h=");

 scanf("%d", &N_h);

 printf("L=");

 scanf("%d", &L);

 printf("F_obuch ");

 scanf("%s", f_obuch);

 printf("F_ishodn ");

 scanf("%s", f_rab);

 printf("F_rezult ");

 scanf("%s", f_rez);

/*

N_nu=4; N_h=4; L=2;

 strcpy(f_obuch,"bug.png");

 strcpy(f_rab,"beat.png");

 strcpy(f_rez,"k2.png");

*/

}

void obuchenie(void)

{

  void podsch_g(int i);

  void podsch_h(int i);

  void readf_fom(char *fname, double *mas, int *n);

   int i, j, n, kol,l,t, sch=0;

  double nu=0.5, dl, porog=30;

  double E_pr1=0;

  double E_pr2=0;

  double E, E_new, nu_min=0.0000000001, nu_kon, eps=0.01;

 readf_fom(f_obuch, mas, &n);

g = calloc(L, sizeof(double));

w1 = calloc(L, sizeof(double));

w2 = calloc(N_h*N_nu, sizeof(double));

w_nach1 = calloc(L, sizeof(double));

w_nach2 = calloc(N_h*N_nu, sizeof(double));

w_new1 = calloc(L, sizeof(double));

w_new2 = calloc(N_h*N_nu, sizeof(double));

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

 {w1[i] = calloc(N_h*N_nu, sizeof(double));

               w_nach1[i] = calloc(N_h*N_nu, sizeof(double));

               w_new1[i] = calloc(N_h*N_nu, sizeof(double));

               }

        for (i=0; i<N_h*N_nu; i++)

 {w2[i] = calloc(L, sizeof(double));

               w_nach2[i] = calloc(L, sizeof(double));

               w_new2[i] = calloc(L, sizeof(double));

               }

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

  {

    for (j=0; j<N_nu*N_h; j++)

    {

    w_nach1[i][j]= -2.0/sqrt(L)+(double)(rand()%10)/10*(4.0/sqrt(L));

//      w_nach1[i][j]= (double)(rand()%10)/10*(2/sqrt(N_nu*N_h));

//       w_nach1[i][j]=1;

     w_new1[i][j]=w_nach1[i][j];

     w1[i][j]=w_nach1[i][j];

    w_nach2[j][i]= -2.0/sqrt(L)+(double)(rand()%10)/10*(4.0/sqrt(L));

//    w_nach2[j][i]= (double)(rand()%10)/10*(2/sqrt(L));

//       w_nach2[j][i]=1;

     w_new2[j][i]=w_nach2[j][i];

     w2[j][i]=w_nach2[j][i];

    }

  }

kol=0;

      t=0;nu=0.5;

      do

      {

          for (i=0;i<N_nu*N_h;i++)

            {

             x[i] = mas[kol+i];

            }

          kol += N_nu*N_h;

           if (kol>=n) kol=0;

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

        {

          podsch_g(i);

        }

        for (i=0;i<N_nu*N_h;i++)

        {

          podsch_h(i);

        }

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

       {

        for (j=0; j<N_nu*N_h; j++)

          {

           E_pr2=(h[j]-x[j])*g[i];

           w2[j][i]=w_new2[j][i]-nu*E_pr2;

          }

        }

     for(l=0; l<L; l++)

       {

        for (j=0; j<N_nu*N_h; j++)

          {

           dl=0;

           for(i=0; i<N_nu*N_h;i++)

           dl+=(h[i]-x[i])*w2[i][l];

           E_pr1=dl*x[j];

           w1[l][j]=w_new1[l][j]-nu*E_pr1;

          }

        }

     E=0;

     for (i=0; i<N_nu*N_h; i++)

     {

      E+=(1.0/2)*(h[i]-x[i])*(h[i]-x[i]);

     }

     E_new=0;

     for (i=0; i<N_nu*N_h; i++)

     {

      podsch_h(i);

      E_new+=(1.0/2)*(h[i]-x[i])*(h[i]-x[i]);

     }

     fprintf(fp,"E %f E_new %f kol %d nu %f\n",E, E_new, kol, nu);

           if (E_new<E)

               {

                  for(l=0; l<L; l++)

                      {

                          for (j=0; j<N_nu*N_h; j++)

                               {

                                 w_new1[l][j]=w1[l][j];

                                 w_new2[j][l]=w2[j][l];

                                }

                      }

                sch+=1;

                if (sch>porog) {nu=nu*2; sch=0;}

               }

          if (E_new>=E)

              { nu=0.1*nu;

                sch=0;

              for(l=0; l<L; l++)

                  {

                      for (j=0; j<N_nu*N_h; j++)

                           {

                             w1[l][j]=w_new1[l][j];

                             w2[j][l]=w_new2[j][l];

}

                  }

              }

           t+=1;

        // } while (fabs(E_new-E)> eps);

       } while (nu>nu_min);

        nu_kon=nu;

  fprintf(fp," Kol-vo iteracij %d k-t obucheniya %e kadr %d \n", t, nu, kol/N_nu/N_h);

}

void obuchenie2(void)  // ìåòîä RPROP

{

  void podsch_g(int i);

  void podsch_h(int i);

  void readf_fom(char *fname, double *mas, int *n);

   int i, j, n, kol,l,t;

  double nu_max=50.0, nu_min=1e-6, al=1.2, bet=0.5, nu;

  double **q1m1, **q1m0, **q2m1, **q2m0;

  double **nu1m1, **nu1m0, **nu2m1, **nu2m0;

  double E, E_new, eps=0.005, dl;

   double mas[65550];

 readf_fom(f_obuch, mas, &n);  // ôîðìèðîâàíèå ìàññèâà äëÿ îáó÷åíèÿ èç ñïåöèàëüíîãî ôàéëà

g = calloc(L, sizeof(double));

w1 = calloc(L, sizeof(double));

w2 = calloc(N_h*N_nu, sizeof(double));

w_nach1 = calloc(L, sizeof(double));

w_nach2 = calloc(N_h*N_nu, sizeof(double));

w_new1 = calloc(L, sizeof(double));

w_new2 = calloc(N_h*N_nu, sizeof(double));

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

 {w1[i] = calloc(N_h*N_nu, sizeof(double));

               w_nach1[i] = calloc(N_h*N_nu, sizeof(double));

               w_new1[i] = calloc(N_h*N_nu, sizeof(double));

               }

        for (i=0; i<N_h*N_nu; i++)

 {w2[i] = calloc(L, sizeof(double));

               w_nach2[i] = calloc(L, sizeof(double));

               w_new2[i] = calloc(L, sizeof(double));

               }

q1m1 = calloc(L, sizeof(double));

q1m0 = calloc(L, sizeof(double));

nu1m1 = calloc(L, sizeof(double));

nu1m0 = calloc(L, sizeof(double));

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

 {

                q1m1[i] = calloc(N_h*N_nu, sizeof(double));

                q1m0[i] = calloc(N_h*N_nu, sizeof(double));

                nu1m1[i] = calloc(N_h*N_nu, sizeof(double));

                nu1m0[i] = calloc(N_h*N_nu, sizeof(double));

               }

q2m1 = calloc(N_h*N_nu, sizeof(double));

q2m0 = calloc(N_h*N_nu, sizeof(double));

nu2m1 = calloc(N_h*N_nu, sizeof(double));

nu2m0 = calloc(N_h*N_nu, sizeof(double));

        for (i=0; i<N_h*N_nu; i++)

 {

                q2m1[i] = calloc(L, sizeof(double));

                q2m0[i] = calloc(L, sizeof(double));

                nu2m1[i] = calloc(L, sizeof(double));

                nu2m0[i] = calloc(L, sizeof(double));

               }

 // íà÷àëüíûå âåñà

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

  {

    for (j=0; j<N_nu*N_h; j++)

    {

    w_nach1[i][j]= -2.0/sqrt(L)+(double)(rand()%10)/10*(4.0/sqrt(L));

//      w_nach1[i][j]= (double)(rand()%10)/10*(2/sqrt(N_nu*N_h));

//       w_nach1[i][j]=1;

     w_new1[i][j]=w_nach1[i][j];

     w1[i][j]=w_nach1[i][j];

//     w_nach2[j][i]= -2.0/sqrt(L)+(double)(rand()%10)/10*(4.0/sqrt(L));

//    w_nach2[j][i]= (double)(rand()%10)/10*(2/sqrt(L));

           w_nach2[j][i]=1;

     w_new2[j][i]=w_nach2[j][i];

     w2[j][i]=w_nach2[j][i];

    }

  }

 // Çíà÷åíèÿ íà ïðåäûäóùåì øàãå (âîëþíòàðèñêèå)

 nu=0.5;

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

  {

    for (j=0; j<N_nu*N_h; j++)

    {

     q1m1[i][j] = 1000.0;

     nu1m1[i][j] = nu;

     q2m1[j][i] = 1000.0;

     nu2m1[j][i] = nu;

    }

  }

/* âíåøíèé öèêë îáó÷åíèÿ ïî êàäðàì */

kol=0;

      t=0;

      do          /* âíóòðåííèé öèêë îáó÷åíèÿ */

      {

          for (i=0;i<N_nu*N_h;i++)

            {

             x[i] = mas[kol+i];

            }

          kol += N_nu*N_h;

           if (kol>=n) kol=0;

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

        {

          podsch_g(i);

        }

        for (i=0;i<N_nu*N_h;i++)

        {

          podsch_h(i);

        }

     for(i=0; i<L; i++)       // 2

       {

        for (j=0; j<N_nu*N_h; j++)

          {

           q2m0[j][i]=(h[j]-x[j])*g[i];

           nu2m0[j][i] = nu2m1[j][i];         // =

           if ( q2m0[j][i]*q2m1[j][i] > 0.0)  // >0

            {

             nu2m0[j][i] = al*nu2m1[j][i];

             if (nu2m0[j][i]>nu_max)  nu2m0[j][i]=nu_max;

            }

           if ( q2m0[j][i]*q2m1[j][i] < 0.0)  // <0

            {

             nu2m0[j][i] = bet*nu2m1[j][i];

             if (nu2m0[j][i]<nu_min)  nu2m0[j][i]=nu_min;

            }

           w2[j][i]=w_new2[j][i]-nu2m0[j][i]*q2m0[j][i]/fabs(q2m0[j][i]);

           nu2m1[j][i] = nu2m0[j][i];

           q2m1[j][i] = q2m0[j][i];

          }

        }

     for(l=0; l<L; l++)           // 1

       {

        for (j=0; j<N_nu*N_h; j++)

          {

           dl=0;

           for(i=0; i<N_nu*N_h;i++)

           dl+=(h[i]-x[i])*w2[i][l];

           q1m0[l][j]=dl*x[j];

           nu1m0[l][j] = nu1m1[l][j];         // =

           if ( q1m0[l][j]*q1m1[l][j] > 0.0)  // >0

            {

             nu1m0[l][j] = al*nu1m1[l][j];

             if (nu1m0[l][j]>nu_max)  nu1m0[l][j]=nu_max;

            }

           if ( q1m0[l][j]*q1m1[l][j] < 0.0)  // <0

            {

             nu1m0[l][j] = bet*nu1m1[l][j];

             if (nu1m0[l][j]<nu_min)  nu1m0[l][j]=nu_min;

            }

           if (fabs(q1m0[l][j])>0.0) w1[l][j]=w_new1[l][j]-nu1m0[l][j]*q1m0[l][j]/fabs(q1m0[l][j]);

           nu1m1[l][j] = nu1m0[l][j];

           q1m1[l][j] = q1m0[l][j];

          }

        }

     E=0;

     for (i=0; i<N_nu*N_h; i++)

     {

      E+=(1.0/2)*(h[i]-x[i])*(h[i]-x[i]);

     }

     E_new=0;

     for (i=0; i<N_nu*N_h; i++)

     {

      podsch_h(i);

      E_new+=(1.0/2)*(h[i]-x[i])*(h[i]-x[i]);

     }

//      fprintf(fp,"E %f E_new %f kol %d \n",E, E_new, kol);

                  for(l=0; l<L; l++)

                      {

                          for (j=0; j<N_nu*N_h; j++)

                               {

                                 w_new1[l][j]=w1[l][j];

                                 w_new2[j][l]=w2[j][l];

                                }

                      }

           t+=1;

//          } while (fabs(E - E_new)> eps);

         } while (t< 400);

  fprintf(fp," ÷èñëî îïåðàöèé îáó÷åíèÿ %d\n", t);

}

void readf_fom(char *fname, double *mas, int *n )

{

int coln, rown;

 fpIn = fopen(fname,"r");

 if (fread(sigBuf, 1, PNG_BYTES_TO_CHECK, fpIn) != PNG_BYTES_TO_CHECK) {

   fclose (fpIn);

   exit (2);

   };

 if ( png_sig_cmp(sigBuf, (png_size_t)0, PNG_BYTES_TO_CHECK) ) {

   fclose (fpIn);

   exit (3);

   };

 png_read_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);

 if (png_read_ptr == NULL) {

   fclose(fpIn);

   exit (2);

   };

 info_read_ptr = png_create_info_struct(png_read_ptr);

 if (info_read_ptr == NULL) {

   fclose(fpIn);

   png_destroy_read_struct(&png_read_ptr, png_infopp_NULL, png_infopp_NULL);

   exit (3);

   };

 if ( setjmp( png_jmpbuf(png_read_ptr) ) ) {

   png_destroy_read_struct(&png_read_ptr, &info_read_ptr, png_infopp_NULL);

   fclose(fpIn);

   exit (4);

   };

 png_init_io(png_read_ptr, fpIn);

 png_set_sig_bytes(png_read_ptr, PNG_BYTES_TO_CHECK);

 png_read_png(png_read_ptr, info_read_ptr, PNG_TRANSFORM_IDENTITY, png_voidp_NULL);

 fclose(fpIn);

 png_get_IHDR(png_read_ptr, info_read_ptr, &width, &height, &bit_depth,

&color_type, &interlace_type, &compression_type, &filter_method);

 if (color_type != 0) {

   exit (11);

   };

 if (bit_depth != 8) {

   exit (11);

   };

 row_pointers = png_get_rows (png_read_ptr, info_read_ptr);

/*

int i=0;

 for (row = 0; row < height; row++) {

   for (col = 0; col < width; col++) { i++;

      printf("r %d i %d",row_pointers[row][col],i);

      //row_pointers[row][col] ^= 0xFF;

     };

   };

*/

// mas=calloc(height*width,sizeof(int));

  *n=0;

rown=0;

while (rown<height)

 {

   coln=0;

   while (coln<width)

   {

    for  (row=rown;row<N_nu+rown;row++)

    {

     for (col=coln;col<N_h+coln;col++)

      {

       mas[*n] = row_pointers[row][col] ;

       //printf("%f i %d ", mas[*n], *n);

       *n +=1;

      }

    }

    coln +=N_h;

   }

  rown +=N_nu;

 }

printf("n %d", *n);

}

void podsch_g(int i)

{

 int k;

 g[i]=0;

 for(k=0; k<N_nu*N_h; k++)

 g[i]+=x[k]*w1[i][k];

}

void podsch_h(int i)

{

int k;

h[i]=0;

for(k=0; k<L; k++)

h[i]+=g[k]*w2[i][k];

}

void dekom(double *per, int *k)

{

 void readf_fom(char *fname, double *mas, int *n);

 void podsch_g(int i);

 int i, j, n, kol;

 readf_fom(f_rab, mas, &n);

kol=0;  *k=0;

while(kol<n)

{

 for (i=0;i<N_nu*N_h;i++)

  {

   x[i] = mas[kol+i];

  }

  kol += N_nu*N_h;

  fprintf(fp,"Nomer kadra %d:\n", kol/N_nu/N_h);

   for (j=0; j<N_nu*N_h; j++)

    {

     fprintf(fp," % 10.4f\n",x[j]);

    }

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

  {

   podsch_g(i);

   per[*k]=g[i];

   *k=*k+1;

  }

  fprintf(fp,"Posle sjatiya:\n");

   for (j=0; j<L; j ++)

    {

     fprintf(fp," % 10.4f\n",g[j]);

    }

}

}

void decompres(double *per, int k)

{

void write_rez( char *fname, double *rez, int kol);

void podsch_h(int i);

double rez[65550];

int kadr, i, j, kol;

kadr = k/L;

kol=0;

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

  {

   for (j=0; j<L; j++)

    {

     g[j]=per[i*L+j];

    }

 //  fprintf(fp,"i %d:\n", i+1);

   for (j=0; j<L; j++)

    {

     fprintf(fp," % 10.4f\n",g[j]);

    }

   for (j=0;j<N_nu*N_h;j++)

    {

     podsch_h(j);

  h[j]=(int)(h[j]+0.5);

  if (h[j]>256) h[j]=256;

  if (h[j]<0) h[j]=0;

     rez[kol]=h[j];

     kol++;

    }

   fprintf(fp,"h :\n");

   for (j=0; j<N_nu*N_h; j++)

    {

     fprintf(fp," % 10.4f\n",h[j]);

    }

  }

write_rez(f_rez, rez, kol);

}

void write_rez( char *fname, double *rez, int kol)

{

int coln, rown, k=0;

rown=0;

while (rown<height)

 {

   coln=0;

   while (coln<width)

   {

    for  (row=rown;row<N_nu+rown;row++)

    {

     for (col=coln;col<N_h+coln;col++)

      {

       if (k<kol)row_pointers[row][col] = rez[k++];

        // printf("r %d k %d",row_pointers[row][col], k);

      }

    }

    coln +=N_h;

   }

  rown +=N_nu;

 }

 fpOut = fopen(fname,"wb");

/*  if (argc > 2) {

   if ((fpOut = fopen(argv[2], "w")) == NULL) {

     perror (argv[2]);

     exit (5);

     };

   };*/

 png_write_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);

 if (png_write_ptr == NULL) {

   fclose(fpOut);

   exit (6);

   };

 info_write_ptr = png_create_info_struct(png_write_ptr);

 if (info_write_ptr == NULL) {

   fclose(fpOut);

   png_destroy_write_struct(&png_write_ptr,  png_infopp_NULL);

   exit (7);

   };

 if ( setjmp (png_jmpbuf(png_write_ptr) ) ) {

   fclose(fpOut);

   png_destroy_write_struct(&png_write_ptr, &info_write_ptr);

   exit (8);

   };

 png_set_IHDR(png_write_ptr, info_write_ptr, width, height, bit_depth,

color_type, interlace_type, compression_type, filter_method);

 png_set_rows (png_write_ptr, info_write_ptr, row_pointers);

 png_init_io(png_write_ptr, fpOut);

 png_write_png(png_write_ptr, info_write_ptr, PNG_TRANSFORM_IDENTITY, NULL);

  printf("test11");

 png_destroy_read_struct(&png_read_ptr, &info_read_ptr, png_infopp_NULL);

 fclose(fpOut);

  printf("test9");

 exit (0);

}

void r_kadr(int kadr, double *mas, double *mx, double *mg, double *mh)

{

int i;

  for (i=0;i<N_nu*N_h;i++)

    {

     x[i] = mas[(kadr-1)*N_nu*N_h+i];

     mx[i] = x[i];

    }

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

  {

    podsch_g(i);

    mg[i] = g[i];

  }

  for (i=0;i<N_nu*N_h;i++)

  {

    podsch_h(i);

    mh[i] = h[i];

}

}


 

А также другие работы, которые могут Вас заинтересовать

65975. Бюджетный федерализм в России 19.65 KB
  Сфера бюджетного федерализма его принципы и модели в полной мере распространяется на: межбюджетные отношения: бюджетное устройство; бюджетную систему. Существующий механизм бюджетного федерализма в России тяготеет к централизованному типу бюджетного устройства.
65976. Органы управления финансами в развитых странах мира 16.54 KB
  Управление финансами в зарубежных странах находится в ведении высших законодательных органов власти парламентов: в США это Конгресс в Великобритании Парламент в ФРГ Бундестаг во Франции Национальное собрание и т. Непосредственное управление финансами находится в ведении финансового аппарата главное...
65978. Казначейство РФ 43.5 KB
  До реформы Главное управление Федерального казначейства являлось структурным подразделением центрального аппарата Минфина России. Федеральное казначейство является федеральным органом исполнительной власти осуществляющим в соответствии...
65979. Иностранные инвестиции в Российскую Федерацию 2007-2011 года 21.83 KB
  На сегодняшний день объем иностранных инвестиций в России оценивается в 265 миллиардов долларов. Для регулирования поступлений иностранных инвестиций в Российской Федерации в 1999 году был принят Федеральный закон № 160 который описывает права и обязанности...
65980. Инвестиционный рейтинг 91 KB
  Инвестиционный рейтинг - это оценка риска, который несет инвестор, вкладывая свои средства в те или иные обязательства. Чем выше рейтинг, тем ниже риск инвестиций и выше привлекательность данных обязательств для инвесторов.
65981. МЕЖДУНАРОДНЫЙ ВАЛЮТНЫЙ ФОНД И РОССИЙСКАЯ ФЕДЕРАЦИЯ 84 KB
  Сущность и функции международного валютного фонда Международный валютный фонд МВФ это специализированное учреждение ООН со штаб-квартирой в Вашингтоне США. Основа МВФ была заложена на Бреттон Вудской конференции ООН по валютно-финансовым вопросам 22 июля 1944 года.
65982. Организация экономического сотрудничества 56 KB
  Руководящим органом ОЭСР является совет представителей стран членов организации. В 1960е состав и географические рамки ОЭСР расширились и сейчас в организацию входят 34 государства в том числе большинство государств членов ЕС. На долю государств-членов ОЭСР приходится около 60 мирового ВВП.
65983. Группа Всемирного Банка 21.13 KB
  Условием членства во Всемирном банке является членство в Международном валютном фонде то есть каждая страначлен Международного банка реконструкции и развития должна прежде стать членом Международного валютного фонда.