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];

}

}


 

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

18722. Специфика работы с молодежью в стране 18.96 KB
  Специфика работы с молодежью в стране по выбору. Основные проблемы и потребности молодежи. Особенности организации работы с молодежью. Основные приоритеты. Основные направления деятельности органов по делам молодежи. Разработка мероприятий соответствующих потребно
18723. Исторические этапы взаимодействия молодежи и общества 24.12 KB
  Исторические этапы взаимодействия молодежи и общества. Социальноисторические факторы влияющие на взаимоотношения молодежи и общества. Отношение к молодежи в традиционном индустриальном и постиндустриальном обществе объекты и субъекты взаимодействия сферы взаимо...
18724. Молодежь как социально-демографическая группа 27.13 KB
  Молодежь как социальнодемографическая группа. Индекс развития человеческого потенциала индекс развития молодёжи. Возрастные границы. Документы регламентирующие возрастные границы. Специфика социального статуса и социальноролевое поведение. Ценности и ценностные ...
18725. Общественное объединение как составляющая часть общественного движения на различных уровнях 22.74 KB
  Общественное объединение как составляющая часть общественного движения на различных уровнях. Теоретические основы понятия общественное движение. Территориальная сфера деятельности общественных объединений как составляющая часть молодежного детского движения ...
18726. Общественные объединения как субъект молодежной политики 24.06 KB
  Общественные объединения как субъект молодежной политики. Субъекты реализации молодёжной политики. Место общественных объединений в реализации молодёжной политики Под общественным объединением понимается добровольное самоуправляемое некоммерческое формирова
18727. Этапы становления государственной молодежной политики в РФ 41.19 KB
  Этапы становления государственной молодежной политики в РФ. Важнейшее значение для развития любого государства является решение задач обеспечения социального воспроизводства. При этом именно российское государство активно и широко используя потенциал общественнос...
18728. Стратегия ГМП в РФ 33.97 KB
  Стратегия ГМП в РФ. Стратегия государственной молодёжной политики далее Стратегия разработана на период до 2016 года и определяет совокупность приоритетных направлений ориентированных на молодёжь включающих задачи связанные с участием молодёжи в реализации приорит
18729. Социальное воспитание молодежи 26.71 KB
  Социальное воспитание молодежи. Определение сущность социального воспитания. Воспитание сегодня понимают как: передачу социального опыта и мировой культуры; воспитательное воздействие на человека группу людей или коллектив прямое косвенное опосредованное; орган
18730. Социализация личности. Человек как объект и субъект социализации 28.51 KB
  Социализация личности. Человек как объект и субъект социализации. Социализация это процесс усвоения индивидом норм и правил поведения принятых в обществе. Каждый человек особенно в детстве и юности является объектом социализации. Человек как субъект социализаци