2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Задачка на случайное блуждание
Сообщение08.03.2021, 14:05 
Аватара пользователя


05/06/08
477
На дискретной кубической решетке блуждает точка случайным образом. То есть каждый шаг блуждания - это перемещение в один из 6 соседних вершин решетки. Если число шагов фиксированно, то можно вычислить расстояние от начала движения для одной из случайных реализаций.
Можно вычислить и среднее для фиксированной длины блуждания.
Программка на компьютере элементарная.
Вопрос, почему у меня разброс средних очень большой, даже если среднее на выборке 100 000 реализаций?

На всякий случай даю текст вычисления квадрата длины ухода от начальной точки:

Код:
float Dir[6][3] = {
   1,0,0,
   0,1,0,
   0,0,1,
   0,0,-1,
   0,-1,0,
   -1,0,0
};

float get_dist_L2_Go_Bck(int length_of_chain) {

   float point[3] = { 0,0,0 };
   float prevw_dir[3];
   float dir[3];
   srand(time(NULL));
   
   //-------------------------------------------
   for (int n = 0; n < length_of_chain; n++)
   { // добавление  звеньев цепи
      int rand_dir = rand() % 6;
      int i = 3; while (i--) point[i] += prevw_dir[i] = Dir[rand_dir][i];

   }////////////////////////////////////////

   return point[0] * point[0] + point[1] * point[1] + point[2] * point[2];
}

 Профиль  
                  
 
 Re: Задачка на случайное блуждание
Сообщение08.03.2021, 14:20 
Заслуженный участник


09/05/12
25179
А что такое "очень большой"? Стоило бы привести конкретные результаты.

 Профиль  
                  
 
 Re: Задачка на случайное блуждание
Сообщение08.03.2021, 14:27 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Вот, например. Реализация в Mathematica.
Код:
dirs = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {0, 0, -1}, {0, -1, 0}, {0, 0, -1}};
walk[length_] := Norm[Total[RandomChoice[dirs, length]]]
data = Table[walk[1000], 100000];
Histogram[data, 50]


Изображение

Это "очень большой разброс"?

 Профиль  
                  
 
 Re: Задачка на случайное блуждание
Сообщение08.03.2021, 14:35 
Аватара пользователя


05/06/08
477
Разброс по средним квадратам таков, что при длине 50 шагов и 100 000 реализации
у меня выходит, например 30, 50, 93.45.

Ну то есть даже среднее - это ни о чем в конкретно этой задаче? Тогда интуиция меня подвела.

-- Пн мар 08, 2021 15:46:00 --

Уточняю, разброс не по значениям расстояния, а про значениям среднего.

 Профиль  
                  
 
 Re: Задачка на случайное блуждание
Сообщение08.03.2021, 14:58 
Заслуженный участник


09/05/12
25179
Скорее уж 50 шагов - это "ни о чем". :-) При таком числе шагов едва ли удастся отличить распределение, аналогичное построенному Aritaborian, от плоского.

 Профиль  
                  
 
 Re: Задачка на случайное блуждание
Сообщение08.03.2021, 15:13 
Аватара пользователя


05/06/08
477
Pphantom в сообщении #1508336 писал(а):
Скорее уж 50 шагов - это "ни о чем". :-) При таком числе шагов едва ли удастся отличить распределение, аналогичное построенному Aritaborian, от плоского.

Намек понял. Спасибо.

 Профиль  
                  
 
 Re: Задачка на случайное блуждание
Сообщение08.03.2021, 15:29 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
Ну разумеется, на 50 шагах такое будет. На тысяче, как в моём примере, уже иначе.

 Профиль  
                  
 
 Re: Задачка на случайное блуждание
Сообщение12.03.2021, 15:35 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
MGM в сообщении #1508332 писал(а):
Уточняю, разброс не по значениям расстояния, а про значениям среднего.
Получается, мой график это не то, о чём вы спрашивали. Надо было так: при длине в 50 шагов проводим 100000 испытаний, находим среднее квадрата, таких серий берём сколько-нибудь и смотрим распределение квадрата среднего за серию. Тогда так (код неоптимален в угоду читаемости):
Код:
dirs = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}, {0, 0, -1}, {0, -1, 0}, {0, 0, -1}};
walk[length_] := Norm[Total[RandomChoice[dirs, length]]]^2
batch[n_] := Table[walk[50], n]
Table[Mean[batch[100000]], 10] // N
Код:
{185.924, 186.321, 185.886, 186.117, 185.638, 186.369, 186.435, 186.374, 185.778, 185.74}
И мы видим, что разброса-то никакого нет!

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group