78169

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

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

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

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

Русский

2017-10-18

217 KB

3 чел.

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

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

кафедра РК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];

}

}


 

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

61455. Игровые технологии на уроке математики 880 KB
  Современный урок – это урок, в результате которого открывается и создается что-то новое, собственный продукт творчества: открытие превращается в изобретение, изобретение – в проект, проект – в технологии реальной деятельности.
61456. Упражнения для уроков толерантности 46.1 KB
  Эта викторина полезна на любой стадии обучения правам человека. Помните что цель викторины поставить вопросы о правах человека а отнюдь не получить правильные ответы. Какоелибо право человека Страну где нарушаются права человека Документ провозглашающий права человека Группу людей преследовавшуюся в прошлом Страну где люди лишены своих прав изза расы Страну где люди лишены своих прав изза религиозных убеждений Страну где имеет место конфликт прав различных групп людей Организацию борющуюся за права...
61457. Iгри на уроках англiйськоi мови у молодших класах 30.45 KB
  Iгра являэться добрим средством активiзацii лексики, отработки вимови, розвитку навикiв усноi мови. Iгрова форма занять допоможе уникнути дiтям додаткового навантаження суто навчальною дiяльнiстю...
61461. Основні прийоми введення та редагування тексту 26.04 KB
  Молодці ви вправно справилися із тим завданням. Погляньте на дошку ну хто вже здогадався яке схоже прислівя є у нас. Скажи мені який у тебе компютер і я скажу хто ти. Скажи мені хто твій друг і я скажу хто ти.
61463. Правила введення тексту. Форматування тексту 24.09 KB
  А зараз діти давайте разом пригадаємо що ви вивчали на останньому уроці інформатики З якою програмою ви працювали на минулому уроці Для чого ми можемо використати цю програму Де ми можемо її знайти на компютері...