2014 dxdy logo

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

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


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


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



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


05/06/08
479
На дискретной кубической решетке блуждает точка случайным образом. То есть каждый шаг блуждания - это перемещение в один из 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
479
Разброс по средним квадратам таков, что при длине 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
479
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 ] 

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



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

Сейчас этот форум просматривают: Mikhail_K


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

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