Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
bacekk
2 / 2 / 0
Регистрация: 30.11.2010
Сообщений: 89
#1

Марковский процесс (графический вывод) - C++

26.12.2011, 23:16. Просмотров 570. Ответов 0
Метки нет (Все метки)

У меня было задание реализовать Марковский процесс. Я сделал это следующим образом: у нас есть матрица вероятностей перехода из одного состояния в другое 10x10. Сумма элементов в каждой строке не должно превышать 1. Лучше заполнить всю матрицу элементами равными 0.1, так лучше будет работать рандом состояний. Как работает: мы генерируем число x с помощью функции rand от 0 до 100, засовываем этот х в подпрограмму для ГСЧ от 0 до 1. Мы условились, что в начальный момент времени состояние равно нулю (t=0, i=0). Получаем число z (от 0 до 1), так как состояние равно 0, идем в "нулевую" строчку матрицы и сравниваем z c первым элементом в строке, если z больше первого элемента строки, то мы прибавляем к первому элементу второй, и проверяем, если опять z больше чем сумма, то идем к третьему элементу, если в какой-то момент времени z стало меньше суммы, то мы записываем следующее состояние, как номер столбца, в котором сумма элементов строки больше чем z.
На следующем шаге мы перейдем в строчку с номером этого столбца. И повторяем действия для уже другого z. Таких поисков он делает 100. Вот так работает программа.
Код программы:
Код
 #include <stdlib.h>
 #include <stdio.h>
 #include <conio.h>
 #include <time.h>
 #include <math.h>
 
 #define N 10           
 #define M 100          
 
     float rnd();
 
 main()
 {
   FILE *f, *g;
   float x,y;
   int i,j,t;
   float z,p[N][N],s[N],pp,sp;
 
     f=fopen("C:\\TC\\BIN\\ver.dat","r");
     g=fopen("C:\\TC\\BIN\\rez.dat","w");
 
   for (i=0; i<N; i++)
    {
     for (j=0; j<N-1; j++)
      {
       fscanf(f," %f ",&pp);
       p[i][j]=pp;
      }
     fscanf(f," %f \n",&pp);
     p[i][N-1]=pp;
    }
 
   for (i=0; i<N; i++)
     s[i]=i;
 
  fprintf(g," Markovskij process: \n");
  fprintf(g," ------------------- \n");
 
  t=0;
  i=0;
 
  fprintf(g," t=%d i=%d \n",t,i);
 
  srand(time(NULL)); 
 
  x=rand()%101;
 
  for (t=1; t<=M; t++)
   {
     z=rnd(x);
     x=z*65539;
     sp=0;
 
     for (j=0; i<N; j++)
      {
        sp=sp+p[i][j];
 
        if (z<sp)
         {
          i=s[j];
          break;
         }
      }
 
  fprintf(g," t=%d i=%d \n",t,i);
  fprintf(g,"z=%f",z);
 
  }
 }
 
   float rnd(x)
   float x;
    {
     float y,z1;
 
     y=25175*x+13847;
     y=fmod(y,65539);
     z1=y*1.5255773063e-5;
     x=y;
     return(z1);
   }
ver.dat:
Код
  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.1  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.1  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.1  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.1  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.1  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.1  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.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1  0.1
rez.dat:
Код
 Markovskij process: 
 ------------------- 
 t=0 i=0 
 t=1 i=2 
z=0.709210 t=2 i=8 
z=0.582984 t=3 i=9 
z=0.835833 t=4 i=8 
z=0.314055 t=5 i=9 
z=0.554486 t=6 i=8 
z=0.404873 t=7 i=9 
z=0.887764 t=8 i=8 
z=0.668218 t=9 i=9 
z=0.602878 t=10 i=8 
z=0.654732 t=11 i=9 
z=0.089201 t=12 i=8 
z=0.833835 t=13 i=9 
z=0.000000 t=14 i=8 
z=0.211247 t=15 i=9 
z=0.346337 t=16 i=8 
z=0.234619 t=17 i=9 
z=0.732918 t=18 i=8 
z=0.418969 t=19 i=9 
z=0.764116 t=20 i=8 
z=0.830219 t=21 i=9 
z=0.978627 t=22 i=8 
z=0.155380 t=23 i=9 
z=0.903798 t=24 i=8 
z=0.319715 t=25 i=9 
z=0.042182 t=26 i=8 
z=0.148378 t=27 i=9 
z=0.618454 t=28 i=8 
z=0.785199 t=29 i=9 
z=0.606737 t=30 i=8 
z=0.825063 t=31 i=9 
z=0.164381 t=32 i=8 
z=0.501884 t=33 i=9 
z=0.150102 t=34 i=0 
z=0.017926 t=35 i=1 
z=0.486522 t=36 i=4 
z=0.399213 t=37 i=1 
z=0.400220 t=38 i=6 
z=0.748616 t=39 i=4 
z=0.619598 t=40 i=2 
z=0.590551 t=41 i=8 
z=0.332072 t=42 i=9 
z=0.133885 t=43 i=8 
z=0.757693 t=44 i=9 
z=0.138507 t=45 i=8 
z=0.128682 t=46 i=9 
z=0.791759 t=47 i=8 
z=0.753452 t=48 i=9 
z=0.367969 t=49 i=8 
z=0.836550 t=50 i=9 
z=0.364003 t=51 i=9 
z=0.979771 t=52 i=9 
z=0.958627 t=53 i=8 
z=0.645151 t=54 i=9 
z=0.896017 t=55 i=8 
z=0.447803 t=56 i=9 
z=0.643992 t=57 i=8 
z=0.708905 t=58 i=9 
z=0.901647 t=59 i=8 
z=0.165968 t=60 i=9 
z=0.444401 t=61 i=9 
z=0.998445 t=62 i=0 
z=0.052480 t=63 i=1 
z=0.391722 t=64 i=7 
z=0.824803 t=65 i=6 
z=0.635311 t=66 i=2 
z=0.176021 t=67 i=8 
z=0.542663 t=68 i=9 
z=0.755359 t=69 i=8 
z=0.377489 t=70 i=9 
z=0.493601 t=71 i=8 
z=0.604891 t=72 i=9 
z=0.353629 t=73 i=8 
z=0.815970 t=74 i=9 
z=0.264688 t=75 i=8 
z=0.723169 t=76 i=9 
z=0.000580 t=77 i=8 
z=0.805592 t=78 i=9 
z=0.979665 t=79 i=8 
z=0.271354 t=80 i=9 
z=0.559261 t=81 i=8 
z=0.617111 t=82 i=9 
z=0.986911 t=83 i=8 
z=0.702391 t=84 i=9 
z=0.905247 t=85 i=8 
z=0.804300 t=86 i=9 
z=0.453890 t=87 i=8 
z=0.885964 t=88 i=9 
z=0.348076 t=89 i=0 
z=0.017803 t=90 i=1 
z=0.414011 t=91 i=7 
z=0.942654 t=92 i=5 
z=0.530764 t=93 i=2 
z=0.186151 t=94 i=8 
z=0.561260 t=95 i=9 
z=0.928237 t=96 i=8 
z=0.590337 t=97 i=9 
z=0.954294 t=98 i=8 
z=0.572030 t=99 i=9 
z=0.078064 t=100 i=8 
z=0.467330
Вот, а весь вопрос заключается в том, как мне сделать так, чтобы выводился в файл графический вариант i(t), ну то есть график по идее. Мне сегодня преподаватель сказал сделать так, а я не знаю как это сделать. Помогите пожалуйста.
P.S. Программа сделана в Turbo C.

Добавлено через 8 минут
Помогите или скиньте ссылочку на этот вопрос, очень нужно, найти не могу, перерыл весь сайт.

Добавлено через 1 час 24 минуты
Помогите пожалуйста, хотя бы ссылкой на материал..
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.12.2011, 23:16
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Марковский процесс (графический вывод) (C++):

Марковский процесс (разобраться в коде) - C++
Задание было: реализовать Марковский процесс на языке С. Теория: Имеется некоторая система, она может находиться в нескольких...

Графический вывод информации - C++
Мне надо написать программу, которая имитирует изменение температуры. Я не хочу изменять температуру просто &quot;переменная++&quot; , мне...

Процесс А инициализирует массив случайными значениями и записывает их в файл, а затем запускает процесс Б - C++
В универ нужно сделать лабу по выше указанной теме. Мне не нужно чтобы за меня делали - нужен просто совет. Для начала: Задание:...

Есть процесс A и дочерний процесс B, который находит хэндл родительского процесса A. И этот хэндл в разных случаях РАЗНЫЙ! Почему? - C++
Друзья! Вот код A.exe, суть которого просто стать родительским для B.exe и висеть в системе. #include &lt;stdio.h&gt; #include &lt;windows.h&gt;...

Графический вывод - Pascal ABC
Доброго времени суток! Прошу вашей помощи в написании программы и сосавлении блок-схемы. Заранее спасибо! Ввести целое N , если N &gt; 0...

Графический вывод матрицы - Java
Как лучше вывести матрицу(матрицы) графически?

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.12.2011, 23:16
Привет! Вот еще темы с ответами:

Графический вывод звуковых волн - C#
Имеется звук в формате WAV. Как вывести на экран осциллятор этого сигнала? Не могу найти в интернете походящей информации. Добавлено...

графический вывод изображения звездного неба - Delphi
Помогите пожалуйста решить задачу)) Обеспечить графический вывод изображения звездного неба,на котором некоторые звезды в случайном то...

Вывод строки через графический видеобуфер - C (СИ)
Всем, добра! Заранее извиняюсь, если написал не в тот раздел, т.к. код смешанный. И сильно не пинайте - я новичок в программировании....

Графический вывод изображения звездного неба - C#
Помогите решить задачу!!!!пожалуйста!!! Обеспечить графический вывод изображения звездного неба,на котором некоторые звезды в случайном...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru