Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2011, 11:42   #1
BaceK
 
Регистрация: 30.11.2010
Сообщений: 9
По умолчанию Марковский процесс (разобраться в коде)

Задание было: реализовать Марковский процесс на языке С.
Теория:
Имеется некоторая система, она может находиться в нескольких состояниях: Si, i = 1,…,N (N – число таких состояний).
Для каждой пары состояний (Si,Sj) задается вероятность перехода из Si в Sj: Pij. В случае Марковского Процесса Pij не зависит от предыдущих состояний системы (предыстории). Pii – вероятность остаться в том же состоянии
Код:
 # include <stdio.h>
  # include <math.h>
  # include <conio.h>
  # include <stdlib.h>
 
  # define N 10     // kol-vo sostoyanij sistemi
  # define M 100    // kol-vo shagov po vremeni
 
    float rnd();
 
  main()            
   {  FILE *fopen(),*f,*g;
      int i, j, t;
      float z, p[N][N], s[N], pp, sp, x, y;
 
     f=fopen("C:\\TC\\MP\\ver.dat","r");
     g=fopen("C:\\TC\\MP\\rez.dat","w"); 
 
//     f=fopen("ver.dat","r"); 
//     g=fopen("rez.dat","w");           
 
    for (i=0; i<N; i++)     // read array "p" from file "f"
        {
     for (j=0; j<N-1; j++)
        {
          fscanf(f," %f ",&pp);
          /* printf("%f",pp); //sleep(2);*/
          p[i][j]=pp;
        }
          fscanf(f," %f \n",&pp);
          p[i][N-1]=pp;
        }
 
/*     for (i=0; i<N; i++)     // pechat' p[i][j] dlya proverki
        {
     for (j=0; j<N; j++)
        {
          printf(" %.2e",p[i][j]);
        }
          printf("\n");
        }
      //sleep(2);
 */
 
          // esli ne rabotaet chtenie iz faila
 
   /*  for (i=0; i<N; i++)     
     for (j=0; j<N-1; j++)
        {
          p[i][j]=0.1;     // vvodim vse ravnie ver-ti
                           // mozhno vvesti neravnie
        }  */
 
  // proverka pravilnosti zadania "p[i][j]"
 
/*     for (i=0; i<N; i++)     
      {
       sp=0;
       for (j=0; j<N; j++)
        {
         sp=sp+p[i][j];
        }
       if (sp != 1.)
         printf("Nepravilno zadan massiv p[i][j], stroka %d \n",i);
        }  */
 
  for (i=0; i<N; i++)
       s[i]=i;            // nabor sostoyaniy sistemi
 
  i=0;  //  nachalnoe sost. sist.
 
  x=10;
  y=20;
 
  for (t=0; t<M; t++)  
    {
      z=rnd(x,y);
      sp=0;
 
      for (j=0; j<M; j++) 
         {
           sp=sp+p[i][j];
 
           if (z<sp)
             {
               i=s[j];
            //   printf(" t=%d i=%d j=%d  z=%.2e  z1=%.2e p=%.2e \n",t,i,j,z,z1,p); 
            //   sleep(2);
               break;
             }
         }
 
      fprintf(g," t=%d   i=%d \n",t,i);
      
    }
  }   // end of main
 
 
    float rnd(x,y)
    float x,y;
      {
         float z1;
 
         y=25175*x+13847;
         y=fmod(y,65539);           
         z1=y*1.5255773063e-5;
         printf(" z1=%.2e \n",z1); 
         x=y;
         return(z1);
       }
файл ver.dat
Код:
   0.5   0.0   0.1   0.1   0.1   0.05  0.05   0.0   0.01  0.09
   0.4   0.02  0.02  0.02  0.02  0.02  0.1    0.1   0.1   0.2
   0.1   0.1   0.1   0.1   0.1   0.1   0.1    0.1   0.1   0.1
   0.1   0.1   0.0   0.0   0.1   0.3   0.3    0.0   0.0   0.1
   0.1   0.1   0.0   0.0   0.1   0.3   0.3    0.0   0.0   0.1
   0.1   0.1   0.0   0.0   0.1   0.3   0.3    0.0   0.0   0.1
   0.1   0.1   0.0   0.0   0.1   0.3   0.3    0.0   0.0   0.1
   0.1   0.1   0.0   0.0   0.1   0.3   0.3    0.0   0.0   0.1
   0.1   0.1   0.0   0.0   0.1   0.3   0.3    0.0   0.0   0.1
   0.1   0.1   0.0   0.0   0.1   0.3   0.3    0.0   0.0   0.1
файл rez.dat
Код:
t=0   i=0 
 t=1   i=0 
 t=2   i=0 
 t=3   i=0 
 t=4   i=0 
 t=5   i=0 
 t=6   i=0 
 t=7   i=0 
 t=8   i=0 
 t=9   i=0 
 t=10   i=0 
 t=11   i=0 
 t=12   i=0 
 t=13   i=0 
 t=14   i=0 
 t=15   i=0 
 t=16   i=0 
 t=17   i=0 
 t=18   i=0 
 t=19   i=0 
 t=20   i=0 
 t=21   i=0 
 t=22   i=0 
 t=23   i=0 
 t=24   i=0 
 t=25   i=0 
 t=26   i=0 
 t=27   i=0 
 t=28   i=0 
 t=29   i=0 
 t=30   i=0 
 t=31   i=0 
 t=32   i=0 
 t=33   i=0 
 t=34   i=0 
 t=35   i=0 
 t=36   i=0 
 t=37   i=0 
 t=38   i=0 
 t=39   i=0 
 t=40   i=0 
 t=41   i=0 
 t=42   i=0 
 t=43   i=0 
 t=44   i=0 
 t=45   i=0 
 t=46   i=0 
 t=47   i=0 
 t=48   i=0 
 t=49   i=0 
 t=50   i=0 
 t=51   i=0 
 t=52   i=0 
 t=53   i=0 
 t=54   i=0 
 t=55   i=0 
 t=56   i=0 
 t=57   i=0 
 t=58   i=0 
 t=59   i=0 
 t=60   i=0 
 t=61   i=0 
 t=62   i=0 
 t=63   i=0 
 t=64   i=0 
 t=65   i=0 
 t=66   i=0 
 t=67   i=0 
 t=68   i=0 
 t=69   i=0 
 t=70   i=0 
 t=71   i=0 
 t=72   i=0 
 t=73   i=0 
 t=74   i=0 
 t=75   i=0 
 t=76   i=0 
 t=77   i=0 
 t=78   i=0 
 t=79   i=0 
 t=80   i=0 
 t=81   i=0 
 t=82   i=0 
 t=83   i=0 
 t=84   i=0 
 t=85   i=0 
 t=86   i=0 
 t=87   i=0 
 t=88   i=0 
 t=89   i=0 
 t=90   i=0 
 t=91   i=0 
 t=92   i=0 
 t=93   i=0 
 t=94   i=0 
 t=95   i=0 
 t=96   i=0 
 t=97   i=0 
 t=98   i=0 
 t=99   i=0
Помогите разобраться в задании и в коде, программа запускается но пишет бред какой-то.
Изображения
Тип файла: jpg markovskii.jpg (60.5 Кб, 38 просмотров)
BaceK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться в коде zif0rka PHP 6 05.12.2011 01:22
Разобраться в коде(Java) artem611 Помощь студентам 0 23.05.2011 11:04