Блог им. 3Qu
Для моделирование ТС на Python, прежде всего нужен сам Python. Pythonы бывают очень разные.
Самый большой и длинный Python — Anaconda (https://anaconda.org/). Скачать дистрибутив Anaconda можно здесь — Индивидуальное издание -https://www.anaconda.com/products/individual.
Я работаю именно с Anaconda. Установив Anaconda мы получаем сам Python, уже установленные значительную часть нужных и ненужных пакетов с библиотеками Python, и несколько сред разработки. И все это сразу готово к работе, и нам, по большей части, уже не придется дополнительно устанавливать пакеты и среды.
Самый маленький Python последней версии 3.8.2. скачивается с сайта самого Python — https://www.python.org/. Это, практически, только сам язык, компилятор и минимальный набор пакетов. Сделать с ним практически ничего невозможно, и для работы придется постоянно устанавливать нужные пакеты. Среду разработки придется также устанавливать самостоятельно.
Этот Python больше подходит для запуска и работы с уже отлаженными законченными программами.
И еще один Python — Miniconda. Это просто минимальный установщик Anaconda, и здесь тоже все нужное устанавливаем сами — пакеты, среды разработки и пр.
Теперь среда разработки. На мой взгляд, здесь лучшим является Spyder. Он автоматом устанавливается вместе с Anaconda, и сразу готов к работе. Запускать его лучше из Anaconda Navigator, тогда отпадает надобность в его конфигурировании. Если запустить Spyder непосредственно из меню «Пуск», то, чтобы нормально работать, при первом запуске с конфигурацией придется повозиться.
Если вы выбрали другие, нежели Anaconda, дистрибутивы Python, то Spyder или другие среды придется устанавливать и конфигурировать вручную. Spyder можно скачать здесь — https://www.spyder-ide.org/. Для установки без Anaconda придется повозиться.
И теперь, чтобы сразу после установки Python вам было чем заняться — вишенка на торте.
Трейдеры часто сравнивают историю котировок рыночных инструментов со случайным блужданием. В приложенной программе генерируется последовательность случайного блуждания и отображается на графике. Все параметры можно выставить самим.
# -*- coding: utf-8 -*-
"""
2020-05-09
Spyder Editor
"""
import numpy as np
import matplotlib.pyplot as plt
mu=0 #матожидание
sigma=10 # стандартное отклонение
N=50000 # длина последовательности
# нормально распределенная случ последовательность
normrand = np.random.default_rng().normal(mu, sigma, N)
rw=[]
# создаем случ блуждание
for i in range(0,N):
if i==0:
rw.append(10000+normrand[i])
else:
rw.append(rw[i-1] + normrand[i])
# начало графика от 0 до 50000
Ib = 100
# конец графика 0 до 50000
Ie=1100
# создаем последовательности для отображения на графике
Ig =[]
normrand_g =[]
rw_g =[]
for i in range(Ib,Ie):
Ig.append(i)
normrand_g.append(normrand[i])
rw_g.append(rw[i])
# график нормального случ. процесса
plt.plot(Ig,normrand_g) # рисуем график
plt.grid() # рисуем сетку
plt.show() # отображаем
#график случайного блуждания
plt.plot(Ig,rw_g)
plt.grid()
plt.show()
Для работы в папке Документы заводим папку PythonProject. В ней еще папку SmartLab. В Spyder создаем новый файл, называем его randomwalk.py, копируем в него текст программы, и сохраняем. Теперь можно запускать.
Должно получиться вот это:


При каждом запуске программы картинки будут разные. Случайный процесс все таки.)
Удачи.
У меня ОК. Последний запуск, прямо сейчас:
for i in range(0,N): if i==0: rw.append(10000+normrand[i]) else: rw.append(rw[i-1] + normrand[i])лучше заменить на:Хотя, ваш код,
это типа:
z=[2,5,7] +10000 #работать не будет.
1. Оно работает на порядок быстрее
2. Не приучивает к неправильному использованию мат. библиотек (numpy). В данном случае неправильное использование это работа с элементами массива по индексу. Лучше привыкать к векторизации кода смолоду.
У моего кода другие цели, и вовсе не обучение тому, как надо писать. Для этого есть книги и документация.
Вы считаете, что лучше иначе — не вопрос. Не вижу предмета для дискуссии.
Переписал. Согласитесь, проще же код выглядит? (КАКИМ ТЕГОМ ФОРМАТИРУЕТСЯ КОД?)Конечно, списки в python не поддерживают бродкастинг. Его поддерживают массивы numpy.
Вообще код писался мною, чтобы быть максимально читаемым людьми с минимальными знаниями Питон и его пакетов. И показать другие версии кода тоже хорошо.
Тимофей Мартынов призываю!
# -*- coding: utf-8 -*-
"""
2020-05-09
Spyder Editor
"""
import numpy as np
import matplotlib.pyplot as plt
mu=0 #матожидание
sigma=10 # стандартное отклонение
N=50000 # длина последовательности
# создаём шум (нормально распределенный)
normrand = np.random.default_rng().normal(mu, sigma, N)
# создаем случ блуждание
rw = np.cumsum(normrand)+10000
# Интервал для вывода графика (0...N)
interval = range(100, 1100)
# график нормального случ. процесса
plt.plot(interval,normrand[interval]) # рисуем график
plt.grid() # рисуем сетку
plt.show() # отображаем
#график случайного блуждания
plt.plot(interval,rw[interval])
plt.grid()
plt.show()