Блог им. 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, копируем в него текст программы, и сохраняем. Теперь можно запускать.
Должно получиться вот это:
При каждом запуске программы картинки будут разные. Случайный процесс все таки.)
Удачи.
У меня ОК. Последний запуск, прямо сейчас:
лучше заменить на:
Хотя, ваш код,
это типа:
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()