Курсовая работа: Использование нечеткой искусственной нейронной сети TSK Takagi Sugeno Kanga в задаче прогнозирования
Название: Использование нечеткой искусственной нейронной сети TSK Takagi Sugeno Kanga в задаче прогнозирования Раздел: Рефераты по информатике Тип: курсовая работа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
МИНИСТЕРСТВО ОБРАЗОВАНИЯ и НАУКИ УКРАИНЫ НАЦИОНАЛЬНАЯ АКАДЕМИЯ НАУК УКРАИНЫ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ УКРАИНЫ «КИЕВСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ» НАУЧНО-ОБУЧАЮЩИЙ КОМПЛЕКС «ИНСТИТУТ ПРИКЛАДНОГО СИСТЕМНОГО АНАЛИЗА» Курсовая роботаПо дисциплине«Основы проектирования интеллектуальных систем» «Использование нечеткой искусственной нейронной сети TSK (Takagi, Sugeno, Kang’a) в задаче прогнозирования валютных курсов» Выполнил Поляновский Н. А група КА-55 5 курс Принял Зайченко Ю. П Киев – 2009г. Реферат Ключевые слова: прогнозирование, нечеткая нейронная сеть, нечеткость, валютные курсы, TSK. В данной работе рассматривается прогнозирование валютных курсов. Рассматривалась искусственная нечеткая нейронная сеть TSK. В качестве критерия правильности прогноза были выбраны средний квадрат отклонения и средняя абсолютная процентная погрешность. ННС TSKсравнивается с методом экспоненциального сглаживания и с искусственной нейронной сетью с кубическими сплайнами. Были получены результаты, которые свидетельствуют о том, что рассматриваемый искусственная нейронная сеть может быть использованы в деятельности банков и других инвесторов. Введение Повышение эффективности краткосрочных операций с валютой – одна из важнейших задач в деятельности банков и других инвесторов. Ежедневно (а иногда и несколько раз в день) банки продают и покупают различные валюты в значительных объемах, стремясь придать движение имеющимся в наличии свободным валютным резервам с целью избежать потерь от конъюнктурных колебаний курсов и получить дополнительную прибыль. Эффективность валютных операций существенным образом зависит он надежности прогнозов колебаний курсов валют. Именно поэтому краткосрочное прогнозирование курсов имеет большое практическое значение для оперативной деятельности банков и прочих инвесторов, а вопрос о возможности применения статистических методов для этой цели представляется актуальным. Информация о динамике курсов национальных валют создает впечатление хаотического движения: падение и рост курсов сменяют друг друга в каком-то случайном порядке. Даже если за большой интервал времени отмечается тенденция, например, к росту, то на графике легко можно увидеть, что эта тенденция прокладывала себе путь через сложные движения временного ряда курса валюты. Направление ряда все время меняется под воздействием нерегулярных и часто неизвестных сил. Исследуемый объект в полной мере подвержен воздействию стихии мирового рынка, и точной информации о будущем движении курса нет. Необходимо сделать прогноз. В данной курсовой работе предпринята попытка прогнозирования валютных курсов с использованием искусственной нейронной сети. Раздел 1. Область исследований 1.1 Важность задачи прогнозирования В наше время перед человечеством стоит задача прогнозирования различных важных с точки зрения прикладной деятельности человека показателей. Эти показатели могут быть физическими, социальными и экономическими. Жизненно важным для человечества является задача своевременного прогнозирования землетрясений, цунами, повышенной солнечной активности. Не менее важной задачей прогнозирования является прогнозирование социальных показателей, таких как: численность народонаселения, уровень смертности, градация граждан по возрастному цензу в будущем. В условиях рыночной экономики для обеспечения населения необходимыми товарами и услугами, а также для обеспечения нормального функционирования экономики требуется прогнозировать следующие макроэкономические показатели: валовой внутренний продукт, валовой внутренний продукт, внешнеэкономическое торговое сальдо, курсы национальных валют. 1.2 Существующие методы прогнозирования Одним из самых первых и распространенных методов прогнозирования является метод наименьших квадратов (МНК). В основе этого метода лежит гипотеза о том, что временной ряд имеет линейный тренд. Данное допущение в задаче краткосрочного прогнозирования валютных курсов является недопустимым. В середине двадцатого века независимо друг от друга Браун и Холт предложили метод экспоненциального сглаживания. Суть метода состоит в том, что прогноз на следующий шаг является взвешенной суммой предыдущих, уже известных членов временного ряда. Веса при членах временного ряда экспоненциально уменьшаются со временем. В 60-х годах двадцатого века Калманом был предложен метод фильтрации, позже названный в его честь. Суть данного метода состоит в представлении временного ряда в модели пространстве состояний [2]. Метод Группового Учета Аргументов (МГУА) разрабатывается академиком НАН Украины А.Г. Ивахненко и его школой, с 60-х годов двадцатого века, и является типичным методом индуктивного моделирования и одним из наиболее эффективных методов структурно-параметрической идентификации сложных объектов, процессов и систем по данным наблюдений в условиях неполноты информации. Искусственные нейронные сети являются перспективным направлением в создании искусственного интеллекта и еще одним инструментом, позволяющим осуществлять прогнозирование. Раздел 2. Описание выбранных инструментов 2.1 Общая характеристика нечетких нейронных сетей Нечеткие искусственные нейроны, так же называемые нейронными клетками, узлами модулями, моделируют структуру и функции биологических нейронов. Архитектура и особенности нечетких искусственных нейронных сетей, состоящих из нейронов, зависит от конкретных задач, которые будут решаться с их помощью. Соединенные между собой нейроны создают искусственную нейронную сеть (ИНС). Таким образом ИНС – это пара (M, V), где M – множество нейронов; V – множество связей. Структура сети задается в виде графа, в котором вершинами являются нейроны, а ребрами являются связи. ИНС могут быть применены в следующих областях и для решения следующих задач: аппроксимация функций, создание ассоциативной памяти, архивирование данных, распознавание и классификация, оптимизационные задачи, управление сложными процессами, прогнозирование, нейрокомпьютеры. Нечеткие нейронные сети (ННС) применяются в системах с нечеткой логикой. ННС помогают снять неопределенность в задачах, где входные переменные заданы интервально 2.2 Общая характеристика среды программирования Delphi 7 Для программной реализации искусственной нейронной сети, рассматриваемой в данной курсовой работе, была использована визуальная среда программирования Delphi 7. Выбор был обусловлен возможностью быстрого написания приложения с удобным пользовательским интерфейсом для семейства операционных систем Windows и Linux. Раздел 3. Математическое описание задачи 3.1 Описание общей задачи прогнозирования валютных курсов В данном подразделе рассматривается прогнозирование валютных курсов. Объектом исследования является временной ряд последовательных ежедневных данных (наблюдений) о динамике валютных пар, который будем записывать как где – длина ряда. Исходные ряды исследуются на абсолютную случайность. Проверяется, не являются ли они белым шумом. В качестве критериев случайности используются: критерий поворотных точек, критерий распределения длины фазы и критерий, основанный на знаках разностей [1]. В целом, проведенное автором работы изучение исходных рядов валютных курсов показало, что, несмотря на сильную колеблемость ежедневных данных, они не являются совершенно случайными. 3.2 Описание структуры ННС TSK На рисунке 1 приводится структура нейронной сети TSK. Выделяются следующие характеристики, свойства, особенности и функциональные элементы сети: 1) Обучение проводится с учителем. Т.е. для каждого входного вектора имеется желаемое для выхода значение. 2) Выборка разбивается на 2 части: обучающая и проверочная. Обобщенную схему вывода в модели TSK при использовании правил и переменных можно представить в следующем виде: , то ; , то где - значение лингвистической переменной для правила с функцией принадлежности (ФП) , , В нечеткой нейронной сети TSK пересечение правил определяется ФП в форме произведения, т.е. При правилах вывода композиция исходных результатов сети определяется по следующей формуле (аналогично выводу Сугено): где , Нечеткая нейронная сеть TSK задается многослойной структурной сетью, представленной на рисунке 1. В такой сети выделяют 5 слоев. 1. Первый слой выполняет раздельную фаззификацию каждой переменной , , определяя для каждого -го правила вывода значение ФП в соответствии с функцией фаззификации. Это параметрический слой с параметрами , которые подлежат адаптации в процессе обучения. 2. Второй слой выполняет агрегирование отдельных переменных , определяя результирующую степень принадлежности для вектора условиям -го правила. Это не параметрический слой. 3. Третий слой представляет собой генератор функции TSK, в котором рассчитывается значения . В этом слое также происходит умножение функции на , сформированных на предыдущем слое. Это параметрический слой, в котором адаптации подлежат линейные параметры (веса), для , , определяющие функции последствий правил. 4. Четвертый слой составляют 2 нейрона-сумматора, один из которых рассчитывает взвешенную сумму сигналов , а второй определяет сумму весов . 5. Пятый слой состоит из одного единственного нейрона. В нем веса подлежат нормализации и вычисляется выходной сигнал в соответствием с выражением Это так же не параметрический слой. Из приведенного описания следует, что нечеткая сеть TSK содержит только 2 параметрических слоя (первый и третий), параметры которых уточняются в процессе обучения. Параметры первого слоя () будем называть нелинейными, а параметры третьего слоя - линейными весами. Общее выражение для функциональной зависимости для сети TSK задается так: Рисунок 1. Структура ННС TSK 3.3 Алгоритм обучения Рассмотрим гибридный алгоритм обучения. В гибридном алгоритме параметры, подлежащие адаптации, делятся на 2 группы. Первая из них состоит из линейных параметров третьего слоя, а вторая группа – из параметров нелинейной ФП первого слоя. Уточнение параметров происходит в 2 этапа. На первом этапе при фиксации отдельных значений параметров функции принадлежности, решая систему линейных уравнений, рассчитываются линейные параметры полинома TSK. При известных значениях ФП зависимость для выхода можно представить в виде линейной формы относительно параметра : , где , При размерности обучающей выборки , и замене выходного сигнала сети ожидаемым значением получим систему из линейных уравнений вида где означает уровень активации (вес) условия -го правила при предъявлении -го входного вектора . Это выражение можно записать в матричном виде Размерность матрицы равняется . При этом количество строк обычно бывает значительно больше количества столбцов . Решение этой системы уравнений можно получить как обычными методами, так и за один шаг, используя псевдо инверсию матрицы : , где - псевдо инверсная матрица. На втором этапе после фиксации значения линейных параметров рассчитываются фактические выходные сигналы , , для этого используется линейная зависимость: После этого рассчитывается вектор ошибки и критерий Сигналы ошибок направляются через сеть в обратном порядке согласно методу BackPropagation вплоть до первого слоя, где могут быть рассчитаны компоненты . После вычисления вектора градиента делается шаг спуска градиентным методом. Соответствующие формулы обучения (для самого простого метода быстрого спуска) принимают вид: , , , где - номер итерации. После уточнения нелинейных параметров снова запускается процесс адаптации линейных параметров функции TSK (первый этап) и нелинейных параметров (второй этап). Этот цикл продолжается до тех пор пока не стабилизируются все параметры процесса. В курсовой работе использовалась обобщенная колоколообразная функция принадлежности соответствующие формулы градиентного метода целевой функции для одной пары данных принимают вид: , , Соответствующие производные принимают следующий вид: , , для , где - дельта Кронекера, ; При практической реализации гибридного метода обучения нечетких сетей доминирующим фактором их адаптации считается первый этап, на котором веса подбираются с использованием псевдо инверсии за один шаг. Для уравновешивания его влияния второй этап много раз повторяется в каждом цикл. Представленный гибридный алгоритм – один из наиболее эффективных способов обучения нечетких нейронных сетей. Его характерной чертой является разделение процесса на два отделенных во времени этапа. Если учитывать, что расчетная сложность каждого алгоритма оптимизации нелинейно зависит от количества параметров, которые подлежат оптимизации, то уменьшение размерности задач оптимизации значительно сокращает объем расчетных операций и повышает скорость сходимости алгоритма. Благодаря этому гибридный алгоритм является более эффективным в сравнении с обычным градиентным методом. [3] Раздел 4. Полученные результаты 4.1 Экспериментальные исследования ННС TSK Рассматриваются временные ряды валютных курсов российского рубля по отношению к американскому доллару, евро, британскому фунту стерлингов, швейцарскому франку, японской йене. А также рассматриваются временные ряды курсов валютных пар доллара к евро, британскому фунту стерлингов, японской йене. Временные ряды взяты за 2007, 2008 и начало 2009 года – всего 500 измерений. Данные о временных рядах взяты с сайта биржевых торгов Forex и официального сайта центрального банка России. Количество точек обучающей выборке в эксперименте взято равным 250, количество точек проверочной выборки – 250. На рисунках 2-9 приведены графики курсов валют реальные данные и прогноз на 1 шаг. Видно, что реальные данные от спрогнозированных данных визуально практически неотличимы. На рисунках 10-17 приведены графики курсов валют реальные данные и прогноз на 3 шага. Видно, что реальные данные от спрогнозированных данных уже можно отличить визуально. В приложении 1 приведены численные значения реальных и спрогнозированных значений курсов валют, а также ошибки прогноза. Каждая валютная пара рассматривается независимо от других валютных пар. Входными данными для прогнозирования значения курса валютной пары являются наблюдения за ежедневными курсами этой валютной пары за предыдущие периоды. Выходом является прогноз курса рассматриваемой валютной пары на следующий период. Критерием эффективности прогноза было выбрано среднеквадратическое отклонение СКО. где – прогноз на -ый момент времени, сделанный в момент времени . Вторым критерием эффективности был САПП. . СКО и САПП искались отдельно на обучающей выборке и отдельно на проверочной выборке. Полученные значения СКО и САПП приведены в разделе 4.4., где будет проведена сравнительная характеристика рассматриваемой ИНС и метода экспоненциального сглаживания. Рисунок 2. График курса валюты доллара США к евро. Зеленый – реальные данные, красный – спрогнозированные Рисунок 3. График курса валюты доллара США к британскому фунту стерлингов. Зеленый – реальные данные, красный – спрогнозированные Рисунок 4. График курса валюты доллара США к евро. Зеленый – реальные данные, красный – спрогнозированные Рисунок 5. График курса валюты российского рубля к доллару США. Зеленый – реальные данные, красный – спрогнозированные Рисунок 6. График курса валюты российского рубля к евро. Зеленый – реальные данные, красный – спрогнозированные Рисунок 7. График курса валюты российского рубля к британскому фунту стерлингов. Зеленый – реальные данные, красный – спрогнозированные Рисунок 8. График курса валюты российского рубля к швейцарскому франку. Зеленый – реальные данные, красный – спрогнозированные Рисунок 9. График курса валюты российского рубля к доллару японской йене. Зеленый – реальные данные, красный – спрогнозированные Рисунок 10. График курса валюты доллара США к евро. Зеленый – реальные данные, красный – спрогнозированные на 3 шага Рисунок 11. График курса валюты доллара США к британскому фунту стерлингов. Зеленый – реальные данные, красный – спрогнозированные на 3 шага Рисунок 12. График курса валюты доллара США к японской йене. Зеленый – реальные данные, красный – спрогнозированные на 3 шага Рисунок 13. График курса валюты российского рубля к доллару США. Зеленый – реальные данные, красный – спрогнозированные на 3 шага Рисунок 14. График курса валюты российского рубля к евро. Зеленый – реальные данные, красный – спрогнозированные на 3 шага Рисунок 15. График курса валюты российского рубля к британскому фунту стерлингов. Зеленый – реальные данные, красный – спрогнозированные на 3 шага Рисунок 16. График курса валюты российского рубля к швейцарскому франку. Зеленый – реальные данные, красный – спрогнозированные на 3 шага Рисунок 17. График курса валюты российского рубля к японской йене. Зеленый – реальные данные, красный – спрогнозированные на 3 шага 4.2 Экспериментальные исследования метода экспоненциально сглаживания Метод экспоненциально сглаживания (МЭС) является адаптивным алгоритмом прогнозирования. МЭС проявил себя с хорошей стороны во многих экспериментальных исследованиях [1]. Поэтому МЭС был выбран для сравнения потенциальной эффективности ННС TSKв данной курсовой работе. Экспоненциальное сглаживание ряда осуществлялось по рекуррентной формуле: где – значение экспоненциальной средней в момент ; – постоянная сглаживания (параметр адаптации), , . При прогнозировании исходная выборка была разбита на 2 части: обучающую и проверочную. Длины обучающей и проверочной выборке в эксперименте с ННС TSK и МЭС были равны. На обучающей выборке была выбрана наилучшая постоянная сглаживания . Далее она использовалась для прогнозирования на проверочной выборке. 4.3 Экспериментальные исследования нейронной сети с кубическими сплайнами На рисунке 2 приводится структура нейронной сети, которая была ранее предложена автором курсовой работы. Данная нейронная сеть приводится для сравнения. Выделяются следующие характеристики, свойства, особенности и функциональные элементы сети: 1. Обучение проводится с учителем. Т.е. для каждого входного вектора имеется желаемое для выхода значение. 2. Выборка разбивается на 2 части: обучающая и проверочная. 3. На вход необходимо подавать сигналы . , где – память системы. 4. На входов подаются следующие величины , где – память системы. 5. На выходе ИНС ожидается прогноз изменения значения величины . Т.е. где – выход ИНС. 6. функции принадлежности типа кубических сплайнов, предложенные Е. В. Бодянским. На интервале [0,1], нужно расположить функций принадлежности при этом центр расположен в нуле (), а центр в единице . Данные функции принадлежности не допускают «дыр» и обеспечивают единичное разбиение, т.е. Рисунок 2. Структура исследуемой нейронной сети 4.4 Сравнение полученных результатов В таблице 1 приведено СКО на обучающей и через черту приведено СКО на проверочной выборке для ННС TSK, ИНС с кубическими сплайнами (далее ИНС) и МЭС. Как видно с таблицы 1 ННС TSK на обучающей выборке во всех экспериментах показала СКО более чем в два раза меньшее, чем МЭС. На проверочной выборке ННС TSK также показала лучший результат во всех экспериментах в сравнении с МЭС. ННС TSK в сравнении с ИНС показала приблизительно одинаковые результаты, но в среднем на 3.75% хуже по критерию СКО.
Таблица 1. СКО на обучающей выборке. Через черту приведено СКО на проверочной выборке
В таблице 2 приведены значения критерия САПП на обучающей и через черту на проверочной выборке для рассматриваемой ИНС и МЭС. Как видно с таблицы 2 ННС TSKна обучающей и проверочной выборках во всех экспериментах показала лучшие результаты, чем МЭС. ННС TSK в сравнении с ИНС показала приблизительно одинаковые результаты, но в среднем на 1% хуже по критерию САПП. Полученные результаты свидетельствуют о том, что ННС TSKдает результаты по критерию среднеквадратического отклонения и САПП значительно лучше чем МЭС, но немного уступает ИНС с кубическими сплайнами.
Таблица 2. САПП на обучающей выборке. Через черту приведенСАПП на проверочной выборке
4.5 Исследование чувствительности ННСTSK 4.5.1 Исследование чувствительности к длине обучающей выборки В данном разделе рассматривается чувствительность ННС TSK в зависимости от длины обучающей выборки. Рассматривается только одна валютная пара доллар США – евро. Во всех экспериментах варьировалась длина обучающей выборки, она составляла 50, 100, 200, 300 и 400 точек. На рисунках 18-25 приведены графики зависимостей СКО и критерия САПП в зависимости от длины обучающей выборки. На графиках 18, 20, 22, 24 изображены графики критериев СКО и САПП на обучающей выборке. Как видно с графиков, при увеличении обучающей выборки уменьшаются значения СКО и САПП. На графиках 19, 21, 23, 25 изображены графики критериев СКО и САПП на проверочной выборке. Как видно с графиков, при увеличении обучающей выборки увеличиваются значения СКО и САПП и достигают своего максимального значения при длине обучающей выборки в 400 точек. Далее графики начинают убывать. Можно сделать вывод, что оптимальным значеное значение обучающей выборки составляет 50 точек. Рисунок 18. Зависимость при прогнозированни на 1 шаг СКО () на обучающей выборке от изменения длины обучающей выборки. Рисунок 19. Зависимость СКО () при прогнозированни на 1 шаг на проверочной выборке от изменения длины обучающей выборки. Рисунок 20. Зависимость при прогнозированни на 3 шага вперед СКО () на обучающей выборке от изменения длины обучающей выборки Рисунок 21. Зависимость при прогнозированни на 3 шага вперед СКО () на проверочной выборке от изменения длины обучающей выборки. Рисунок 22. Зависимость при прогнозированни на 1 шаг САПП на обучающей выборке от изменения длины обучающей выборки Рисунок 23. Зависимость при прогнозированни на 1 шаг САПП на проверочной выборке от изменения длины обучающей выборки Рисунок 24. Зависимость при прогнозированни на 3 шага САПП на обучающей выборке от изменения длины обучающей выборки Рисунок 25. Зависимость при прогнозированни на 3 шага САПП на проверочной выборке от изменения длины обучающей выборки 4.5.2 Исследование чувствительно ННС TSK к изменению количества правил В данном разделе рассматривается чувствительность ННС TSK в зависимости от количества правил в первом слое структуры сети. Рассматривается только одна валютная пара доллар США – евро. Длина обучающей выборки была выбрана равной 50. Во всех экспериментах варьировалось количество правил, оно составляло 1, 3, 5, 7, 9. На рисунках 26, 28, 30, 32 изображена зависимость критериев СКО и САПП при прогнозировании на 1 и 3 шага вперед на обучающей выборке. Как видно с этих рисунков, при увеличении количества правил уменьшается ошибка по критерию СКО и САПП при прогнозах на 1 и на 3 шага вперед. На рисунках 27, 29, 31, 33 изображена зависимость критериев СКО и САПП при прогнозировании на 1 и 3 шага вперед на проверочной выборке. Как видно из этих рисунков, при увеличении количества правил сначала достигается минимум при количества правил , а затем ошибка увеличивается. Рисунок 26. Зависимость СКО при прогнозировании на 1 шаг на обучающей выборке в зависимости от количества правил Рисунок 27. Зависимость СКО при прогнозировании на 1 шаг на проверочной выборке в зависимости от количества правил Рисунок 28. Зависимость СКО при прогнозировании на 3 шага на обучающей выборке в зависимости от количества правил Рисунок 29. Зависимость СКО при прогнозировании на 3 шага на проверочной выборке в зависимости от количества правил Рисунок 30. Зависимость САПП при прогнозировании на 1 шаг на обучающей выборке в зависимости от количества правил Рисунок 31. Зависимость САПП при прогнозировании на 1 шаг на проверочной выборке в зависимости от количества правил Рисунок 32. Зависимость САПП при прогнозировании на 3 шага на обучающей выборке в зависимости от количества правил Рисунок 33. Зависимость САПП при прогнозировании на 3 шага на проверочной выборке в зависимости от количества правил 4.6 Анализ полученных результатов Во время первого экспериментального исследования ННС TSK прогнозировались валютные курсы для восьми валютных пар. Были получены значения критериев эффективности СКО и САПП. Для сравнения потенциальной эффективности ННС TSKбыли выбраны МЭС и ИНС с кубическими сплайнами. В результате экспериментов было установлено, что ННС TSKпроизводит значительно более эффективное прогнозирование валютных курсов. СКО, полученное при прогнозировании рассматриваемой ИНС, было в 2-6 раз меньше, чем СКО, полученное при прогнозировании МЭС. Таким образом, ННС TSKлучше МЭС по критерию СКО. Критерий САПП, полученный при прогнозировании ННС TSK, был в 1,5-2 раза меньше, чем критерий САПП, полученный при прогнозировании МЭС. Таким образом ННС TSK по критериям СКО и САПП показала результаты лучше чем МЭС. ИНС с кубическими сплайнами и ННС TSK показали приблизительно равные показатели СКО и САПП, но в среднем ИНС с кубическими сплайнами дала прогноз на 3.5% лучше по критерию СКО и на 1% лучше по критерию САПП. Во время второго экспериментального исследования рассматривалась чувствительность ННС TSK к изменению длины обучающей выборки. Были получены следующие результаты. При увеличении длины обучающей выборки СКО и критерий САПП на обучающей выборке убывали до установившегося значения. Это свидетельствует о том, что даже безграничное увеличение длины обучающей выборки не приведет к улучшению прогноза по критерию СКО и САПП. На проверочной выборке достигался максимум по критерию СКО и САПП, а далее был спад. Можно сделать вывод, что оптимальная длина обучающей выборки составляет 50 точек. Раздел 5. Описание программного продукта 5.1 Описание пользовательского интерфейса Пользовательский интерфейс был выполнен в визуальной среде программирования Delphi 7. Это позволило в сжатые сроки написать удобный пользовательский интерфейс. Пользовательский интерфейс является очень удобным и позволяет загружать данные из файла, редактировать данные в удобном для пользователя окне, подобном MicrosoftExcel, и сохранять данные в файле. Так же предусмотрена возможность изменять длину обучающей выборки, память системы, количество правил, а также задавать другие параметры настройки ННС TSK. Реализована возможность сохранить настройки ННС TSK. Это является очень полезной функцией программы, т.к. время для настройки параметров растет нелинейно в зависимости от их количества и может достигать нескольких минут. Реализована возможность просмотра графиков курсов валют. 5.2 Инструкция по работе с программой При запуске программы перед пользователем появляется интерфейс, показанный на рисунке 34. Функции и процедуры, вызываемые кнопками интерфейса: «Загрузить данные» – открывает диалоговое окно, позволяющее выбрать файл с данными. «Загрузить нейросеть» – открывает диалоговое окно, позволяющее выбрать файл с параметрами ННС TSK. «Сохранить данные» – открывает диалоговое окно, позволяющее выбрать файл для сохранения данных. «Сохранить нейросеть» – открывает диалоговое окно, позволяющее выбрать файл для сохранения настроек ННС TSK. «Настройки» – открывает окно настроек, рисунок 35. В окне можно задать длину обучающей выборки, количество правил и память системы. Для того чтобы изменения вошли в силу, необходимо нажать кнопку «Сохранить и выйти». Для отмены изменений необходимо нажать кнопку «Выйти без сохранения». «Обучить нейросеть» – настраивает весовые коэффициенты ННС TSK, а также делает прогноз по имеющейся выборке. После введения данных и нажатия клавиши интерфейс пользователя принимает вид, представленный на рисунке 36. «Графики курса валюты» – открывает окно с графиками курсов валют реального и спрогнозированного на 1 шаг вперед. Пример окон проиллюстрирован на рисунках 2-9. «Графики курса валюты (3)» – открывает окно с графиками курсов валют реального и спрогнозированного на 3 шага вперед. Пример окон проиллюстрирован на рисунках 10-17. «RUN» – служит для того, чтобы получить прогноз при изменении данных в окне редактирования. При нажатии клавиши не происходит пересчет весовых коэфициентов, а только происходит прогнозирование. «Закрыть» – закрывает программу. Так же реализована возможность просмотра значений среднеквадратичного отклонения обучающей и проверочной выборки в окне пользовательского интерфейса, рисунок 34. Рисунок 34. Интерфейс при запуске программы Рисунок 35. Окно интерфейса «настройки» Рисунок 36. Интерфейс после нажатия клавиши «обучить нейросеть» 4.5. Описание программы Unit 1 является основным модулем программной реализации ИНС. В Unit 1 реализованы интерфейс пользователя, рисунок 34, возможность вводить данные вручную и с файла, обучение ИНС, получение прогноза. В Unit 1 реализована главная форма из которой вызываются формы 2, 3, 4, которые программно реализованы в Unit 2, Unit 3, Unit 4. Для возможности работы с матрицами подключается модуль matrices. Основными структурами данных являются следующие массивы: а – массив реального курса валют; ap – массив спрогнозированного курса валюты на 1 шаг. ap3 – массив спрогнозированного курса валюты на 3 шага. Основными процедурами и функциями Unit 1 являются: procedure TForm1.Button4Click(Sender: TObject); - обучение ННСTSK. В этой процедуре реализована настройка параметров, а также получение прогноза. Так же подсчитываются критерии СКО и САПП. procedureTForm1.Button1Click(Sender: TObject); - загрузить данные из файла. Открывает диалоговое окно, в котором можно выбрать файл с исходными данными. При выборе файла происходит прочтение данных. procedureTForm1.Button2Click(Sender: TObject); - загрузить настройки ННСTSK из файла. Загружает параметры ННСTSKиз файла. procedureTForm1.Button7Click(Sender: TObject); - сохранить данные. procedure TForm1.Button8Click(Sender: TObject); - сохранить нейросеть. procedure TForm1.Button9Click(Sender: TObject); - получитьпрогноз. Если необходимо получить прогноз, в случае редактирования данных вручную. procedureTForm1.Button3Click(Sender: TObject); открыть форму 2, в которой размещается меню настроек. procedureTForm1.Button5Click(Sender: TObject); - открыть форму 3, в которой реализованы графики курсов валют – реальный и спрогнозированный на 1 шаг вперед. procedureTForm1.Button6Click(Sender: TObject); открыть форму 4, в которой реализованы графики курсов валют – реальный и спрогнозированный на 3 шага вперед. Unit 2. В данном программном модуле реализована возможность изменять настройки ННСTSK. Unit 3, Unit 4. Данные два программных модуля являются однотипными. В этих программных модулях происходит вывод графиков. Основной функцией данных программных модулей является: functionfi(g:real):integer; - при построении графика курса валюты сопоставляет реальное значение курса валюты к координате на экране. В приложении 2 представлен текст программного модуля. Выводы В данной курсовой работе рассматривалась нечеткая нейронная сеть TSK. Целью данной работы было исследовать возможность применения ННС TSKдля прогнозирования валютных курсов. Для экспериментальных исследований были выбраны курсы валют доллара США и российского рубля, а критериями правильности служили среднеквадратическое отклонение и средняя абсолютная процентная погрешность. Выборка была взята за 2007-2009 года, всего 500 точек. Для сравнения потенциальной эффективности ННС TSK были выбраны ИНС с кубическими сплайнами и МЭС. В результате экспериментов было установлено, что ННС TSKпроизводит значительно более эффективное прогнозирование валютных курсов чем МЭС, но немного уступает ИНС с кубическими сплайнами. СКО, полученное при прогнозировании ННС TSK, было в 2-6 раз меньше, чем СКО, полученное при прогнозировании МЭС. Таким образом, ННС TSKлучше МЭС по критерию СКО. Критерий САПП, полученный при прогнозировании рассматриваемой ИНС, был в 1,5-2 раза меньше, чем критерий САПП, полученный при прогнозировании МЭС. ННС TSK в сравнении с ИНС с кубическими сплайнами показала приблизительно одинаковые результаты, но в среднем на 3.75% хуже по критерию СКО и на 1% хуже по критерию САПП. Рассматривалась чувствительность ННС TSK к изменению длины обучающей выборке. При увеличении длины обучающей выборки СКО и критерий САПП уменьшались и стремились к установившемуся значению, на обучающей выборке. На проверочной выборке при увеличении обучающей выборки увеличиваются значения СКО и САПП и достигают своего максимального значения при длине обучающей выборки в 400 точек. Далее графики начинают убывать. Можно сделать вывод, что оптимальным значеное значение обучающей выборки составляет 50 точек. Рассматривалась чувствительность ННС TSK к изменению количества правил. На обучающей выборке при увеличении количества правил уменьшается ошибка по критерию СКО и САПП при прогнозах на 1 и на 3 шага вперед. На проверочной выборке при увеличении количества правил сначала достигается минимум при количества правил , а затем ошибка увеличивается. Во время выполнения экспериментальных исследований, были получены результаты, которые могут быть использованы в деятельности банков и других инвесторов. Литература 1. Лукашин Ю. П. Адаптивные методы краткосрочного прогнозирования временных рядов. – М.: Финансы и статистика, 2003. – 416 с. 2. Згуровский М. З., Подладчиков В. Н. Аналитические методы калмановской фильтрации для систем с априорной неопределенностью. – К.: Наукова думка, 1995. – 584с. 3. Зайченко Ю. П. Нечеткие модели и методы в интеллектуальных системах. К.: Слово, 2008. – 344с. 4. Круглов В. В., Борисов В. В. Искусственные нейронные сети. Теория и практика. – М.: Горячая линия – Телеком, 2001. – 382с. 5. Руденко О. Г., Бодянський Є. В. Штучні нейронні мережі. – Харків: Компанія СМІТ, 2006. – 404с. 6. Хоменко А., Гофман В., Мещеряков Е., Никифоров В. Delphi 7. – Санкт-Петербург: БВХ-Петербург, 2004. – 1200с. Приложение 1. Результаты экспериментальных исследований. Первый столбец – реальные данные. Второй столбец – прогноз на 1 шаг вперед. Третий столбец – ошибка прогноза на 1 шаг вперед. Четвертый столбец – прогноз на 3 шага вперед. Пятый столбец – ошибка прогноза на 3 шага вперед. USD_EUR 0.6456 0.6467 -0.0011 0.6447 0.0009 0.6415 0.6456 -0.0041 0.6467 -0.0052 0.6447 0.6438 0.0009 0.6474 -0.0027 0.6467 0.6447 0.0020 0.6438 0.0029 0.6441 0.6415 0.0026 0.6456 -0.0015 0.6384 0.6441 -0.0057 0.6415 -0.0031 0.6341 0.6384 -0.0043 0.6441 -0.0100 0.6368 0.6341 0.0027 0.6384 -0.0016 0.6336 0.6368 -0.0032 0.6341 -0.0005 0.6358 0.6336 0.0022 0.6368 -0.0010 0.6399 0.6358 0.0041 0.6336 0.0063 0.6441 0.6399 0.0042 0.6358 0.0083 0.6428 0.6441 -0.0013 0.6399 0.0029 0.6432 0.6428 0.0004 0.6441 -0.0009 0.6472 0.6432 0.0040 0.6428 0.0044 0.6472 0.6472 -0.0000 0.6432 0.0040 0.6427 0.6472 -0.0045 0.6472 -0.0045 0.6356 0.6427 -0.0071 0.6472 -0.0116 0.6363 0.6356 0.0007 0.6427 -0.0064 0.6464 0.6363 0.0101 0.6356 0.0108 0.6427 0.6464 -0.0037 0.6363 0.0064 0.6487 0.6427 0.0060 0.6464 0.0023 0.6508 0.6487 0.0021 0.6427 0.0081 0.6464 0.6508 -0.0044 0.6487 -0.0023 0.6444 0.6464 -0.0020 0.6508 -0.0064 0.6452 0.6444 0.0008 0.6464 -0.0012 0.6451 0.6452 -0.0001 0.6444 0.0007 0.6400 0.6451 -0.0051 0.6452 -0.0052 0.6456 0.6400 0.0056 0.6451 0.0005 0.6414 0.6456 -0.0042 0.6400 0.0014 0.6423 0.6414 0.0009 0.6456 -0.0033 0.6355 0.6423 -0.0068 0.6414 -0.0059 0.6350 0.6355 -0.0005 0.6423 -0.0073 0.6350 0.6350 -0.0000 0.6355 -0.0005 0.6330 0.6350 -0.0020 0.6350 -0.0020 0.6302 0.6330 -0.0028 0.6350 -0.0048 0.6366 0.6302 0.0064 0.6330 0.0036 0.6392 0.6366 0.0026 0.6302 0.0090 0.6389 0.6392 -0.0003 0.6366 0.0023 0.6352 0.6389 -0.0037 0.6392 -0.0040 0.6341 0.6352 -0.0011 0.6389 -0.0048 0.6291 0.6341 -0.0050 0.6352 -0.0061 0.6284 0.6291 -0.0007 0.6341 -0.0057 0.6280 0.6284 -0.0004 0.6291 -0.0011 0.6311 0.6280 0.0031 0.6284 0.0027 0.6306 0.6311 -0.0005 0.6280 0.0026 0.6307 0.6306 0.0001 0.6311 -0.0004 0.6299 0.6307 -0.0008 0.6306 -0.0007 0.6325 0.6299 0.0026 0.6307 0.0018 0.6367 0.6325 0.0042 0.6299 0.0068 0.6376 0.6367 0.0009 0.6325 0.0051 0.6351 0.6376 -0.0025 0.6367 -0.0016 0.6416 0.6351 0.0065 0.6376 0.0040 0.6428 0.6416 0.0012 0.6351 0.0077 0.6414 0.6428 -0.0014 0.6416 -0.0002 0.6424 0.6414 0.0010 0.6428 -0.0004 0.6435 0.6424 0.0011 0.6414 0.0021 0.6466 0.6435 0.0031 0.6424 0.0042 0.6489 0.6466 0.0023 0.6435 0.0054 0.6519 0.6489 0.0030 0.6466 0.0053 0.6646 0.6519 0.0127 0.6489 0.0157 0.6686 0.6646 0.0040 0.6519 0.0167 0.6711 0.6686 0.0025 0.6646 0.0065 0.6714 0.6711 0.0003 0.6686 0.0028 0.6731 0.6714 0.0017 0.6711 0.0020 0.6806 0.6731 0.0075 0.6714 0.0092 0.6789 0.6806 -0.0017 0.6731 0.0058 0.6782 0.6789 -0.0007 0.6806 -0.0024 0.6803 0.6782 0.0021 0.6789 0.0014 0.6724 0.6803 -0.0079 0.6782 -0.0058 0.6757 0.6724 0.0033 0.6803 -0.0046 0.6756 0.6757 -0.0001 0.6724 0.0032 0.6822 0.6756 0.0066 0.6757 0.0065 0.6811 0.6822 -0.0011 0.6756 0.0055 0.6809 0.6811 -0.0002 0.6822 -0.0013 0.6818 0.6809 0.0009 0.6811 0.0007 0.6887 0.6818 0.0069 0.6809 0.0078 0.6903 0.6887 0.0016 0.6818 0.0085 0.6965 0.6903 0.0062 0.6887 0.0078 0.7007 0.6965 0.0042 0.6903 0.0104 0.7081 0.7007 0.0074 0.6965 0.0116 0.7056 0.7081 -0.0025 0.7007 0.0049 0.7134 0.7056 0.0078 0.7081 0.0053 0.7176 0.7134 0.0042 0.7056 0.0120 0.7057 0.7176 -0.0119 0.7134 -0.0077 0.7052 0.7057 -0.0005 0.7176 -0.0124 0.7067 0.7052 0.0015 0.7057 0.0010 0.7076 0.7067 0.0009 0.7052 0.0024 0.6953 0.7076 -0.0123 0.7067 -0.0114 0.6950 0.6953 -0.0003 0.7076 -0.0126 0.6806 0.6950 -0.0144 0.6953 -0.0147 0.6786 0.6806 -0.0020 0.6950 -0.0164 0.6825 0.6786 0.0039 0.6806 0.0019 0.6830 0.6825 0.0005 0.6786 0.0044 0.6852 0.6830 0.0022 0.6825 0.0027 0.6954 0.6852 0.0102 0.6830 0.0124 0.7103 0.6954 0.0149 0.6852 0.0251 0.7114 0.7103 0.0011 0.6954 0.0160 0.7219 0.7114 0.0105 0.7103 0.0116 0.7238 0.7219 0.0019 0.7114 0.0124 0.7403 0.7238 0.0165 0.7219 0.0184 0.7327 0.7403 -0.0076 0.7238 0.0089 0.7311 0.7327 -0.0016 0.7403 -0.0092 0.7329 0.7311 0.0018 0.7327 0.0002 0.7425 0.7329 0.0096 0.7311 0.0114 0.7381 0.7425 -0.0044 0.7329 0.0052 0.7322 0.7381 -0.0059 0.7425 -0.0103 0.7372 0.7322 0.0050 0.7381 -0.0009 0.7454 0.7372 0.0082 0.7322 0.0132 0.7430 0.7454 -0.0024 0.7372 0.0058 0.7512 0.7430 0.0082 0.7454 0.0058 0.7632 0.7512 0.0120 0.7430 0.0202 0.7792 0.7632 0.0160 0.7512 0.0280 0.7766 0.7792 -0.0026 0.7632 0.0134 0.7902 0.7766 0.0136 0.7792 0.0110 0.8035 0.7902 0.0133 0.7766 0.0269 0.8016 0.8035 -0.0019 0.7902 0.0114 0.7782 0.8016 -0.0234 0.8035 -0.0253 0.7783 0.7782 0.0001 0.8016 -0.0233 0.7886 0.7783 0.0103 0.7782 0.0104 0.7863 0.7886 -0.0023 0.7783 0.0080 0.7681 0.7863 -0.0182 0.7886 -0.0205 0.7669 0.7681 -0.0012 0.7863 -0.0194 0.7840 0.7669 0.0171 0.7681 0.0159 0.7828 0.7840 -0.0012 0.7669 0.0159 0.7838 0.7828 0.0010 0.7840 -0.0002 0.7966 0.7838 0.0128 0.7828 0.0138 0.7984 0.7966 0.0018 0.7838 0.0146 0.7856 0.7984 -0.0128 0.7966 -0.0110 0.7858 0.7856 0.0002 0.7984 -0.0126 0.7882 0.7858 0.0024 0.7856 0.0026 0.7939 0.7882 0.0057 0.7858 0.0081 0.7986 0.7939 0.0047 0.7882 0.0104 0.7983 0.7986 -0.0003 0.7939 0.0044 0.7758 0.7983 -0.0225 0.7986 -0.0228 0.7675 0.7758 -0.0083 0.7983 -0.0308 0.7798 0.7675 0.0123 0.7758 0.0040 0.7798 0.7798 -0.0000 0.7675 0.0123 0.7916 0.7798 0.0118 0.7798 0.0118 0.7859 0.7916 -0.0057 0.7798 0.0061 0.7893 0.7859 0.0034 0.7916 -0.0023 0.7789 0.7893 -0.0104 0.7859 -0.0070 0.7903 0.7789 0.0114 0.7893 0.0010 0.7730 0.7903 -0.0173 0.7789 -0.0059 0.7729 0.7730 -0.0001 0.7903 -0.0174 0.7680 0.7729 -0.0049 0.7730 -0.0050 0.7523 0.7680 -0.0157 0.7729 -0.0206 0.7492 0.7523 -0.0031 0.7680 -0.0188 0.7320 0.7492 -0.0172 0.7523 -0.0203 0.7242 0.7320 -0.0078 0.7492 -0.0250 0.6968 0.7242 -0.0274 0.7320 -0.0352 0.6996 0.6968 0.0028 0.7242 -0.0246 0.7211 0.6996 0.0215 0.6968 0.0243 0.7168 0.7211 -0.0043 0.6996 0.0172 0.7162 0.7168 -0.0006 0.7211 -0.0049 0.7162 0.7162 0.0000 0.7168 -0.0006 0.7130 0.7162 -0.0032 0.7162 -0.0032 0.7027 0.7130 -0.0103 0.7162 -0.0135 0.7100 0.7027 0.0073 0.7130 -0.0030 0.7184 0.7100 0.0084 0.7027 0.0157 0.7172 0.7184 -0.0012 0.7100 0.0072 0.7366 0.7172 0.0194 0.7184 0.0182 0.7439 0.7366 0.0073 0.7172 0.0267 0.7290 0.7439 -0.0149 0.7366 -0.0076 0.7293 0.7290 0.0003 0.7439 -0.0146 0.7411 0.7293 0.0118 0.7290 0.0121 0.7493 0.7411 0.0082 0.7293 0.0200 0.7579 0.7493 0.0086 0.7411 0.0168 0.7591 0.7579 0.0012 0.7493 0.0098 0.7638 0.7591 0.0047 0.7579 0.0059 0.7553 0.7638 -0.0085 0.7591 -0.0038 0.7725 0.7553 0.0172 0.7638 0.0087 0.7772 0.7725 0.0047 0.7553 0.0219 0.7720 0.7772 -0.0052 0.7725 -0.0005 0.7782 0.7720 0.0062 0.7772 0.0010 0.7603 0.7782 -0.0179 0.7720 -0.0117 0.7601 0.7603 -0.0002 0.7782 -0.0181 0.7552 0.7601 -0.0049 0.7603 -0.0051 0.7700 0.7552 0.0148 0.7601 0.0099 0.7811 0.7700 0.0111 0.7552 0.0259 0.7809 0.7811 -0.0002 0.7700 0.0109 0.7687 0.7809 -0.0122 0.7811 -0.0124 0.7779 0.7687 0.0092 0.7809 -0.0030 0.7791 0.7779 0.0012 0.7687 0.0104 0.7769 0.7791 -0.0022 0.7779 -0.0010 0.7656 0.7769 -0.0113 0.7791 -0.0135 0.7714 0.7656 0.0058 0.7769 -0.0055 0.7757 0.7714 0.0043 0.7656 0.0101 0.7800 0.7757 0.0043 0.7714 0.0086 0.7766 0.7800 -0.0034 0.7757 0.0009 0.7832 0.7766 0.0066 0.7800 0.0032 0.7957 0.7832 0.0125 0.7766 0.0191 0.7971 0.7957 0.0014 0.7832 0.0139 0.7891 0.7971 -0.0080 0.7957 -0.0066 0.7881 0.7891 -0.0010 0.7971 -0.0090 0.7846 0.7881 -0.0035 0.7891 -0.0045 0.7849 0.7846 0.0003 0.7881 -0.0032 0.7856 0.7849 0.0007 0.7846 0.0010 0.7835 0.7856 -0.0021 0.7849 -0.0014 0.7899 0.7835 0.0064 0.7856 0.0043 0.7950 0.7899 0.0051 0.7835 0.0115 0.7970 0.7950 0.0020 0.7899 0.0071 0.7933 0.7970 -0.0037 0.7950 -0.0017 0.7959 0.7933 0.0026 0.7970 -0.0011 0.7892 0.7959 -0.0067 0.7933 -0.0041 0.7914 0.7892 0.0022 0.7959 -0.0045 0.7842 0.7914 -0.0072 0.7892 -0.0050 0.7829 0.7842 -0.0013 0.7914 -0.0085 0.7814 0.7829 -0.0015 0.7842 -0.0028 0.7759 0.7814 -0.0055 0.7829 -0.0070 0.7695 0.7759 -0.0064 0.7814 -0.0119 0.7710 0.7695 0.0015 0.7759 -0.0049 0.7628 0.7710 -0.0082 0.7695 -0.0067 0.7310 0.7628 -0.0318 0.7710 -0.0400 0.7372 0.7310 0.0062 0.7628 -0.0256 0.7371 0.7372 -0.0001 0.7310 0.0061 0.7395 0.7371 0.0024 0.7372 0.0023 0.7387 0.7395 -0.0008 0.7371 0.0016 0.7376 0.7387 -0.0011 0.7395 -0.0019 0.7516 0.7376 0.0140 0.7387 0.0129 0.7609 0.7516 0.0093 0.7376 0.0233 0.7542 0.7609 -0.0067 0.7516 0.0026 0.7563 0.7542 0.0021 0.7609 -0.0046 0.7431 0.7563 -0.0132 0.7542 -0.0111 0.7437 0.7431 0.0006 0.7563 -0.0126 0.7484 0.7437 0.0047 0.7431 0.0053 0.7530 0.7484 0.0046 0.7437 0.0093 0.7526 0.7530 -0.0004 0.7484 0.0042 0.7606 0.7526 0.0080 0.7530 0.0076 0.7489 0.7606 -0.0117 0.7526 -0.0037 0.7533 0.7489 0.0044 0.7606 -0.0073 0.7587 0.7533 0.0054 0.7489 0.0098 0.7579 0.7587 -0.0008 0.7533 0.0046 0.7675 0.7579 0.0096 0.7587 0.0088 0.7751 0.7675 0.0076 0.7579 0.0172 0.7706 0.7751 -0.0045 0.7675 0.0031 0.7686 0.7706 -0.0020 0.7751 -0.0065 0.7665 0.7686 -0.0021 0.7706 -0.0041 0.7532 0.7665 -0.0133 0.7686 -0.0154 0.7613 0.7532 0.0081 0.7665 -0.0052 0.7657 0.7613 0.0044 0.7532 0.0125 0.7506 0.7657 -0.0151 0.7613 -0.0107 0.7552 0.7506 0.0046 0.7657 -0.0105 0.7539 0.7552 -0.0013 0.7506 0.0033 0.7483 0.7539 -0.0056 0.7552 -0.0069 0.7478 0.7483 -0.0005 0.7539 -0.0061 0.7513 0.7478 0.0035 0.7483 0.0030 0.7458 0.7513 -0.0055 0.7478 -0.0020 0.7412 0.7458 -0.0046 0.7513 -0.0101 0.7343 0.7412 -0.0069 0.7458 -0.0115 0.7343 0.7412 0.7458 0.7343 USD_GBR 0.5135 0.5135 0.0007 0.5098 0.0044 0.5142 0.5098 0.0037 0.5133 0.0002 0.5131 0.5142 -0.0011 0.5135 -0.0004 0.5108 0.5131 -0.0023 0.5142 -0.0034 0.5129 0.5108 0.0021 0.5131 -0.0002 0.5076 0.5129 -0.0053 0.5108 -0.0032 0.5084 0.5076 0.0008 0.5129 -0.0045 0.5054 0.5084 -0.0030 0.5076 -0.0022 0.5046 0.5054 -0.0008 0.5084 -0.0038 0.5062 0.5046 0.0016 0.5054 0.0008 0.5049 0.5062 -0.0013 0.5046 0.0003 0.5061 0.5049 0.0012 0.5062 -0.0001 0.5053 0.5061 -0.0008 0.5049 0.0004 0.5085 0.5053 0.0032 0.5061 0.0024 0.5089 0.5085 0.0004 0.5053 0.0036 0.5116 0.5089 0.0027 0.5085 0.0031 0.5112 0.5116 -0.0004 0.5089 0.0023 0.5078 0.5112 -0.0034 0.5116 -0.0038 0.5061 0.5078 -0.0017 0.5112 -0.0051 0.5117 0.5061 0.0056 0.5078 0.0039 0.5090 0.5117 -0.0027 0.5061 0.0029 0.5137 0.5090 0.0047 0.5117 0.0020 0.5129 0.5137 -0.0008 0.5090 0.0039 0.5093 0.5129 -0.0036 0.5137 -0.0044 0.5117 0.5093 0.0024 0.5129 -0.0012 0.5110 0.5117 -0.0007 0.5093 0.0017 0.5069 0.5110 -0.0041 0.5117 -0.0048 0.5068 0.5069 -0.0001 0.5110 -0.0042 0.5100 0.5068 0.0032 0.5069 0.0031 0.5074 0.5100 -0.0026 0.5068 0.0006 0.5083 0.5074 0.0009 0.5100 -0.0017 0.5058 0.5083 -0.0025 0.5074 -0.0016 0.5016 0.5058 -0.0042 0.5083 -0.0067 0.5024 0.5016 0.0008 0.5058 -0.0034 0.5012 0.5024 -0.0012 0.5016 -0.0004 0.5019 0.5012 0.0007 0.5024 -0.0005 0.5045 0.5019 0.0026 0.5012 0.0033 0.5077 0.5045 0.0032 0.5019 0.0058 0.5080 0.5077 0.0003 0.5045 0.0035 0.5048 0.5080 -0.0032 0.5077 -0.0029 0.5057 0.5048 0.0009 0.5080 -0.0023 0.5027 0.5057 -0.0030 0.5048 -0.0021 0.5018 0.5027 -0.0009 0.5057 -0.0039 0.4988 0.5018 -0.0030 0.5027 -0.0039 0.5002 0.4988 0.0014 0.5018 -0.0016 0.4991 0.5002 -0.0011 0.4988 0.0003 0.5004 0.4991 0.0013 0.5002 0.0002 0.5006 0.5004 0.0002 0.4991 0.0015 0.5014 0.5006 0.0008 0.5004 0.0010 0.4995 0.5014 -0.0019 0.5006 -0.0011 0.5030 0.4995 0.0035 0.5014 0.0016 0.5015 0.5030 -0.0015 0.4995 0.0020 0.5049 0.5015 0.0034 0.5030 0.0019 0.5048 0.5049 -0.0001 0.5015 0.0033 0.5049 0.5048 0.0001 0.5049 0.0000 0.5065 0.5049 0.0016 0.5048 0.0017 0.5100 0.5065 0.0035 0.5049 0.0051 0.5120 0.5100 0.0020 0.5065 0.0055 0.5134 0.5120 0.0014 0.5100 0.0034 0.5144 0.5134 0.0010 0.5120 0.0024 0.5210 0.5144 0.0066 0.5134 0.0076 0.5223 0.5210 0.0013 0.5144 0.0079 0.5262 0.5223 0.0039 0.5210 0.0052 0.5353 0.5262 0.0091 0.5223 0.0130 0.5344 0.5353 -0.0009 0.5262 0.0082 0.5363 0.5344 0.0019 0.5353 0.0010 0.5356 0.5363 -0.0007 0.5344 0.0012 0.5360 0.5356 0.0004 0.5363 -0.0003 0.5370 0.5360 0.0010 0.5356 0.0014 0.5331 0.5370 -0.0039 0.5360 -0.0029 0.5393 0.5331 0.0062 0.5370 0.0023 0.5380 0.5393 -0.0013 0.5331 0.0049 0.5438 0.5380 0.0058 0.5393 0.0045 0.5459 0.5438 0.0021 0.5380 0.0079 0.5477 0.5459 0.0018 0.5438 0.0039 0.5498 0.5477 0.0021 0.5459 0.0039 0.5600 0.5498 0.0102 0.5477 0.0123 0.5620 0.5600 0.0020 0.5498 0.0122 0.5654 0.5620 0.0034 0.5600 0.0054 0.5654 0.5654 0.0000 0.5620 0.0034 0.5701 0.5654 0.0047 0.5654 0.0047 0.5659 0.5701 -0.0042 0.5654 0.0005 0.5699 0.5659 0.0040 0.5701 -0.0002 0.5715 0.5699 0.0016 0.5659 0.0056 0.5588 0.5715 -0.0127 0.5699 -0.0111 0.5589 0.5588 0.0001 0.5715 -0.0126 0.5610 0.5589 0.0021 0.5588 0.0022 0.5589 0.5610 -0.0021 0.5589 -0.0000 0.5499 0.5589 -0.0090 0.5610 -0.0111 0.5467 0.5499 -0.0032 0.5589 -0.0122 0.5410 0.5467 -0.0057 0.5499 -0.0089 0.5380 0.5410 -0.0030 0.5467 -0.0087 0.5405 0.5380 0.0025 0.5410 -0.0005 0.5432 0.5405 0.0027 0.5380 0.0052 0.5435 0.5432 0.0003 0.5405 0.0030 0.5542 0.5435 0.0107 0.5432 0.0110 0.5617 0.5542 0.0075 0.5435 0.0182 0.5617 0.5617 0.0000 0.5542 0.0075 0.5660 0.5617 0.0043 0.5617 0.0043 0.5636 0.5660 -0.0024 0.5617 0.0019 0.5754 0.5636 0.0118 0.5660 0.0094 0.5685 0.5754 -0.0069 0.5636 0.0049 0.5777 0.5685 0.0092 0.5754 0.0023 0.5800 0.5777 0.0023 0.5685 0.0115 0.5870 0.5800 0.0070 0.5777 0.0093 0.5780 0.5870 -0.0090 0.5800 -0.0020 0.5720 0.5780 -0.0060 0.5870 -0.0150 0.5736 0.5720 0.0016 0.5780 -0.0044 0.5801 0.5736 0.0065 0.5720 0.0081 0.5779 0.5801 -0.0022 0.5736 0.0043 0.5836 0.5779 0.0057 0.5801 0.0035 0.5939 0.5836 0.0103 0.5779 0.0160 0.6184 0.5939 0.0245 0.5836 0.0348 0.6180 0.6184 -0.0004 0.5939 0.0241 0.6312 0.6180 0.0132 0.6184 0.0128 0.6465 0.6312 0.0153 0.6180 0.0285 0.6414 0.6465 -0.0051 0.6312 0.0102 0.6136 0.6414 -0.0278 0.6465 -0.0329 0.6152 0.6136 0.0016 0.6414 -0.0262 0.6189 0.6152 0.0037 0.6136 0.0053 0.6307 0.6189 0.0118 0.6152 0.0155 0.6213 0.6307 -0.0094 0.6189 0.0024 0.6190 0.6213 -0.0023 0.6307 -0.0117 0.6331 0.6190 0.0141 0.6213 0.0118 0.6334 0.6331 0.0003 0.6190 0.0144 0.6395 0.6334 0.0061 0.6331 0.0064 0.6663 0.6395 0.0268 0.6334 0.0329 0.6758 0.6663 0.0095 0.6395 0.0363 0.6730 0.6758 -0.0028 0.6663 0.0067 0.6654 0.6730 -0.0076 0.6758 -0.0104 0.6650 0.6654 -0.0004 0.6730 -0.0080 0.6627 0.6650 -0.0023 0.6654 -0.0027 0.6760 0.6627 0.0133 0.6650 0.0110 0.6747 0.6760 -0.0013 0.6627 0.0120 0.6589 0.6747 -0.0158 0.6760 -0.0171 0.6516 0.6589 -0.0073 0.6747 -0.0231 0.6570 0.6516 0.0054 0.6589 -0.0019 0.6570 0.6570 -0.0000 0.6516 0.0054 0.6737 0.6570 0.0167 0.6570 0.0167 0.6690 0.6737 -0.0047 0.6570 0.0120 0.6766 0.6690 0.0076 0.6737 0.0029 0.6762 0.6766 -0.0004 0.6690 0.0072 0.6846 0.6762 0.0084 0.6766 0.0080 0.6742 0.6846 -0.0104 0.6762 -0.0020 0.6768 0.6742 0.0026 0.6846 -0.0078 0.6744 0.6768 -0.0024 0.6742 0.0002 0.6688 0.6744 -0.0056 0.6768 -0.0080 0.6724 0.6688 0.0036 0.6744 -0.0020 0.6546 0.6724 -0.0178 0.6688 -0.0142 0.6529 0.6546 -0.0017 0.6724 -0.0195 0.6469 0.6529 -0.0060 0.6546 -0.0077 0.6622 0.6469 0.0153 0.6529 0.0093 0.6734 0.6622 0.0112 0.6469 0.0265 0.6755 0.6734 0.0021 0.6622 0.0133 0.6776 0.6755 0.0021 0.6734 0.0042 0.6817 0.6776 0.0041 0.6755 0.0062 0.6850 0.6817 0.0033 0.6776 0.0074 0.6853 0.6850 0.0003 0.6817 0.0036 0.6947 0.6853 0.0094 0.6850 0.0097 0.6842 0.6947 -0.0105 0.6853 -0.0011 0.6886 0.6842 0.0044 0.6947 -0.0061 0.6848 0.6886 -0.0038 0.6842 0.0006 0.6768 0.6848 -0.0080 0.6886 -0.0118 0.6557 0.6768 -0.0211 0.6848 -0.0291 0.6585 0.6557 0.0028 0.6768 -0.0183 0.6564 0.6585 -0.0021 0.6557 0.0007 0.6746 0.6564 0.0182 0.6585 0.0161 0.6886 0.6746 0.0140 0.6564 0.0322 0.6843 0.6886 -0.0043 0.6746 0.0097 0.6849 0.6843 0.0006 0.6886 -0.0037 0.6787 0.6849 -0.0062 0.6843 -0.0056 0.7132 0.6787 0.0345 0.6849 0.0283 0.7286 0.7132 0.0154 0.6787 0.0499 0.7225 0.7286 -0.0061 0.7132 0.0093 0.7327 0.7225 0.0102 0.7286 0.0041 0.7164 0.7327 -0.0163 0.7225 -0.0061 0.7070 0.7164 -0.0094 0.7327 -0.0257 0.6986 0.7070 -0.0084 0.7164 -0.0178 0.7012 0.6986 0.0026 0.7070 -0.0058 0.6939 0.7012 -0.0073 0.6986 -0.0047 0.7029 0.6939 0.0090 0.7012 0.0017 0.6949 0.7029 -0.0080 0.6939 0.0010 0.6910 0.6949 -0.0039 0.7029 -0.0119 0.6836 0.6910 -0.0074 0.6949 -0.0113 0.6769 0.6836 -0.0067 0.6910 -0.0141 0.6697 0.6769 -0.0072 0.6836 -0.0139 0.6848 0.6697 0.0151 0.6769 0.0079 0.6961 0.6848 0.0113 0.6697 0.0264 0.7020 0.6961 0.0059 0.6848 0.0172 0.6934 0.7020 -0.0086 0.6961 -0.0027 0.7009 0.6934 0.0075 0.7020 -0.0011 0.7031 0.7009 0.0022 0.6934 0.0097 0.7027 0.7031 -0.0004 0.7009 0.0018 0.6989 0.7027 -0.0038 0.7031 -0.0042 0.6978 0.6989 -0.0011 0.7027 -0.0049 0.6874 0.6978 -0.0104 0.6989 -0.0115 0.6942 0.6874 0.0068 0.6978 -0.0036 0.7011 0.6942 0.0069 0.6874 0.0137 0.6973 0.7011 -0.0038 0.6942 0.0031 0.7004 0.6973 0.0031 0.7011 -0.0007 0.7150 0.7004 0.0146 0.6973 0.0177 0.7127 0.7150 -0.0023 0.7004 0.0123 0.7072 0.7127 -0.0055 0.7150 -0.0078 0.7082 0.7072 0.0010 0.7127 -0.0045 0.7088 0.7082 0.0006 0.7072 0.0016 0.7270 0.7088 0.0182 0.7082 0.0188 0.7225 0.7270 -0.0045 0.7088 0.0137 0.7260 0.7225 0.0035 0.7270 -0.0010 0.7242 0.7260 -0.0018 0.7225 0.0017 0.7158 0.7242 -0.0084 0.7260 -0.0102 0.7098 0.7158 -0.0060 0.7242 -0.0144 0.7134 0.7098 0.0036 0.7158 -0.0024 0.7158 0.7134 0.0024 0.7098 0.0060 0.6857 0.7158 -0.0301 0.7134 -0.0277 0.6929 0.6857 0.0072 0.7158 -0.0229 0.6899 0.6929 -0.0030 0.6857 0.0042 0.6790 0.6899 -0.0109 0.6929 -0.0139 0.6857 0.6790 0.0067 0.6899 -0.0042 0.6899 0.6857 0.0042 0.6790 0.0109 0.6982 0.6899 0.0083 0.6857 0.0125 0.7070 0.6982 0.0088 0.6899 0.0171 0.6993 0.7070 -0.0077 0.6982 0.0011 0.6943 0.6993 -0.0050 0.7070 -0.0127 0.6804 0.6943 -0.0139 0.6993 -0.0189 0.6757 0.6804 -0.0047 0.6943 -0.0186 0.6799 0.6757 0.0042 0.6804 -0.0005 0.6783 0.6799 -0.0016 0.6757 0.0026 0.6807 0.6783 0.0024 0.6799 0.0008 0.6840 0.6807 0.0033 0.6783 0.0057 0.6745 0.6840 -0.0095 0.6807 -0.0062 0.6710 0.6745 -0.0035 0.6840 -0.0130 0.6671 0.6710 -0.0039 0.6745 -0.0074 0.6709 0.6671 0.0038 0.6710 -0.0001 0.6768 0.6709 0.0059 0.6671 0.0097 0.6881 0.6768 0.0113 0.6709 0.0172 0.6805 0.6881 -0.0076 0.6768 0.0037 0.6899 0.6805 0.0094 0.6881 0.0018 0.6833 0.6899 -0.0066 0.6805 0.0028 0.6805 0.6833 -0.0028 0.6899 -0.0094 0.6814 0.6805 0.0009 0.6833 -0.0019 0.6847 0.6814 0.0033 0.6805 0.0042 0.6757 0.6847 -0.0090 0.6814 -0.0057 0.6758 0.6757 0.0001 0.6847 -0.0089 0.6721 0.6758 -0.0037 0.6757 -0.0036 0.6675 0.6721 -0.0046 0.6758 -0.0083 0.6625 0.6675 -0.0050 0.6721 -0.0096 0.6640 0.6625 0.0015 0.6675 -0.0035 0.6659 0.6640 0.0019 0.6625 0.0034 0.6629 0.6659 -0.0030 0.6640 -0.0011 0.6604 0.6629 -0.0025 0.6659 -0.0055 0.6604 0.6629 0.6629 0.6604 USD_JPY 104.2047103.6934 0.5113104.4752 -0.2705 103.6750104.1532 -0.4782103.9586 -0.2836 103.3538103.7136 -0.3598104.2417 -0.8879 104.4162103.8443 0.5719103.1780 1.2382 105.1965104.6120 0.5845103.7789 1.4176 104.6245105.3017 -0.6772104.4557 0.1688 103.8663104.6587 -0.7924105.1283 -1.2620 104.0468103.2421 0.8047103.7106 0.3362 103.2146104.0812 -0.8666103.4110 -0.1964 104.0054103.2579 0.7475103.9839 0.0215 104.6970103.9241 0.7729103.2032 1.4938 105.5150104.8956 0.6194104.0755 1.4395 105.4793105.6390 -0.1597104.5459 0.9334 104.4164105.5561 -1.1397105.5807 -1.1643 105.2747104.2905 0.9842105.3336 -0.0589 104.9968105.1988 -0.2020104.4596 0.5372 106.0071105.1390 0.8681105.3583 0.6488 105.3396106.0117 -0.6721104.9532 0.3864 106.0645105.4359 0.6286106.1152 -0.0507 107.2048105.9861 1.2187105.1282 2.0766 106.7869107.4222 -0.6353106.2245 0.5624 107.9575106.8772 1.0803107.0488 0.9087 107.9269107.9415 -0.0146106.8273 1.0996 108.1965108.1012 0.0953107.9392 0.2573 108.0338108.1617 -0.1279107.8048 0.2290 108.0664108.0579 0.0085108.3384 -0.2720 107.9554108.0349 -0.0795107.9153 0.0401 107.4351107.9581 -0.5230108.1700 -0.7349 107.8848107.3776 0.5072107.9300 -0.0452 107.7769107.8545-0.0776107.4728 0.3041 108.2971107.8528 0.4443107.9095 0.3876 107.2984108.3039 -1.0055107.7333 -0.4349 106.2944107.2947 -1.0003108.3423 -2.0479 106.1863106.0563 0.1300107.1921 -1.0058 106.0248106.0854 -0.0606106.4272 -0.4024 105.8753106.0431 -0.1678106.1969 -0.3216 106.8054105.8473 0.9581106.0948 0.7106 107.5554106.8658 0.6896105.8739 1.6815 107.3564107.7478 -0.3914106.7494 0.6070 107.1263107.4012 -0.2749107.4787 -0.3524 107.0368107.0468 -0.0100107.3239 -0.2871 106.1570107.0067 -0.8497107.1020 -0.9450 106.1868106.0859 0.1009107.0694 -0.8826 104.7869106.0738 -1.2869106.2198 -1.4329 104.6150104.7198 -0.1048106.2534 -1.6384 105.8364104.4107 1.4257104.7460 1.0904 106.7551105.9719 0.7832104.7716 1.9835 106.7465107.0026 -0.2561105.7435 1.0030 107.1114106.8163 0.2951106.7354 0.3760 107.6872107.0969 0.5903106.6261 1.0611 107.8848107.7818 0.1030107.0591 0.8257 107.5046107.9624 -0.4578107.6889 -0.1843 108.2056107.4754 0.7302107.9143 0.2913 108.1870108.1999 -0.0129107.4856 0.7014 108.0871108.2976 -0.2105108.2339 -0.1468 107.6053108.0457 -0.4404108.1475 -0.5422 107.6109107.5539 0.0570108.1463 -0.5354 108.2055107.5503 0.6552107.5461 0.6594 109.3957108.2748 1.1209107.6952 1.7005 109.4451109.5706 -0.1255108.1942 1.2509 110.1055109.5842 0.5213109.3696 0.7359 110.0850110.1106 -0.0256109.3361 0.7489 109.7970110.1698 -0.3728110.1055 -0.3085 108.7249109.7420 -1.0171110.0064 -1.2815 109.7552108.6015 1.1537109.8985 -0.1433 110.4866109.7037 0.7829108.7124 1.7742 110.0572110.7325 -0.6753109.8777 0.1795 109.6855110.0777 -0.3922110.3860 -0.7005 109.9856109.5642 0.4214110.0738 -0.0882 108.3790109.9773 -1.5983109.6098 -1.2308 109.8756108.3100 1.5656110.0301 -0.1545 109.1267109.7623 -0.6356108.4184 0.7083 109.8350109.3425 0.4925110.0045 -0.1695 109.7370109.7238 0.0132108.9142 0.8228 109.5551109.8576 -0.3025110.0551 -0.5000 108.6947109.4965 -0.8018109.4605 -0.7658 108.8670108.6058 0.2612109.7313 -0.8643 108.1861108.7719 -0.5858108.6138 -0.4277 107.7733108.1944 -0.4211108.9838 -1.2105 106.9573107.6413 -0.6840108.1489 -1.1916 107.9747106.8670 1.1077107.8699 0.1048 107.1451107.9631 -0.8180106.8994 0.2457 107.8066107.2547 0.5519108.0774 -0.2708 106.6838107.7014 -1.0176107.0155 -0.3317 107.4962106.7212 0.7750107.9234 -0.4272 105.7049107.3789 -1.6740106.4903 -0.7854 105.0252105.7235 -0.6983107.7239 -2.6987 104.6862104.6929 -0.0067105.5097 -0.8235 104.9147104.6463 0.2684105.3032 -0.3885 107.2019104.9187 2.2832104.5594 2.6425 106.3546107.4292 -1.0746105.0790 1.2756 105.7269106.5887 -0.8618107.0892 -1.3623 106.0364105.4599 0.5765106.1532 -0.1168 106.4852106.0112 0.4740105.8302 0.6550 106.0768106.5915 -0.5147105.9432 0.1336 105.1272106.0923 -0.9651106.6466 -1.5194 105.9056104.9764 0.9292106.0290 -0.1234 106.0050105.8558 0.1492105.1129 0.8921 105.2649106.1614 -0.8965105.9634 -0.6985 105.7965105.1861 0.6104105.9675 -0.1710 101.2568105.7327 -4.4759105.3084 -4.0516 102.2947101.0037 1.2910105.7483 -3.4536 99.8173101.7366 -1.9193101.2389 -1.4216 100.6065 99.9650 0.6415102.7212 -2.1147 99.4775100.2899 -0.8124 99.5095 -0.0320 101.9915 99.6053 2.3862101.1341 0.8574 102.2266102.0035 0.2231 98.9648 3.2618 101.4766102.6365 -1.1599102.3201 -0.8435 100.4066101.3382 -0.9316101.7757 -1.3691 101.3968100.2074 1.1894101.6569 -0.2601 101.7571101.3628 0.3943100.2512 1.5059 100.4266101.9686 -1.5420101.6170 -1.1904 98.6563100.3274 -1.6711101.7039 -3.0476 97.6207 98.3188 -0.6981100.4396 -2.8189 94.2454 97.3574 -3.1120 98.6428 -4.3974 93.2939 93.9185 -0.6246 97.7662 -4.4723 95.6676 92.8079 2.8597 94.3728 1.2948 97.5334 95.8772 1.6562 93.5395 3.9939 97.4601 98.0488 -0.5887 95.5741 1.8860 98.3483 97.6028 0.7455 97.4382 0.9101 98.9630 98.3229 0.6401 97.2104 1.7526 100.5150 99.1338 1.3812 98.2112 2.3038 98.9452100.6814 -1.7362 98.9457 -0.0005 98.0802 99.0040 -0.9238100.6267 -2.5465 98.1398 97.7287 0.4111 98.7853 -0.6455 97.9667 98.0956 -0.1289 98.2796 -0.3129 95.5363 98.0012 -2.4649 98.1114 -2.5751 95.9177 95.3191 0.5986 98.1315 -2.2138 96.6655 95.6251 1.0404 95.4940 1.1715 97.0700 96.8850 0.1850 96.0422 1.0278 97.3705 97.1888 0.1817 96.5722 0.7983 96.7957 97.4155 -0.6198 97.1509 -0.3552 95.0168 96.7724 -1.7556 97.1733 -2.1565 95.4330 94.7845 0.6485 96.7678 -1.3348 96.6894 95.2495 1.4399 95.1000 1.5894 95.5379 96.9251 -1.3872 95.5664 -0.0285 95.4584 95.6008 -0.1424 96.6537 -1.1953 95.4584 95.2391 0.2193 95.5144 -0.0560 93.7002 95.4978 -1.7976 95.4435 -1.7433 93.6774 93.5661 0.1113 95.3844 -1.7070 93.2757 93.4367 -0.1610 93.8503 -0.5746 92.8238 93.3194 -0.4956 93.7424 -0.9186 92.1794 92.7362 -0.5568 93.2163 -1.0369 92.7862 92.0851 0.7011 92.9562 -0.1700 92.4707 92.7670 -0.2963 92.0831 0.3876 92.9495 92.5575 0.3920 92.8446 0.1049 91.9511 92.9179 -0.9668 92.4006 -0.4495 91.2942 91.9509 -0.6567 92.9999 -1.7057 90.6955 91.0856 -0.3901 91.8239 -1.1284 89.9984 90.6031 -0.6047 91.4485 -1.4501 87.8918 89.8923 -2.0005 90.6667 -2.7749 89.8309 87.6581 2.1728 90.1155 -0.2846 89.4728 89.7293 -0.2565 87.8974 1.5754 90.0872 89.8028 0.2844 89.9653 0.1219 90.5922 90.0024 0.5898 89.2512 1.3410 90.6927 90.7298 -0.0371 90.2506 0.4421 90.7961 90.7422 0.0539 90.2757 0.5204 90.1971 90.7948 -0.5977 90.8259 -0.6288 90.3676 90.1589 0.2087 90.7442 -0.3766 90.7826 90.2949 0.4877 90.2052 0.5774 91.1710 90.8652 0.3058 90.4473 0.7237 93.2288 91.2510 1.9778 90.7510 2.4778 94.2125 93.4253 0.7872 91.1851 3.0274 92.6775 94.5521 -1.8746 93.1602 -0.4827 91.1701 92.5978 -1.4277 94.0493 -2.8792 90.2615 90.7967 -0.5352 92.6708 -2.4093 88.9377 90.0525 -1.1148 91.2312 -2.2935 89.6021 88.7784 0.8237 90.4170 -0.8149 89.2845 89.5166 -0.2321 89.1180 0.1665 89.6059 89.4097 0.1962 89.6598 -0.0539 90.2992 89.5597 0.7395 89.1386 1.1606 90.2350 90.4112 -0.1762 89.6661 0.5689 87.8123 90.3101 -2.4978 90.1344 -2.3221 88.6358 87.5811 1.0547 90.2541 -1.6183 88.7680 88.3737 0.3943 87.7991 0.9689 89.2236 88.9986 0.2250 88.8081 0.4155 88.9986 89.2430 -0.2444 88.6771 0.3215 89.8851 89.0361 0.8490 89.3744 0.5107 89.7548 89.9040 -0.1492 88.7528 1.0020 89.8599 89.8746 -0.0147 89.9663 -0.1064 89.8895 89.8111 0.0784 89.6602 0.2293 89.1458 89.9111 -0.7653 89.9426 -0.7968 89.5372 89.0866 0.4506 89.8105 -0.2733 91.0048 89.4656 1.5392 89.2152 1.7896 91.9793 91.2070 0.7723 89.5821 2.3972 91.4678 92.2389 -0.7711 90.9557 0.5121 90.6801 91.4940 -0.8139 91.9201 -1.2400 90.6920 90.5036 0.1884 91.3634 -0.6714 90.5481 90.6078 -0.0597 90.6939 -0.1458 91.8299 90.5740 1.2559 90.7829 1.0470 91.7903 91.9117 -0.1214 90.6186 1.1717 92.1859 91.9678 0.2181 91.8520 0.3339 93.7943 92.1546 1.6397 91.6293 2.1650 94.1347 93.9756 0.1591 92.2388 1.8959 93.8757 94.3625 -0.4868 93.6779 0.1978 94.6506 93.8294 0.8212 94.1099 0.5407 96.5962 94.6599 1.9363 93.8742 2.7220 97.3393 96.8663 0.4730 94.6164 2.7229 98.5506 97.6280 0.9226 96.6173 1.9333 97.7521 98.6596 -0.9075 97.2478 0.5043 97.2149 97.8187 -0.6038 98.4909 -1.2760 98.1670 97.0092 1.1578 97.6207 0.5463 99.3445 98.2037 1.1408 97.4075 1.9370 98.3789 99.5915 -1.2126 98.1655 0.2134 97.8970 98.4207 -0.5237 99.3811 -1.4841 98.8658 97.6743 1.1915 98.2918 0.5740 98.3694 98.9188 -0.5494 97.9192 0.4502 97.7678 98.4843 -0.7165 98.8709 -1.1031 97.8455 97.6101 0.2354 98.4137 -0.5682 98.0733 97.7911 0.2822 97.7994 0.2739 98.1854 98.1292 0.0562 97.7886 0.3968 98.8252 98.2223 0.6029 98.1432 0.6820 98.0766 98.8807 -0.8041 98.1704 -0.0938 93.8748 98.0993 -4.2245 98.7777 -4.9029 96.2015 93.4128 2.7887 98.0216 -1.8201 97.3443 95.8469 1.4974 93.9637 3.3806 97.8650 97.9390 -0.0740 96.4820 1.3830 97.7297 97.9614 -0.2317 97.1135 0.6162 98.4887 97.7366 0.7521 98.0388 0.4499 98.0442 98.5059 -0.4617 97.3021 0.7421 97.4509 98.1178 -0.6669 98.6099 -1.1590 99.1565 97.3099 1.8466 98.0282 1.1283 98.9339 99.2296 -0.2957 97.5538 1.3801 99.4738 99.1750 0.2988 99.1365 0.3373 99.9801 99.4106 0.5695 98.8575 1.1226 100.6456100.1018 0.5438 99.5492 1.0964 100.7463100.7430 0.0033 99.7912 0.9551 99.9573100.8216 -0.8643100.7525 -0.7952 100.4478 99.8785 0.5693100.6632 -0.2154 100.1850100.3742 -0.1892 99.9783 0.2067 99.1191100.2661 -1.1470100.5100 -1.3909 99.4106 98.9781 0.4325100.1609 -0.7503 99.2822 99.3000 -0.0178 99.2079 0.0743 99.2366 99.3595 -0.1229 99.4044 -0.1678 98.2790 99.2035 -0.9245 99.2741 -0.9951 98.6319 98.2027 0.4292 99.2994 -0.6675 98.1775 98.5318 -0.3543 98.1886 -0.0111 97.9343 98.2324 -0.2981 98.7338 -0.7995 97.0596 97.8385 -0.7789 98.1129 -1.0533 96.6301 96.9775 -0.3474 98.0336 -1.4035 96.5189 96.4886 0.0303 96.9784 -0.4595 96.9999 96.4910 0.5089 96.7422 0.2577 98.7637 97.0427 1.7210 96.5080 2.2557 99.2699 98.9736 0.2963 97.0288 2.2411 99.1705 99.5282 -0.3577 98.6867 0.4838 98.7453 99.1523 -0.4070 99.1221 -0.3768 98.5859 98.6740 -0.0881 99.1509 -0.5650 99.0247 98.5195 0.5052 98.7007 0.3240 98.9880 99.0567 -0.0687 98.7084 0.2796 97.4909 99.0523 -1.5614 99.0643 -1.5734 97.3483 -0.7667 98.9848 97.5723 RUR_USD 24.5076 24.5046 0.0030 24.3359 0.1717 24.6456 24.5071 0.1385 24.5037 0.1419 24.8917 24.6467 0.2450 24.5077 0.3840 24.6325 24.8928 -0.2603 24.6460 -0.0135 24.6349 24.6309 0.0040 24.8931 -0.2582 24.4386 24.6368 -0.1982 24.6331 -0.1945 24.5952 24.4378 0.1574 24.6357 -0.0405 24.4750 24.5958 -0.1208 24.4404 0.0346 24.4764 24.4735 0.0029 24.5934 -0.1170 24.4262 24.4766 -0.0504 24.4748 -0.0486 24.4201 24.4261 -0.0060 24.4749 -0.0548 24.4543 24.4199 0.0344 24.4270 0.0273 24.5211 24.4544 0.0667 24.4194 0.1017 24.6706 24.5211 0.1495 24.4541 0.2165 24.5486 24.5202 0.0284 24.5767 -0.0281 24.5299 24.5487 -0.0188 24.5204 0.0095 24.4663 24.5296 -0.0633 24.5481 -0.0818 24.4558 24.4660 -0.0102 24.5298 -0.0740 24.1966 24.4560 -0.2594 24.4659 -0.2693 24.6466 24.6711 -0.0245 24.5208 0.1258 24.7813 24.6462 0.1351 24.6706 0.1107 24.6715 24.7825 -0.1110 24.6470 0.0245 24.6537 24.6709 -0.0172 24.7818 -0.1281 24.6655 24.6543 0.0112 24.6728 -0.0073 24.6392 24.6657 -0.0265 24.6536 -0.0144 24.5861 24.6387 -0.0526 24.6664 -0.0803 24.5767 24.5859 -0.0092 24.6386 -0.0619 24.5206 24.5768 -0.0562 24.5858 -0.0652 24.1159 24.1953 -0.0794 24.4559 -0.3400 24.0023 24.1162 -0.1139 24.1965 -0.1942 24.0103 24.0014 0.0089 24.1151 -0.1048 24.0480 24.0098 0.0382 24.0020 0.0460 24.0473 24.0476 -0.0003 24.0083 0.0390 23.9349 24.0469 -0.1120 24.0471 -0.1122 23.8353 23.9345 -0.0992 24.0465 -0.2112 23.8587 23.8354 0.0233 23.9348 -0.0761 23.8461 23.8589 -0.0128 23.8354 0.0107 23.6924 23.8454 -0.1530 23.8586 -0.1662 23.6490 23.6915 -0.0425 23.8453 -0.1963 23.5126 23.6494 -0.1368 23.6916 -0.1790 23.5325 23.5118 0.0207 23.6489 -0.1164 23.5581 23.5325 0.0256 23.5124 0.0457 23.6781 23.5577 0.1204 23.5312 0.1469 23.7773 23.6782 0.0991 23.5576 0.2197 23.8351 23.7774 0.0577 23.6771 0.1580 23.7010 23.8354 -0.1344 23.7774 -0.0764 23.6559 23.7008 -0.0449 23.8355 -0.1796 23.5171 23.6566 -0.1395 23.7020 -0.1849 23.5156 23.5165 -0.0009 23.6566 -0.1410 23.5027 23.5156 -0.0129 23.5175 -0.0148 23.5799 23.5022 0.0777 23.5145 0.0654 23.6706 23.5799 0.0907 23.5022 0.1684 23.6153 23.6707 -0.0554 23.5789 0.0364 23.5982 23.6149 -0.0167 23.6705 -0.0723 23.6028 23.5988 0.0040 23.6153 -0.0125 23.5330 23.6030 -0.0700 23.5987 -0.0657 23.5437 23.5325 0.0112 23.6035 -0.0598 23.4628 23.5439 -0.0811 23.5327 -0.0699 23.4825 23.4623 0.0202 23.5434 -0.0609 23.5139 23.4827 0.0312 23.4628 0.0511 23.4549 23.5138 -0.0589 23.4819 -0.0270 23.4482 23.4544 -0.0062 23.5139 -0.0657 23.3703 23.4485 -0.0782 23.4544 -0.0841 23.3696 23.3699 -0.0003 23.4482 -0.0786 23.4704 23.3697 0.1007 23.3705 0.0999 23.4299 23.4706 -0.0407 23.3691 0.0608 23.3448 23.4292 -0.0844 23.4703 -0.1255 23.4391 23.3448 0.0943 23.4295 0.0096 23.6007 23.4400 0.1607 23.3447 0.2560 23.6037 23.6007 0.0030 23.4397 0.1640 23.6471 23.6031 0.0440 23.6006 0.0465 23.6588 23.6479 0.0109 23.6033 0.0555 23.7633 23.6592 0.1041 23.6477 0.1156 23.7456 23.7638 -0.0182 23.6601 0.0855 23.7523 23.7453 0.0070 23.7635 -0.0112 23.8833 23.7527 0.1306 23.7460 0.1373 23.8328 23.8841 -0.0513 23.7524 0.0804 23.7199 23.8321 -0.1122 23.8840 -0.1641 23.8521 23.7199 0.1322 23.8330 0.0191 23.8482 23.8533 -0.0051 23.7199 0.1283 23.8391 23.8473 -0.0082 23.8529 -0.0138 23.7238 23.8391 -0.1153 23.8481 -0.1243 23.7462 23.7237 0.0225 23.8383 -0.0921 23.6874 23.7467 -0.0593 23.7246 -0.0372 23.5758 23.6868 -0.1110 23.7462 -0.1704 23.6007 23.5752 0.0255 23.6873 -0.0866 23.5483 23.6011 -0.0528 23.5749 -0.0266 23.5513 23.5475 0.0038 23.6006 -0.0493 23.5847 23.5512 0.0335 23.5479 0.0368 23.6659 23.5848 0.0811 23.5504 0.1155 23.7384 23.6660 0.0724 23.5847 0.1537 23.7473 23.7385 0.0088 23.6656 0.0817 23.6968 23.7474 -0.0506 23.7385 -0.0417 23.8019 23.6970 0.1049 23.7477 0.0542 23.8116 23.8028 0.0088 23.6974 0.1142 23.6809 23.8112 -0.1303 23.8024 -0.1215 23.5210 23.6804 -0.1594 23.8119 -0.2909 23.6109 23.5211 0.0898 23.6806 -0.0697 23.6748 23.6116 0.0632 23.5215 0.1533 23.7795 23.6740 0.1055 23.6108 0.1687 23.6402 23.7795 -0.1393 23.6739 -0.0337 23.6586 23.6397 0.0189 23.7783 -0.1197 23.5979 23.6596 -0.0617 23.6408 -0.0429 23.6288 23.5975 0.0313 23.6590 -0.0302 23.5908 23.6288 -0.0380 23.5987 -0.0079 23.6223 23.5904 0.0319 23.6279 -0.0056 23.6113 23.6225 -0.0112 23.5908 0.0205 23.5245 23.6111 -0.0866 23.6219 -0.0974 23.4573 23.5241 -0.0668 23.6115 -0.1542 23.4068 23.4574 -0.0506 23.5243 -0.1175 23.4689 23.4066 0.0623 23.4574 0.0115 23.4147 23.4689 -0.0542 23.4066 0.0081 23.3759 23.4139 -0.0380 23.4682 -0.0923 23.5125 23.3759 0.1366 23.4142 0.0983 23.5024 23.5133 -0.0109 23.3754 0.1270 23.4147 23.5016 -0.0869 23.5128 -0.0981 23.4363 23.4146 0.0217 23.5022 -0.0659 23.3727 23.4371 -0.0644 23.4144 -0.0417 23.2300 23.3721 -0.1421 23.4371 -0.2071 23.1255 23.2294 -0.1039 23.3728 -0.2473 23.1638 23.1255 0.0383 23.2293 -0.0655 23.2250 23.1638 0.0612 23.1254 0.0996 23.1937 23.2245 -0.0308 23.1632 0.0305 23.2120 23.1931 0.0189 23.2239 -0.0119 23.1960 23.2124 -0.0164 23.1929 0.0031 23.3220 23.1960 0.1260 23.2121 0.1099 23.3782 23.3226 0.0556 23.1965 0.1817 23.3572 23.3780 -0.0208 23.3218 0.0354 23.3610 23.3572 0.0038 23.3784 -0.0174 23.3278 23.3616 -0.0338 23.3572 -0.0294 23.4456 23.3278 0.1178 23.3619 0.0837 23.4186 23.4462 -0.0276 23.3283 0.0903 23.4697 23.4180 0.0517 23.4455 0.0242 23.4039 23.4702 -0.0663 23.4187 -0.0148 23.4354 23.4037 0.0317 23.4695 -0.0341 23.5142 23.4358 0.0784 23.4047 0.1095 23.5816 23.5144 0.0672 23.4353 0.1463 23.8782 23.5815 0.2967 23.5145 0.3637 24.5697 23.8795 0.6902 23.5813 0.9884 24.3424 24.5721 -0.2297 23.8785 0.4639 24.1559 24.3399 -0.1840 24.5707 -0.4148 24.2901 24.1584 0.1317 24.3439 -0.0538 24.5054 24.2928 0.2126 24.1580 0.3474 24.4898 24.5048 -0.0150 24.2950 0.1948 24.5703 24.4888 0.0815 24.5047 0.0656 24.4316 24.5716 -0.1400 24.4885 -0.0569 24.3013 24.4313 -0.1300 24.5711 -0.2698 24.2699 24.3014 -0.0315 24.4334 -0.1635 24.4389 24.2701 0.1688 24.3013 0.1376 24.5803 24.4390 0.1413 24.2702 0.3101 24.6019 24.5799 0.0220 24.4379 0.1640 24.5474 24.6018 -0.0544 24.5794 -0.0320 24.5769 24.5479 0.0290 24.6018 -0.0249 24.6670 24.5777 0.0893 24.5486 0.1184 24.7184 24.6672 0.0512 24.5780 0.1404 24.8739 24.7182 0.1557 24.6673 0.2066 25.2144 24.8747 0.3397 24.7182 0.4962 25.4552 25.2157 0.2395 24.8741 0.5811 25.2626 25.4556 -0.1930 25.2153 0.0473 25.5814 25.2622 0.3192 25.4561 0.1253 25.5761 25.5850 -0.0089 25.2642 0.3119 25.7842 25.5752 0.2090 25.5838 0.2004 25.7013 25.7853 -0.0840 25.5785 0.1228 25.3938 25.7011 -0.3073 25.7832 -0.3894 25.5245 25.3932 0.1313 25.7036 -0.1791 25.4307 25.5265 -0.0958 25.3941 0.0366 25.4863 25.4289 0.0574 25.5256 -0.0393 25.2690 25.4863 -0.2173 25.4304 -0.1614 24.9864 25.2680 -0.2816 25.4840 -0.4976 25.0703 24.9858 0.0845 25.2696 -0.1993 24.8982 25.0713 -0.1731 24.9857 -0.0875 25.0221 24.8959 0.1262 25.0702 -0.0481 25.2464 25.0226 0.2238 24.8967 0.3497 25.6023 25.2468 0.3555 25.0197 0.5826 25.8993 25.6029 0.2964 25.2468 0.6525 26.1784 25.9003 0.2781 25.6015 0.5769 26.1791 26.1801 -0.0010 25.9005 0.2786 26.1629 26.1799 -0.0170 26.1806 -0.0177 26.0695 26.1644 -0.0949 26.1823 -0.1128 26.2080 26.0700 0.1380 26.1655 0.0425 26.1111 26.2089 -0.0978 26.0718 0.0393 26.0871 26.1099 -0.0228 26.2082 -0.1211 26.1347 26.0874 0.0473 26.1111 0.0236 26.3691 26.1352 0.2339 26.0864 0.2827 26.2505 26.3696 -0.1191 26.1355 0.1150 26.0561 26.2492 -0.1931 26.3686 -0.3125 26.4417 26.0564 0.3853 26.2505 0.1912 26.9215 26.4444 0.4771 26.0564 0.8651 26.9793 26.9214 0.0579 26.4431 0.5362 27.0596 26.9783 0.0813 26.9213 0.1383 27.3507 27.0620 0.2887 26.9785 0.3722 27.3018 27.3532 -0.0514 27.0623 0.2395 27.0979 27.3009 -0.2030 27.3546 -0.2567 27.0981 27.0981 -0.0000 27.3031 -0.2050 26.9146 27.0995 -0.1849 27.0986 -0.1840 26.9114 26.9132 -0.0018 27.1000 -0.1886 27.0041 26.9114 0.0927 26.9145 0.0896 26.9639 27.0041 -0.0402 26.9097 0.0542 27.3399 26.9629 0.3770 27.0038 0.3361 27.4704 27.3419 0.1285 26.9627 0.5077 27.6704 27.4698 0.2006 27.3397 0.3307 27.3386 27.6716 -0.3330 27.4715 -0.1329 27.4374 27.3379 0.0995 27.6705 -0.2331 27.4301 27.4398 -0.0097 27.3415 0.0886 27.4413 27.4295 0.0118 27.4384 0.0029 27.5715 27.4406 0.1309 27.4316 0.1399 27.5665 27.5723 -0.0058 27.4392 0.1273 27.6613 27.5660 0.0953 27.5718 0.0895 27.3913 27.6621 -0.2708 27.5667 -0.1754 27.3563 27.3902 -0.0339 27.6614 -0.3051 27.4216 27.3573 0.0643 27.3923 0.0293 27.6060 27.4216 0.1844 27.3561 0.2499 27.9409 27.6057 0.3352 27.4221 0.5188 28.0166 27.9418 0.0748 27.6043 0.4123 27.9212 28.0164 -0.0952 27.9406 -0.0194 27.9576 27.9219 0.0357 28.0175 -0.0599 28.0916 27.9592 0.1324 27.9228 0.1688 28.0043 28.0920 -0.0877 27.9601 0.0442 28.0029 28.0033 -0.0004 28.0925 -0.0896 27.8671 28.0036 -0.1365 28.0039 -0.1368 27.9310 27.8667 0.0643 28.0030 -0.0720 27.8077 27.9315 -0.1238 27.8680 -0.0603 27.8160 27.8066 0.0094 27.9304 -0.1144 27.6009 27.8162 -0.2153 27.8076 -0.2067 27.5199 27.5998 -0.0799 27.8149 -0.2950 27.6095 27.5200 0.0895 27.6012 0.0083 27.7351 27.6097 0.1254 27.5189 0.2162 28.2682 27.7345 0.5337 27.6092 0.6590 28.3359 28.2700 0.0659 27.7337 0.6022 28.6119 28.3349 0.2770 28.2676 0.3443 28.6735 28.6145 0.0590 28.3371 0.3364 29.0058 28.6745 0.3313 28.6132 0.3926 29.2300 29.0079 0.2221 28.6777 0.5523 29.3804 29.2308 0.1496 29.0071 0.3733 29.3916 29.3813 0.0103 29.2324 0.1592 30.5331 29.3926 1.1405 29.3815 1.1516 30.9981 30.5390 0.4591 29.3943 1.6038 31.2226 30.9966 0.2260 30.5351 0.6875 31.5616 31.2248 0.3368 31.0008 0.5608 32.2135 31.5667 0.6468 31.2238 0.9897 32.5747 32.2170 0.3577 31.5701 1.0046 32.9085 32.5755 0.3330 32.2185 0.6900 33.4154 32.9113 0.5041 32.5777 0.8377 32.6430 33.4192 -0.7762 32.9118 -0.2688 32.7991 32.6398 0.1593 33.4209 -0.6218 32.8926 32.8046 0.0880 32.6470 0.2456 32.9018 32.8921 0.0097 32.8011 0.1007 32.9979 32.8997 0.0982 32.8964 0.1015 33.2155 32.9990 0.2165 32.8971 0.3184 34.6847 33.2164 1.4683 32.9982 1.6865 34.7236 34.6905 0.0331 33.2164 1.5072 34.7195 33.2160 34.6872 34.7258 RUR_EUR 35.8669 35.8636 0.0033 36.0642 -0.1973 35.8298 35.8672 -0.0374 35.8623 -0.0325 35.8490 35.8316 0.0174 35.8673 -0.0183 35.9832 35.8508 0.1324 35.8318 0.1514 35.9891 35.9818 0.0073 35.8482 0.1409 36.0714 35.9893 0.0821 35.9838 0.0876 36.1033 36.0697 0.0336 35.9888 0.1145 36.1398 36.1016 0.0382 36.0701 0.0697 36.1688 36.1389 0.0299 36.1038 0.0650 36.2900 36.1675 0.1225 36.1388 0.1512 36.3225 36.2881 0.0344 36.1688 0.1537 36.2731 36.3216 -0.0485 36.2897 -0.0166 36.3059 36.2728 0.0331 36.3223 -0.0164 36.0980 36.3042 -0.2062 36.2719 -0.1739 36.0259 36.1003 -0.0744 36.3060 -0.2801 35.8585 36.0271 -0.1686 36.0986 -0.2401 35.9316 35.8611 0.0705 36.0253 -0.0937 35.8317 35.9332 -0.1015 35.8609 -0.0292 35.9006 35.8343 0.0663 35.9315 -0.0309 35.9732 35.9011 0.0721 35.8334 0.1398 36.0309 35.9721 0.0588 35.8992 0.1317 36.0663 36.0309 0.0354 35.9747 0.0916 36.0992 36.0649 0.0343 36.0297 0.0695 36.1036 36.0978 0.0058 36.0659 0.0377 36.1399 36.1028 0.0371 36.0988 0.0411 36.2248 36.1390 0.0858 36.1034 0.1214 36.1921 36.2235 -0.0314 36.1396 0.0525 36.3893 36.1923 0.1970 36.2249 0.1644 36.4054 36.3863 0.0191 36.1917 0.2137 36.5099 36.4045 0.1054 36.3885 0.1214 36.5125 36.5081 0.0044 36.4061 0.1064 36.5169 36.5104 0.0065 36.5076 0.0093 36.4918 36.5162 -0.0244 36.5132 -0.0214 36.6204 36.4910 0.1294 36.5157 0.1047 36.6921 36.6189 0.0732 36.4922 0.1999 36.6446 36.6913 -0.0467 36.6203 0.0243 36.6538 36.6448 0.0090 36.6924 -0.0386 36.8701 36.6521 0.2180 36.6431 0.2270 36.8995 36.8671 0.0324 36.6535 0.2460 37.1123 36.8996 0.2127 36.8708 0.2415 37.0825 37.1088 -0.0263 36.8992 0.1833 37.0216 37.0805 -0.0589 37.1100 -0.0884 36.8739 37.0211 -0.1472 37.0831 -0.2092 36.7526 36.8737 -0.1211 37.0193 -0.2667 36.6632 36.7546 -0.0914 36.8750 -0.2118 36.8527 36.6655 0.1872 36.7530 0.0997 36.9103 36.8525 0.0578 36.6646 0.2457 37.0794 36.9112 0.1682 36.8535 0.2259 37.0676 37.0775 -0.0099 36.9109 0.1567 37.0873 37.0656 0.0217 37.0771 0.0102 36.9851 37.0857 -0.1006 37.0678 -0.0827 36.8693 36.9847 -0.1154 37.0856 -0.2163 36.9414 36.8707 0.0707 36.9859 -0.0445 36.9760 36.9408 0.0352 36.8689 0.1071 36.9714 36.9771 -0.0057 36.9426 0.0288 37.0433 36.9723 0.0710 36.9768 0.0665 37.0295 37.0416 -0.0121 36.9702 0.0593 37.1299 37.0293 0.1006 37.0433 0.0866 37.1070 37.1285 -0.0215 37.0296 0.0774 37.0603 37.1066 -0.0463 37.1291 -0.0688 37.1291 37.0605 0.0686 37.1075 0.0216 37.1396 37.1274 0.0122 37.0591 0.0805 37.2336 37.1399 0.0937 37.1297 0.1039 37.2348 37.2327 0.0021 37.1400 0.0948 37.1137 37.2340 -0.1203 37.2327 -0.1190 37.1598 37.1146 0.0452 37.2350 -0.0752 37.2606 37.1583 0.1023 37.1127 0.1479 37.1463 37.2599 -0.1136 37.1601 -0.0138 36.9422 37.1486 -0.2064 37.2619 -0.3197 36.9469 36.9437 0.0032 37.1453 -0.1984 36.8895 36.9464 -0.0569 36.9414 -0.0519 36.8959 36.8922 0.0037 36.9485 -0.0526 36.7666 36.8978 -0.1312 36.8912 -0.1246 36.7701 36.7683 0.0018 36.8951 -0.1250 36.7757 36.7706 0.0051 36.7674 0.0083 36.6035 36.7761 -0.1726 36.7698 -0.1663 36.6715 36.6068 0.0647 36.7772 -0.1057 36.8346 36.6707 0.1639 36.6029 0.2317 36.8730 36.8334 0.0396 36.6715 0.2015 37.0339 36.8739 0.1600 36.8365 0.1974 36.9053 37.0306 -0.1253 36.8716 0.0337 36.9474 36.9050 0.0424 37.0325 -0.0851 36.9705 36.9458 0.0247 36.9055 0.0650 37.0731 36.9692 0.1039 36.9457 0.1274 37.2238 37.0730 0.1508 36.9725 0.2513 37.0932 37.2215 -0.1283 37.0720 0.0212 37.1357 37.0940 0.0417 37.2238 -0.0881 37.1239 37.1335 -0.0096 37.0922 0.0317 37.0987 37.1231 -0.0244 37.1344 -0.0357 36.8904 37.1001 -0.2097 37.1258 -0.2354 36.7827 36.8925 -0.1098 37.0976 -0.3149 36.8701 36.7842 0.0859 36.8908 -0.0207 36.8699 36.8703 -0.0004 36.7829 0.0870 36.7382 36.8724 -0.1342 36.8722 -0.1340 36.7699 36.7404 0.0295 36.8703 -0.1004 36.9233 36.7687 0.1546 36.7370 0.1863 37.1420 36.9221 0.2199 36.7703 0.3717 36.8070 37.1406 -0.3336 36.9247 -0.1177 36.6841 36.8099 -0.1258 37.1412 -0.4571 36.5681 36.6831 -0.1150 36.8056 -0.2375 36.6943 36.5688 0.1255 36.6823 0.0120 36.6827 36.6967 -0.0140 36.5725 0.1102 36.7325 36.6846 0.0479 36.6941 0.0384 36.7003 36.7325 -0.0322 36.6837 0.0166 36.7427 36.6995 0.0432 36.7308 0.0119 36.7138 36.7421 -0.0283 36.7010 0.0128 36.7203 36.7138 0.0065 36.7420 -0.0217 36.8276 36.7204 0.1072 36.7144 0.1132 36.9077 36.8261 0.0816 36.7197 0.1880 36.9710 36.9070 0.0640 36.8281 0.1429 36.9823 36.9697 0.0126 36.9075 0.0748 37.0561 36.9807 0.0754 36.9699 0.0862 37.1069 37.0542 0.0527 36.9819 0.1250 36.9381 37.1056 -0.1675 37.0557 -0.1176 36.8823 36.9396 -0.0573 37.1070 -0.2247 36.7822 36.8820 -0.0998 36.9373 -0.1551 36.8747 36.7836 0.0911 36.8820 -0.0073 36.8774 36.8756 0.0018 36.7842 0.0932 36.9009 36.8784 0.0225 36.8746 0.0263 36.8759 36.9012 -0.0253 36.8784 -0.0025 36.8559 36.8753 -0.0194 36.8995 -0.0436 36.8093 36.8560 -0.0467 36.8763 -0.0670 36.7991 36.8097 -0.0106 36.8556 -0.0565 36.8142 36.7996 0.0146 36.8097 0.0045 36.9419 36.8144 0.1275 36.7992 0.1427 36.7695 36.9409 -0.1714 36.8146 -0.0451 36.6664 36.7715 -0.1051 36.9418 -0.2754 36.7128 36.6669 0.0459 36.7694 -0.0566 36.6768 36.7118 -0.0350 36.6651 0.0117 36.7203 36.6794 0.0409 36.7151 0.0052 36.5329 36.7206 -0.1877 36.6771 -0.1442 36.5752 36.5348 0.0404 36.7195 -0.1443 36.5353 36.5749 -0.0396 36.5336 0.0017 36.4586 36.5362 -0.0776 36.5745 -0.1159 36.3999 36.4612 -0.0613 36.5375 -0.1376 36.4564 36.4004 0.0560 36.4574 -0.0010 36.4737 36.4565 0.0172 36.4006 0.0731 36.2996 36.4745 -0.1749 36.4570 -0.1574 36.7808 36.3020 0.4788 36.4741 0.3067 36.1850 36.7746 -0.5896 36.2988 -0.1138 36.1034 36.1925 -0.0891 36.7809 -0.6775 36.1922 36.1040 0.0882 36.1870 0.0052 36.1406 36.1891 -0.0485 36.0974 0.0432 36.1200 36.1475 -0.0275 36.2007 -0.0807 35.9832 36.1207 -0.1375 36.1388 -0.1556 36.0439 35.9841 0.0598 36.1191 -0.0752 35.9975 36.0438 -0.0463 35.9842 0.0133 36.1257 35.9988 0.1269 36.0438 0.0819 36.0083 36.1253 -0.1170 35.9989 0.0094 36.0888 36.0093 0.0795 36.1245 -0.0357 36.1574 36.0878 0.0696 36.0092 0.1482 36.2884 36.1558 0.1326 36.0872 0.2012 36.2264 36.2877 -0.0613 36.1592 0.0672 36.1248 36.2260 -0.1012 36.2870 -0.1622 35.9455 36.1247 -0.1792 36.2261 -0.2806 35.9279 35.9466 -0.0187 36.1236 -0.1957 36.5937 35.9292 0.6645 35.9466 0.6471 36.3908 36.5877 -0.1969 35.9286 0.4622 36.2670 36.3949 -0.1279 36.5953 -0.3283 36.0877 36.2657 -0.1780 36.3905 -0.3028 36.1851 36.0841 0.1010 36.2598 -0.0747 35.9922 36.1866 -0.1944 36.0925 -0.1003 36.0821 35.9965 0.0856 36.1851 -0.1030 36.4299 36.0824 0.3475 35.9938 0.4361 36.2958 36.4257 -0.1299 36.0804 0.2154 36.4066 36.2988 0.1078 36.4325 -0.0259 36.2568 36.4029 -0.1461 36.2940 -0.0372 36.6274 36.2557 0.3717 36.4033 0.2241 36.8974 36.6239 0.2735 36.2596 0.6378 36.7957 36.8938 -0.0981 36.6254 0.1703 36.7099 36.7967 -0.0868 36.8996 -0.1897 36.5948 36.7060 -0.1112 36.7911 -0.1963 36.3700 36.5939 -0.2239 36.7085 -0.3385 36.1530 36.3740 -0.2210 36.5967 -0.4437 35.8757 36.1569 -0.2812 36.3703 -0.4946 35.5476 35.8811 -0.3335 36.1539 -0.6063 35.5512 35.5547 -0.0035 35.8777 -0.3265 35.5632 35.5546 0.0086 35.5491 0.0141 35.6839 35.5673 0.1166 35.5534 0.1305 35.5171 35.6857 -0.1686 35.5658 -0.0487 35.6051 35.5189 0.0862 35.6828 -0.0777 35.6063 35.6034 0.0029 35.5172 0.0891 35.5798 35.6058 -0.0260 35.6038 -0.0240 35.3188 35.5814 -0.2626 35.6086 -0.2898 35.3988 35.3210 0.0778 35.5781 -0.1793 35.1731 35.3980 -0.2249 35.3193 -0.1462 35.0881 35.1771 -0.0890 35.3990 -0.3109 34.6345 35.0913 -0.4568 35.1758 -0.5413 34.5767 34.6400 -0.0633 35.0862 -0.5095 34.4144 34.5800 -0.1656 34.6374 -0.2230 34.0844 34.4192 -0.3348 34.5766 -0.4922 34.1627 34.0930 0.0697 34.4191 -0.2564 34.4306 34.1631 0.2675 34.0833 0.3473 34.4092 34.4305 -0.0213 34.1645 0.2447 34.5449 34.4123 0.1326 34.4336 0.1113 34.6484 34.5413 0.1071 34.4072 0.2412 34.5112 34.6446 -0.1334 34.5425 -0.0313 34.5677 34.5124 0.0553 34.6497 -0.0820 34.8064 34.5653 0.2411 34.5095 0.2969 34.6319 34.8032 -0.1713 34.5671 0.0648 34.3777 34.6350 -0.2573 34.8082 -0.4305 34.7938 34.3791 0.4147 34.6307 0.1631 34.5766 34.7874 -0.2108 34.3754 0.2012 34.6250 34.5819 0.0431 34.7966 -0.1716 34.6693 34.6251 0.0442 34.5785 0.0908 34.4975 34.6656 -0.1681 34.6196 -0.1221 34.5215 34.5014 0.0201 34.6735 -0.1520 34.9141 34.5206 0.3935 34.4958 0.4183 35.2416 34.9098 0.3318 34.5213 0.7203 35.4565 35.2393 0.2172 34.9161 0.5404 35.3629 35.4520 -0.0891 35.2407 0.1222 35.7166 35.3586 0.3580 35.4525 0.2641 35.4095 35.7083 -0.2988 35.3609 0.0486 35.3037 35.4113 -0.1076 35.7153 -0.4116 35.4404 35.3043 0.1361 35.4112 0.0292 35.3887 35.4367 -0.0480 35.2993 0.0894 35.8786 35.3928 0.4858 35.4452 0.4334 36.0107 35.8733 0.1374 35.3884 0.6223 36.0061 36.0080 -0.0019 35.8769 0.1292 36.1715 36.0045 0.1670 36.0120 0.1595 36.6678 36.1641 0.5037 36.0005 0.6673 36.9008 36.6607 0.2401 36.1721 0.7287 37.4292 36.8973 0.5319 36.6681 0.7611 37.8188 37.4192 0.3996 36.8990 0.9198 38.7040 37.8082 0.8958 37.4245 1.2795 39.7798 38.6890 1.0908 37.8182 1.9616 39.5475 39.7602 -0.2127 38.6989 0.8486 39.7253 39.5423 0.1830 39.7777 -0.0524 39.6674 39.7097 -0.0423 39.5393 0.1281 39.9565 39.6584 0.2981 39.7169 0.2396 40.1859 39.9546 0.2313 39.6736 0.5123 40.7880 40.1817 0.6063 39.9529 0.8351 41.6294 40.7802 0.8492 40.1874 1.4420 41.4411 41.6156 -0.1745 40.7846 0.6565 41.4275 41.4382 -0.0107 41.6282 -0.2007 41.1311 41.4180 -0.2869 41.4354 -0.3043 41.5282 41.1271 0.4011 41.4206 0.1076 41.4105 41.5255 -0.1150 41.1360 0.2745 41.9706 41.4133 0.5573 41.5269 0.4437 42.3833 41.9653 0.4180 41.4138 0.9695 43.0800 42.3750 0.7050 41.9651 1.1149 43.7815 43.0705 0.7110 42.3865 1.3950 43.3331 43.7658 -0.4327 43.0733 0.2598 42.1454 43.3310 -1.1856 43.7795 -1.6341 42.6454 42.1493 0.4961 43.3269 -0.6815 42.3986 42.6348 -0.2362 42.1402 0.2584 42.4861 42.4112 0.0749 42.6523 -0.1662 43.7123 42.4947 1.2176 42.4092 1.3031 44.0305 43.6941 0.3364 42.4763 1.5542 45.3398 44.0287 1.3111 43.7178 1.6220 45.6636 45.3182 0.3454 44.0284 1.6352 45.6461 44.0178 45.3414 45.6499 RUR_GBR 48.3020 48.1174 0.1846 47.6670 0.6350 48.0688 48.3034 -0.2346 48.1218 -0.0530 48.2725 48.0550 0.2175 48.2878 -0.0153 48.2304 48.2600 -0.0296 48.0600 0.1704 48.1588 48.2330 -0.0742 48.2770 -0.1182 48.3396 48.1575 0.1821 48.2200 0.1196 48.6493 48.3377 0.3116 48.1501 0.4992 48.6122 48.6540 -0.0418 48.3493 0.2629 48.6982 48.6094 0.0888 48.6409 0.0573 48.5520 48.6874 -0.1354 48.6026 -0.0506 48.5765 48.5465 0.0300 48.6975 -0.1210 48.1114 48.5749 -0.4635 48.5488 -0.4374 48.4047 48.1109 0.2938 48.5708 -0.1661 48.4284 48.4076 0.0208 48.1147 0.3137 48.3073 48.4404 -0.1331 48.4118 -0.1045 48.1179 48.3079 -0.1900 48.4325 -0.3146 47.9861 48.1105 -0.1244 48.2977 -0.3116 48.1462 47.9876 0.1586 48.1341 0.0121 48.2926 48.1539 0.1387 47.9855 0.3071 48.4875 48.3006 0.1869 48.1506 0.3369 48.4518 48.4873 -0.0355 48.2922 0.1596 48.1556 48.4453 -0.2897 48.4851 -0.3295 47.8765 48.1462 -0.2697 48.4496 -0.5731 47.8575 47.8716 -0.0141 48.1508 -0.2933 47.7278 47.8650 -0.1372 47.8821 -0.1543 48.0494 47.7396 0.3098 47.8636 0.1858 48.0752 48.0567 0.0185 47.7309 0.3443 48.1319 48.0796 0.0523 48.0575 0.0744 47.8098 48.1266 -0.3168 48.0763 -0.2665 47.7070 47.8014 -0.0944 48.1257 -0.4187 47.6749 47.7039 -0.0290 47.8140 -0.1391 47.7810 47.6816 0.0994 47.7061 0.0749 47.6088 47.7902 -0.1814 47.6821 -0.0733 47.6687 47.6108 0.0579 47.7792 -0.1105 48.0305 47.6666 0.3639 47.6137 0.4168 47.8820 48.0350 -0.1530 47.6733 0.2087 48.0117 47.8836 0.1281 48.0335 -0.0218 48.1690 48.0019 0.1671 47.8686 0.3004 48.0761 48.1671 -0.0910 48.0142 0.0619 47.3379 48.0754 -0.7375 48.1699 -0.8320 47.1921 47.3272 -0.1351 48.0604 -0.8683 47.3400 47.1893 0.1507 47.3423 -0.0023 46.9442 47.3610 -0.4168 47.2089 -0.2647 47.1551 46.9597 0.1954 47.3502 -0.1951 47.2126 47.1545 0.0581 46.9390 0.2736 47.2337 47.2206 0.0131 47.1786 0.0551 47.3922 47.2360 0.1562 47.2186 0.1736 47.1824 47.3877 -0.2053 47.2221 -0.0397 46.9912 47.1799 -0.1887 47.4022 -0.4110 46.7492 46.9853 -0.2361 47.1738 -0.4246 46.6623 46.7498 -0.0875 46.9924 -0.3301 46.8418 46.6701 0.1717 46.7577 0.0841 46.9212 46.8523 0.0689 46.6653 0.2559 47.0784 46.9287 0.1497 46.8510 0.2274 46.9082 47.0765 -0.1683 46.9209 -0.0127 46.7271 46.9022 -0.1751 47.0789 -0.3518 46.2963 46.7203 -0.4240 46.9069 -0.6106 46.3296 46.2949 0.0347 46.7250 -0.3954 46.3662 46.3367 0.0295 46.3026 0.0636 46.4023 46.3808 0.0215 46.3372 0.0651 46.2108 46.4098 -0.1990 46.3747 -0.1639 46.1507 46.2082 -0.0575 46.4016 -0.2509 46.0675 46.1484 -0.0809 46.2201 -0.1526 46.6224 46.0711 0.5513 46.1541 0.4683 46.8633 46.6305 0.2328 46.0713 0.7920 46.3701 46.8690 -0.4989 46.6228 -0.2527 46.4585 46.3553 0.1032 46.8558 -0.3973 46.3813 46.4416 -0.0603 46.3567 0.0246 46.5831 46.3890 0.1941 46.4730 0.1101 46.8274 46.5911 0.2363 46.3755 0.4519 47.0577 46.8295 0.2282 46.5735 0.4842 46.5227 47.0558 -0.5331 46.8366 -0.3139 46.9777 46.5102 0.4675 47.0461 -0.0684 46.8572 46.9688 -0.1116 46.5171 0.3401 46.7208 46.8666 -0.1458 46.9838 -0.2630 46.6274 46.7183 -0.0909 46.8509 -0.2235 46.4477 46.6212 -0.1735 46.7064 -0.2587 46.3511 46.4522 -0.1011 46.6493 -0.2982 46.3756 46.3551 0.0205 46.4399 -0.0643 46.4563 46.3818 0.0745 46.3585 0.0978 46.4314 46.4626 -0.0312 46.3831 0.0483 46.4607 46.4326 0.0281 46.4580 0.0027 46.4262 46.4583 -0.0321 46.4327 -0.0065 46.5671 46.4252 0.1419 46.4626 0.1045 46.4797 46.5676 -0.0879 46.4260 0.0537 46.7341 46.4798 0.2543 46.5653 0.1688 46.6610 46.7324 -0.0714 46.4778 0.1832 46.5868 46.6607 -0.0739 46.7329 -0.1461 46.6128 46.5814 0.0314 46.6585 -0.0457 46.6715 46.6099 0.0616 46.5804 0.0911 46.9617 46.6751 0.2866 46.6199 0.3418 46.8226 46.9642 -0.1416 46.6653 0.1573 46.5381 46.8204 -0.2823 46.9611 -0.4230 46.5803 46.5278 0.0525 46.8170 -0.2367 46.4850 46.5781 -0.0931 46.5367 -0.0517 46.3601 46.4943 -0.1342 46.5901 -0.2300 46.2987 46.3635 -0.0648 46.4802 -0.1815 46.3647 46.2997 0.0650 46.3626 0.0021 46.2700 46.3699 -0.0999 46.3103 -0.0403 46.4366 46.2735 0.1631 46.3662 0.0704 46.5192 46.4368 0.0824 46.2707 0.2485 46.1650 46.5212 -0.3562 46.4403 -0.2753 46.2542 46.1607 0.0935 46.5188 -0.2646 46.6031 46.2488 0.3543 46.1581 0.4450 46.5140 46.6127 -0.0987 46.2649 0.2491 46.4367 46.5185 -0.0818 46.6032 -0.1665 46.5143 46.4256 0.0887 46.4995 0.0148 46.4374 46.5103 -0.0729 46.4427 -0.0053 46.6120 46.4407 0.1713 46.5183 0.0937 46.6615 46.6123 0.0492 46.4276 0.2339 46.8017 46.6626 0.1391 46.6141 0.1876 46.7194 46.7996 -0.0802 46.6612 0.0582 46.5508 46.7147 -0.1639 46.7953 -0.2445 46.6535 46.5452 0.1083 46.7187 -0.0652 46.3820 46.6532 -0.2712 46.5467 -0.1647 46.1129 46.3865 -0.2736 46.6587 -0.5458 46.3242 46.1114 0.2128 46.3781 -0.0539 46.2405 46.3298 -0.0893 46.1182 0.1223 46.1255 46.2523 -0.1268 46.3396 -0.2141 46.2718 46.1244 0.1474 46.2349 0.0369 46.5407 46.2706 0.2701 46.1285 0.4122 46.4779 46.5470 -0.0691 46.2841 0.1938 46.2158 46.4765 -0.2607 46.5332 -0.3174 46.2499 46.2047 0.0452 46.4704 -0.2205 46.4685 46.2462 0.2223 46.2171 0.2514 46.4481 46.4776 -0.0295 46.2557 0.1924 46.5928 46.4524 0.1404 46.4647 0.1281 46.4178 46.5874 -0.1696 46.4418 -0.0240 46.3809 46.4135 -0.0326 46.5965 -0.2156 46.5623 46.3771 0.1852 46.4158 0.1465 46.4504 46.5650 -0.1146 46.3773 0.0731 46.4040 46.4543 -0.0503 46.5676 -0.1636 46.3738 46.3996 -0.0258 46.4418 -0.0680 46.1314 46.3730 -0.2416 46.4077 -0.2763 45.8842 46.1332 -0.2490 46.3791 -0.4949 46.0102 45.8840 0.1262 46.1275 -0.1173 45.9582 46.0171 -0.0589 45.8926 0.0656 46.0205 45.9689 0.0516 46.0206 -0.0001 47.0755 46.0222 1.0533 45.9578 1.1177 46.3236 47.0805 -0.7569 46.0235 0.3001 45.9469 46.3208 -0.3739 47.0819 -1.1350 45.3666 45.9155 -0.5489 46.2946 -0.9280 45.4796 45.3619 0.1177 45.9499 -0.4703 45.6906 45.5027 0.1879 45.3945 0.2961 45.6074 45.7137 -0.1063 45.4670 0.1404 45.4770 45.6153 -0.1383 45.7119 -0.2349 45.3997 45.4687 -0.0690 45.6049 -0.2052 45.4235 45.3972 0.0263 45.4907 -0.0672 45.1069 45.4283 -0.3214 45.4031 -0.2962 45.2720 45.1096 0.1624 45.4215 -0.1495 45.3585 45.2732 0.0853 45.1084 0.2501 45.0936 45.3669 -0.2733 45.2815 -0.1879 44.9364 45.0940 -0.1576 45.3616 -0.4252 44.5683 44.9297 -0.3614 45.0858 -0.5175 44.1520 44.5710 -0.4190 44.9503 -0.7983 44.0517 44.1579 -0.1062 44.5728 -0.5211 44.9548 44.0626 0.8922 44.1586 0.7962 44.7884 44.9771 -0.1887 44.0722 0.7162 44.9826 44.7995 0.1831 44.9642 0.0184 44.9823 44.9624 0.0199 44.7743 0.2080 45.1469 44.9700 0.1769 44.9817 0.1652 45.1636 45.1460 0.0176 44.9905 0.1731 45.4425 45.1604 0.2821 45.1206 0.3219 45.8155 45.4399 0.3756 45.1655 0.6500 45.8701 45.8146 0.0555 45.4349 0.4352 46.2101 45.8638 0.3463 45.8102 0.3999 45.8218 46.1975 -0.3757 45.8533 -0.0315 46.4192 45.8119 0.6073 46.2050 0.2142 46.3023 46.4122 -0.1099 45.8095 0.4928 46.5004 46.3063 0.1941 46.4144 0.0860 46.3779 46.4934 -0.1155 46.2960 0.0819 45.9055 46.3694 -0.4639 46.4823 -0.5768 45.6455 45.8998 -0.2543 46.3896 -0.7441 45.6591 45.6425 0.0166 45.8898 -0.2307 45.7174 45.6729 0.0445 45.6629 0.0545 46.0164 45.7332 0.2832 45.6666 0.3498 45.9024 46.0227 -0.1203 45.7200 0.1824 45.9578 45.9006 0.0572 46.0240 -0.0662 45.0325 45.9492 -0.9167 45.9009 -0.8684 44.2653 45.0247 -0.7594 45.9560 -1.6907 44.7779 44.2599 0.5180 45.0341 -0.2562 45.5742 44.8017 0.7725 44.2778 1.2964 45.6704 45.6164 0.0540 44.8133 0.8571 45.4814 45.6738 -0.1924 45.5649 -0.0835 45.5945 45.4508 0.1437 45.6598 -0.0653 45.5278 45.5775 -0.0497 45.4898 0.0380 45.2312 45.5306 -0.2994 45.5918 -0.3606 43.8982 45.2301 -1.3319 45.5096 -1.6114 43.9628 43.8897 0.0731 45.2271 -1.2643 42.9409 43.9693 -1.0284 43.9117 -0.9708 42.1775 42.9745 -0.7970 43.9951 -1.8176 42.5990 42.1945 0.4045 42.9591 -0.3601 43.3214 42.6245 0.6969 42.1961 1.1253 43.7851 43.3647 0.4204 42.6654 1.1197 42.6408 43.7927 -1.1519 43.3131 -0.6723 42.9587 42.6091 0.3496 43.7800 -0.8213 42.3154 42.9331 -0.6177 42.6409 -0.3255 42.4250 42.3327 0.0923 42.9741 -0.5491 42.6940 42.4377 0.2563 42.3122 0.3818 42.4061 42.7061 -0.3000 42.4141 -0.0080 41.1791 42.4142 -1.2351 42.7318 -1.5527 40.5951 41.1628 -0.5677 42.3850 -1.7899 40.4757 40.5917 -0.1160 41.1981 -0.7224 41.2549 40.5103 0.7446 40.6277 0.6272 41.1098 41.2967 -0.1869 40.4993 0.6105 41.0098 41.1244 -0.1146 41.2632 -0.2534 40.8784 40.9915 -0.1131 41.1182 -0.2398 41.2236 40.8666 0.3570 41.0142 0.2094 41.4513 41.2305 0.2208 40.8925 0.5588 42.0165 41.4584 0.5581 41.2081 0.8084 42.1909 42.0138 0.1771 41.4480 0.7429 42.6292 42.1808 0.4484 42.0072 0.6220 42.4255 42.6135 -0.1880 42.1803 0.2452 41.4562 42.4102 -0.9540 42.6100 -1.1538 41.4434 41.4360 0.0074 42.4119 -0.9685 40.9411 41.4384 -0.4973 41.4420 -0.5009 41.3536 40.9666 0.3870 41.4686 -0.1150 41.9616 41.3734 0.5882 40.9441 1.0175 41.3911 41.9788 -0.5877 41.3622 0.0289 41.3715 41.3880 -0.0165 41.9831 -0.6116 41.7792 41.3472 0.4320 41.3666 0.4126 41.4223 41.7845 -0.3622 41.3910 0.0313 41.8186 41.4322 0.3864 41.7837 0.0349 42.1383 41.8102 0.3281 41.3935 0.7448 42.9310 42.1423 0.7887 41.8342 1.0968 42.5269 42.9327 -0.4058 42.1386 0.3883 41.8578 42.5107 -0.6529 42.9045 -1.0467 42.2638 41.8272 0.4366 42.5155 -0.2517 42.0873 42.2602 -0.1729 41.8481 0.2392 42.1940 42.1116 0.0824 42.2846 -0.0906 42.3020 42.1965 0.1055 42.0656 0.2364 42.8300 42.2997 0.5303 42.1959 0.6341 43.0441 42.8338 0.2103 42.3219 0.7222 42.6163 43.0416 -0.4253 42.8145 -0.1982 42.4914 42.5989 -0.1075 43.0353 -0.5439 46.2943 42.4746 3.8197 42.6015 3.6928 46.4972 46.3223 0.1749 42.4999 3.9973 45.8160 46.5169 -0.7009 46.2929 -0.4769 46.3577 45.7187 0.6390 46.4018 -0.0441 47.0897 46.2833 0.8064 45.7617 1.3280 48.2953 47.1083 1.1870 46.4058 1.8895 48.5335 48.3025 0.2310 46.9973 1.5362 46.9854 48.5085 -1.5231 48.2592 -1.2738 44.8580 46.9330 -2.0750 48.5152 -3.6572 45.4563 44.8145 0.6418 46.9543 -1.4980 44.9971 45.4903 -0.4932 44.8829 0.1142 45.1380 45.0784 0.0596 45.5026 -0.3646 46.8240 45.1625 1.6615 44.9972 1.8268 47.3852 46.8342 0.5510 45.1588 2.2264 49.0234 47.3966 1.6268 46.8844 2.1390 50.3631 48.9884 1.3747 47.3254 3.0377 50.3281 47.3584 48.9875 50.2706 RUR_CHF 35.8669 35.8636 0.0033 36.0642 -0.1973 35.8298 35.8672 -0.0374 35.8623 -0.0325 35.8490 35.8316 0.0174 35.8673 -0.0183 35.9832 35.8508 0.1324 35.8318 0.1514 35.9891 35.9818 0.0073 35.8482 0.1409 36.0714 35.9893 0.0821 35.9838 0.0876 36.1033 36.0697 0.0336 35.9888 0.1145 36.1398 36.1016 0.0382 36.0701 0.0697 36.1688 36.1389 0.0299 36.1038 0.0650 36.2900 36.1675 0.1225 36.1388 0.1512 36.3225 36.2881 0.0344 36.1688 0.1537 36.2731 36.3216 -0.0485 36.2897 -0.0166 36.3059 36.2728 0.0331 36.3223 -0.0164 36.0980 36.3042 -0.2062 36.2719 -0.1739 36.0259 36.1003 -0.0744 36.3060 -0.2801 35.8585 36.0271 -0.1686 36.0986 -0.2401 35.9316 35.8611 0.0705 36.0253 -0.0937 35.8317 35.9332 -0.1015 35.8609 -0.0292 35.9006 35.8343 0.0663 35.9315 -0.0309 35.9732 35.9011 0.0721 35.8334 0.1398 36.0309 35.9721 0.0588 35.8992 0.1317 36.0663 36.0309 0.0354 35.9747 0.0916 36.0992 36.0649 0.0343 36.0297 0.0695 36.1036 36.0978 0.0058 36.0659 0.0377 36.1399 36.1028 0.0371 36.0988 0.0411 36.2248 36.1390 0.0858 36.1034 0.1214 36.1921 36.2235 -0.0314 36.1396 0.0525 36.3893 36.1923 0.1970 36.2249 0.1644 36.4054 36.3863 0.0191 36.1917 0.2137 36.5099 36.4045 0.1054 36.3885 0.1214 36.5125 36.5081 0.0044 36.4061 0.1064 36.5169 36.5104 0.0065 36.5076 0.0093 36.4918 36.5162 -0.0244 36.5132 -0.0214 36.6204 36.4910 0.1294 36.5157 0.1047 36.6921 36.6189 0.0732 36.4922 0.1999 36.6446 36.6913 -0.0467 36.6203 0.0243 36.6538 36.6448 0.0090 36.6924 -0.0386 36.8701 36.6521 0.2180 36.6431 0.2270 36.8995 36.8671 0.0324 36.6535 0.2460 37.1123 36.8996 0.2127 36.8708 0.2415 37.0825 37.1088 -0.0263 36.8992 0.1833 37.0216 37.0805 -0.0589 37.1100 -0.0884 36.8739 37.0211 -0.1472 37.0831 -0.2092 36.7526 36.8737 -0.1211 37.0193 -0.2667 36.6632 36.7546 -0.0914 36.8750 -0.2118 36.8527 36.6655 0.1872 36.7530 0.0997 36.9103 36.8525 0.0578 36.6646 0.2457 37.0794 36.9112 0.1682 36.8535 0.2259 37.0676 37.0775 -0.0099 36.9109 0.1567 37.0873 37.0656 0.0217 37.0771 0.0102 36.9851 37.0857 -0.1006 37.0678 -0.0827 36.8693 36.9847 -0.1154 37.0856 -0.2163 36.9414 36.8707 0.0707 36.9859 -0.0445 36.9760 36.9408 0.0352 36.8689 0.1071 36.9714 36.9771 -0.0057 36.9426 0.0288 37.0433 36.9723 0.0710 36.9768 0.0665 37.0295 37.0416 -0.0121 36.9702 0.0593 37.1299 37.0293 0.1006 37.0433 0.0866 37.1070 37.1285 -0.0215 37.0296 0.0774 37.0603 37.1066 -0.0463 37.1291 -0.0688 37.1291 37.0605 0.0686 37.1075 0.0216 37.1396 37.1274 0.0122 37.0591 0.0805 37.2336 37.1399 0.0937 37.1297 0.1039 37.2348 37.2327 0.0021 37.1400 0.0948 37.1137 37.2340 -0.1203 37.2327 -0.1190 37.1598 37.1146 0.0452 37.2350 -0.0752 37.2606 37.1583 0.1023 37.1127 0.1479 37.1463 37.2599 -0.1136 37.1601 -0.0138 36.9422 37.1486 -0.2064 37.2619 -0.3197 36.9469 36.9437 0.0032 37.1453 -0.1984 36.8895 36.9464 -0.0569 36.9414 -0.0519 36.8959 36.8922 0.0037 36.9485 -0.0526 36.7666 36.8978 -0.1312 36.8912 -0.1246 36.7701 36.7683 0.0018 36.8951 -0.1250 36.7757 36.7706 0.0051 36.7674 0.0083 36.6035 36.7761 -0.1726 36.7698 -0.1663 36.6715 36.6068 0.0647 36.7772 -0.1057 36.8346 36.6707 0.1639 36.6029 0.2317 36.8730 36.8334 0.0396 36.6715 0.2015 37.0339 36.8739 0.1600 36.8365 0.1974 36.9053 37.0306 -0.1253 36.8716 0.0337 36.9474 36.9050 0.0424 37.0325 -0.0851 36.9705 36.9458 0.0247 36.9055 0.0650 37.0731 36.9692 0.1039 36.9457 0.1274 37.2238 37.0730 0.1508 36.9725 0.2513 37.0932 37.2215 -0.1283 37.0720 0.0212 37.1357 37.0940 0.0417 37.2238 -0.0881 37.1239 37.1335 -0.0096 37.0922 0.0317 37.0987 37.1231 -0.0244 37.1344 -0.0357 36.8904 37.1001 -0.2097 37.1258 -0.2354 36.7827 36.8925 -0.1098 37.0976 -0.3149 36.8701 36.7842 0.0859 36.8908 -0.0207 36.8699 36.8703 -0.0004 36.7829 0.0870 36.7382 36.8724 -0.1342 36.8722 -0.1340 36.7699 36.7404 0.0295 36.8703 -0.1004 36.9233 36.7687 0.1546 36.7370 0.1863 37.1420 36.9221 0.2199 36.7703 0.3717 36.8070 37.1406 -0.3336 36.9247 -0.1177 36.6841 36.8099 -0.1258 37.1412 -0.4571 36.5681 36.6831 -0.1150 36.8056 -0.2375 36.6943 36.5688 0.1255 36.6823 0.0120 36.6827 36.6967 -0.0140 36.5725 0.1102 36.7325 36.6846 0.0479 36.6941 0.0384 36.7003 36.7325 -0.0322 36.6837 0.0166 36.7427 36.6995 0.0432 36.7308 0.0119 36.7138 36.7421 -0.0283 36.7010 0.0128 36.7203 36.7138 0.0065 36.7420 -0.0217 36.8276 36.7204 0.1072 36.7144 0.1132 36.9077 36.8261 0.0816 36.7197 0.1880 36.9710 36.9070 0.0640 36.8281 0.1429 36.9823 36.9697 0.0126 36.9075 0.0748 37.0561 36.9807 0.0754 36.9699 0.0862 37.1069 37.0542 0.0527 36.9819 0.1250 36.9381 37.1056 -0.1675 37.0557 -0.1176 36.8823 36.9396 -0.0573 37.1070 -0.2247 36.7822 36.8820 -0.0998 36.9373 -0.1551 36.8747 36.7836 0.0911 36.8820 -0.0073 36.8774 36.8756 0.0018 36.7842 0.0932 36.9009 36.8784 0.0225 36.8746 0.0263 36.8759 36.9012 -0.0253 36.8784 -0.0025 36.8559 36.8753 -0.0194 36.8995 -0.0436 36.8093 36.8560 -0.0467 36.8763 -0.0670 36.7991 36.8097 -0.0106 36.8556 -0.0565 36.8142 36.7996 0.0146 36.8097 0.0045 36.9419 36.8144 0.1275 36.7992 0.1427 36.7695 36.9409 -0.1714 36.8146 -0.0451 36.6664 36.7715 -0.1051 36.9418 -0.2754 36.7128 36.6669 0.0459 36.7694 -0.0566 36.6768 36.7118 -0.0350 36.6651 0.0117 36.7203 36.6794 0.0409 36.7151 0.0052 36.5329 36.7206 -0.1877 36.6771 -0.1442 36.5752 36.5348 0.0404 36.7195 -0.1443 36.5353 36.5749 -0.0396 36.5336 0.0017 36.4586 36.5362 -0.0776 36.5745 -0.1159 36.3999 36.4612 -0.0613 36.5375 -0.1376 36.4564 36.4004 0.0560 36.4574 -0.0010 36.4737 36.4565 0.0172 36.4006 0.0731 36.2996 36.4745 -0.1749 36.4570 -0.1574 36.7808 36.3020 0.4788 36.4741 0.3067 36.1850 36.7746 -0.5896 36.2988 -0.1138 36.1034 36.1925 -0.0891 36.7809 -0.6775 36.1922 36.1040 0.0882 36.1870 0.0052 36.1406 36.1891 -0.0485 36.0974 0.0432 36.1200 36.1475 -0.0275 36.2007 -0.0807 35.9832 36.1207 -0.1375 36.1388 -0.1556 36.0439 35.9841 0.0598 36.1191 -0.0752 35.9975 36.0438 -0.0463 35.9842 0.0133 36.1257 35.9988 0.1269 36.0438 0.0819 36.0083 36.1253 -0.1170 35.9989 0.0094 36.0888 36.0093 0.0795 36.1245 -0.0357 36.1574 36.0878 0.0696 36.0092 0.1482 36.2884 36.1558 0.1326 36.0872 0.2012 36.2264 36.2877 -0.0613 36.1592 0.0672 36.1248 36.2260 -0.1012 36.2870 -0.1622 35.9455 36.1247 -0.1792 36.2261 -0.2806 35.9279 35.9466 -0.0187 36.1236 -0.1957 36.5937 35.9292 0.6645 35.9466 0.6471 36.3908 36.5877 -0.1969 35.9286 0.4622 36.2670 36.3949 -0.1279 36.5953 -0.3283 36.0877 36.2657 -0.1780 36.3905 -0.3028 36.1851 36.0841 0.1010 36.2598 -0.0747 35.9922 36.1866 -0.1944 36.0925 -0.1003 36.0821 35.9965 0.0856 36.1851 -0.1030 36.4299 36.0824 0.3475 35.9938 0.4361 36.2958 36.4257 -0.1299 36.0804 0.2154 36.4066 36.2988 0.1078 36.4325 -0.0259 36.2568 36.4029 -0.1461 36.2940 -0.0372 36.6274 36.2557 0.3717 36.4033 0.2241 36.8974 36.6239 0.2735 36.2596 0.6378 36.7957 36.8938 -0.0981 36.6254 0.1703 36.7099 36.7967 -0.0868 36.8996 -0.1897 36.5948 36.7060 -0.1112 36.7911 -0.1963 36.3700 36.5939 -0.2239 36.7085 -0.3385 36.1530 36.3740 -0.2210 36.5967 -0.4437 35.8757 36.1569 -0.2812 36.3703 -0.4946 35.5476 35.8811 -0.3335 36.1539 -0.6063 35.5512 35.5547 -0.0035 35.8777 -0.3265 35.5632 35.5546 0.0086 35.5491 0.0141 35.6839 35.5673 0.1166 35.5534 0.1305 35.5171 35.6857 -0.1686 35.5658 -0.0487 35.6051 35.5189 0.0862 35.6828 -0.0777 35.6063 35.6034 0.0029 35.5172 0.0891 35.5798 35.6058 -0.0260 35.6038 -0.0240 35.3188 35.5814 -0.2626 35.6086 -0.2898 35.3988 35.3210 0.0778 35.5781 -0.1793 35.1731 35.3980 -0.2249 35.3193 -0.1462 35.0881 35.1771 -0.0890 35.3990 -0.3109 34.6345 35.0913 -0.4568 35.1758 -0.5413 34.5767 34.6400 -0.0633 35.0862 -0.5095 34.4144 34.5800 -0.1656 34.6374 -0.2230 34.0844 34.4192 -0.3348 34.5766 -0.4922 34.1627 34.0930 0.0697 34.4191 -0.2564 34.4306 34.1631 0.2675 34.0833 0.3473 34.4092 34.4305 -0.0213 34.1645 0.2447 34.5449 34.4123 0.1326 34.4336 0.1113 34.6484 34.5413 0.1071 34.4072 0.2412 34.5112 34.6446 -0.1334 34.5425 -0.0313 34.5677 34.5124 0.0553 34.6497 -0.0820 34.8064 34.5653 0.2411 34.5095 0.2969 34.6319 34.8032 -0.1713 34.5671 0.0648 34.3777 34.6350 -0.2573 34.8082 -0.4305 34.7938 34.3791 0.4147 34.6307 0.1631 34.5766 34.7874 -0.2108 34.3754 0.2012 34.6250 34.5819 0.0431 34.7966 -0.1716 34.6693 34.6251 0.0442 34.5785 0.0908 34.4975 34.6656 -0.1681 34.6196 -0.1221 34.5215 34.5014 0.0201 34.6735 -0.1520 34.9141 34.5206 0.3935 34.4958 0.4183 35.2416 34.9098 0.3318 34.5213 0.7203 35.4565 35.2393 0.2172 34.9161 0.5404 35.3629 35.4520 -0.0891 35.2407 0.1222 35.7166 35.3586 0.3580 35.4525 0.2641 35.4095 35.7083 -0.2988 35.3609 0.0486 35.3037 35.4113 -0.1076 35.7153 -0.4116 35.4404 35.3043 0.1361 35.4112 0.0292 35.3887 35.4367 -0.0480 35.2993 0.0894 35.8786 35.3928 0.4858 35.4452 0.4334 36.0107 35.8733 0.1374 35.3884 0.6223 36.0061 36.0080 -0.0019 35.8769 0.1292 36.1715 36.0045 0.1670 36.0120 0.1595 36.6678 36.1641 0.5037 36.0005 0.6673 36.9008 36.6607 0.2401 36.1721 0.7287 37.4292 36.8973 0.5319 36.6681 0.7611 37.8188 37.4192 0.3996 36.8990 0.9198 38.7040 37.8082 0.8958 37.4245 1.2795 39.7798 38.6890 1.0908 37.8182 1.9616 39.5475 39.7602 -0.2127 38.6989 0.8486 39.7253 39.5423 0.1830 39.7777 -0.0524 39.6674 39.7097 -0.0423 39.5393 0.1281 39.9565 39.6584 0.2981 39.7169 0.2396 40.1859 39.9546 0.2313 39.6736 0.5123 40.7880 40.1817 0.6063 39.9529 0.8351 41.6294 40.7802 0.8492 40.1874 1.4420 41.4411 41.6156 -0.1745 40.7846 0.6565 41.4275 41.4382 -0.0107 41.6282 -0.2007 41.1311 41.4180 -0.2869 41.4354 -0.3043 41.5282 41.1271 0.4011 41.4206 0.1076 41.4105 41.5255 -0.1150 41.1360 0.2745 41.9706 41.4133 0.5573 41.5269 0.4437 42.3833 41.9653 0.4180 41.4138 0.9695 43.0800 42.3750 0.7050 41.9651 1.1149 43.7815 43.0705 0.7110 42.3865 1.3950 43.3331 43.7658 -0.4327 43.0733 0.2598 42.1454 43.3310 -1.1856 43.7795 -1.6341 42.6454 42.1493 0.4961 43.3269 -0.6815 42.3986 42.6348 -0.2362 42.1402 0.2584 42.4861 42.4112 0.0749 42.6523 -0.1662 43.7123 42.4947 1.2176 42.4092 1.3031 44.0305 43.6941 0.3364 42.4763 1.5542 45.3398 44.0287 1.3111 43.7178 1.6220 45.6636 45.3182 0.3454 44.0284 1.6352 45.6461 44.0178 45.3414 45.6499 RUR_JPY 23.1523 22.8447 0.3076 22.8005 0.3518 23.4717 23.1550 0.3167 22.8670 0.6047 23.1400 23.4760 -0.3360 23.1421 -0.0021 23.1335 23.1437 -0.0102 23.4533 -0.3198 22.7315 23.1092 -0.3777 23.1320 -0.4005 23.1071 22.7484 0.3587 23.1393 -0.0322 22.9145 23.0897 -0.1752 22.7209 0.1936 22.9459 22.9454 0.0005 23.1158 -0.1699 22.9203 22.9251 -0.0048 22.9115 0.0088 22.9491 22.9284 0.0207 22.9566 -0.0075 22.8951 22.9470 -0.0519 22.9257 -0.0306 22.9298 22.8977 0.0321 22.9423 -0.0125 23.1758 22.9265 0.2493 22.8989 0.2769 23.1489 23.1761 -0.0272 22.9310 0.2179 23.0610 23.1564 -0.0954 23.1751 -0.1141 23.0273 23.0515 -0.0242 23.1406 -0.1133 23.0516 23.0253 0.0263 23.0626 -0.0110 23.0282 23.0536 -0.0254 23.0264 0.0018 22.7383 23.0308 -0.2925 23.0467 -0.3084 22.7375 22.7401 -0.0026 23.0292 -0.2917 22.7879 22.7285 0.0594 22.7417 0.0462 22.7823 22.7986 -0.0163 22.7477 0.0346 22.8210 22.7847 0.0363 22.7880 0.0330 22.6814 22.8184 -0.1370 22.7847 -0.1033 22.7678 22.6845 0.0833 22.8288 -0.0610 22.6464 22.7605 -0.1141 22.6796 -0.0332 22.6263 22.6562 -0.0299 22.7711 -0.1448 22.6802 22.6193 0.0609 22.6434 0.0368 22.9139 22.6834 0.2305 22.6308 0.2831 23.3745 22.9139 0.4606 22.6837 0.6908 23.2730 23.3749 -0.1019 22.9113 0.3617 23.2498 23.2808 -0.0310 23.3702 -0.1204 23.0587 23.2282 -0.1695 23.2574 -0.1987 23.2721 23.0633 0.2088 23.2483 0.0238 23.3771 23.2641 0.1130 23.0480 0.3291 23.1426 23.3906 -0.2480 23.2675 -0.1249 23.6286 23.1411 0.4875 23.3733 0.2553 23.5431 23.6102 -0.0671 23.1417 0.4014 24.1924 23.5697 0.6227 23.6387 0.5537 24.1211 24.1631 -0.0420 23.5206 0.6005 23.7529 24.1466 -0.3937 24.1945 -0.4416 23.9451 23.7298 0.2153 24.1003 -0.1552 23.8632 23.9317 -0.0685 23.7425 0.1207 23.8470 23.8853 -0.0383 23.9519 -0.1049 23.6113 23.8376 -0.2263 23.8411 -0.2298 23.6370 23.6164 0.0206 23.8556 -0.2186 23.6972 23.6294 0.0678 23.6194 0.0778 23.5698 23.7066 -0.1368 23.6407 -0.0709 23.5569 23.5729 -0.0160 23.6990 -0.1421 23.5752 23.5503 0.0249 23.5710 0.0042 23.1837 23.5794 -0.3957 23.5669 -0.3832 22.9810 23.1898 -0.2088 23.5744 -0.5934 23.0069 22.9694 0.0375 23.1830 -0.1761 23.0339 23.0149 0.0190 22.9974 0.0365 22.9927 23.0431 -0.0504 23.0143 -0.0216 22.9807 22.9935 -0.0128 23.0375 -0.0568 23.2674 22.9783 0.2891 23.0045 0.2629 23.0266 23.2651 -0.2385 22.9871 0.0395 23.2995 23.0399 0.2596 23.2669 0.0326 23.1905 23.2768 -0.0863 23.0169 0.1736 23.0630 23.2100 -0.1470 23.3083 -0.2453 22.8941 23.0507 -0.1566 23.1788 -0.2847 22.8085 22.8955 -0.0870 23.0615 -0.2530 22.6046 22.8089 -0.2043 22.9016 -0.2970 22.7342 22.6110 0.1232 22.8083 -0.0741 22.6473 22.7293 -0.0820 22.6120 0.0353 22.5963 22.6609 -0.0646 22.7464 -0.1501 22.6364 22.5893 0.0471 22.6488 -0.0124 22.5678 22.6373 -0.0695 22.6036 -0.0358 22.6787 22.5722 0.1065 22.6420 0.0367 22.7839 22.6735 0.1104 22.5642 0.2197 22.5822 22.7890 -0.2068 22.6838 -0.1016 22.6429 22.5841 0.0588 22.7812 -0.1383 22.6514 22.6309 0.0205 22.5783 0.0731 22.8789 22.6610 0.2179 22.6499 0.2290 23.0603 22.8745 0.1858 22.6455 0.4148 22.8581 23.0654 -0.2073 22.8781 -0.0200 22.7423 22.8579 -0.1156 23.0574 -0.3151 22.7234 22.7293 -0.0059 22.8501 -0.1267 22.7885 22.7272 0.0613 22.7458 0.0427 22.7938 22.7920 0.0018 22.7194 0.0744 22.8110 22.7969 0.0141 22.7869 0.0241 22.9262 22.8085 0.1177 22.7984 0.1278 22.8780 22.9251 -0.0471 22.8140 0.0640 22.6821 22.8818 -0.1997 22.9254 -0.2433 22.7982 22.6783 0.1199 22.8724 -0.0742 22.7351 22.7917 -0.0566 22.6832 0.0519 22.6776 22.7476 -0.0700 22.8029 -0.1253 22.5347 22.6720 -0.1373 22.7291 -0.1944 22.5265 22.5367 -0.0102 22.6831 -0.1566 22.5200 22.5241 -0.0041 22.5405 -0.0205 22.7351 22.5255 0.2096 22.5290 0.2061 22.6275 22.7329 -0.1054 22.5228 0.1047 22.5574 22.6364 -0.0790 22.7385 -0.1811 22.3131 22.5462 -0.2331 22.6243 -0.3112 22.3584 22.3174 0.0410 22.5609 -0.2025 22.1117 22.3524 -0.2407 22.3132 -0.2015 21.9781 22.1259 -0.1478 22.3621 -0.3840 21.9652 21.9700 -0.0048 22.1142 -0.1490 21.9114 21.9703 -0.0589 21.9909 -0.0795 21.8960 21.9173 -0.0213 21.9758 -0.0798 21.9250 21.8951 0.0299 21.9137 0.0113 21.9008 21.9262 -0.0254 21.9059 -0.0051 21.9490 21.9028 0.0462 21.9293 0.0197 21.8583 21.9465 -0.0882 21.9008 -0.0425 21.8907 21.8619 0.0288 21.9514 -0.0607 21.7880 21.8854 -0.0974 21.8568 -0.0688 21.9597 21.7938 0.1659 21.8931 0.0666 22.1090 21.9530 0.1560 21.7871 0.3219 22.1865 22.1170 0.0695 21.9628 0.2237 22.0664 22.1842 -0.1178 22.1055 -0.0391 22.0257 22.0643 -0.0386 22.1817 -0.1560 22.0175 22.0188 -0.0013 22.0643 -0.0468 22.0142 22.0207 -0.0065 22.0233 -0.0091 21.7740 22.0158 -0.2418 22.0142 -0.2402 21.8388 21.7772 0.0616 22.0139 -0.1751 21.8009 21.8299 -0.0290 21.7778 0.0231 21.7805 21.8129 -0.0324 21.8479 -0.0674 21.9137 21.7774 0.1363 21.7994 0.1143 22.2536 21.9127 0.3409 21.7846 0.4690 22.0466 22.2549 -0.2083 21.9200 0.1266 21.8129 22.0556 -0.2427 22.2480 -0.4351 21.7667 21.7951 -0.0284 22.0365 -0.2698 21.7741 21.7667 0.0074 21.8182 -0.0441 21.6546 21.7820 -0.1274 21.7672 -0.1126 21.6826 21.6586 0.0240 21.7694 -0.0868 21.8987 21.6780 0.2207 21.6626 0.2361 21.6999 21.9017 -0.2018 21.6932 0.0067 21.6952 21.7088 -0.0136 21.8991 -0.2039 21.7220 21.6800 0.0420 21.6940 0.0280 21.6809 21.7288 -0.0479 21.7043 -0.0234 21.8536 21.6829 0.1707 21.7192 0.1344 21.7135 21.8491 -0.1356 21.6767 0.0368 21.7306 21.7227 0.0079 21.8602 -0.1296 21.7001 21.7189 -0.0188 21.7077 -0.0076 21.5347 21.7062 -0.1715 21.7347 -0.2000 21.7213 21.5353 0.1860 21.6988 0.0225 22.3503 21.7145 0.6358 21.5328 0.8175 22.1375 22.3556 -0.2181 21.7303 0.4072 22.2133 22.1547 0.0586 22.3443 -0.1310 22.2000 22.1802 0.0198 22.1193 0.0807 22.1959 22.2098 -0.0139 22.2216 -0.0257 22.2089 22.1930 0.0159 22.1855 0.0234 22.3387 22.2090 0.1297 22.1822 0.1565 22.2055 22.3378 -0.1323 22.2138 -0.0083 22.3327 22.2111 0.1216 22.3364 -0.0037 22.2445 22.3215 -0.0770 22.2016 0.0429 22.2404 22.2549 -0.0145 22.3369 -0.0965 22.3905 22.2327 0.1578 22.2386 0.1519 22.5251 22.3917 0.1334 22.2413 0.2838 22.5495 22.5289 0.0206 22.3928 0.1567 22.5518 22.5480 0.0038 22.5179 0.0339 22.8039 22.5471 0.2568 22.5472 0.2567 22.8440 22.7997 0.0443 22.5491 0.2949 22.8138 22.8520 -0.0382 22.7983 0.0155 23.2884 22.8057 0.4827 22.8319 0.4565 23.8456 23.2796 0.5660 22.8115 1.0341 23.2653 23.8562 -0.5909 23.2863 -0.0210 23.7359 23.2730 0.4629 23.8229 -0.0870 23.8394 23.6877 0.1517 23.2456 0.5938 24.0390 23.8758 0.1632 23.7494 0.2896 23.9227 24.0229 -0.1002 23.8057 0.1170 24.0392 23.9260 0.1132 24.0271 0.0121 24.1458 24.0258 0.1200 23.9257 0.2201 24.1932 24.1526 0.0406 24.0291 0.1641 23.7148 24.1920 -0.4772 24.1370 -0.4222 23.7680 23.7178 0.0502 24.1856 -0.4176 23.6412 23.7489 -0.1077 23.7148 -0.0736 23.5967 23.6631 -0.0664 23.7794 -0.1827 23.5723 23.5918 -0.0195 23.6368 -0.0645 23.6716 23.5759 0.0957 23.6052 0.0664 23.7189 23.6715 0.0474 23.5859 0.1330 24.0997 23.7228 0.3769 23.6726 0.4271 24.5946 24.0929 0.5017 23.7195 0.8751 25.2590 24.5996 0.6594 24.0995 1.1595 25.4215 25.2530 0.1685 24.5815 0.8400 26.0587 25.4222 0.6365 25.2390 0.8197 25.8549 26.0297 -0.1748 25.3932 0.4617 26.5626 25.8715 0.6911 26.0366 0.5260 25.9180 26.5219 -0.6039 25.8128 0.1052 25.4944 25.9567 -0.4623 26.5490 -1.0546 25.7561 25.4503 0.3058 25.8832 -0.1271 26.2157 25.7622 0.4535 25.5003 0.7154 25.9854 26.2369 -0.2515 25.7680 0.2174 25.5189 25.9946 -0.4757 26.1966 -0.6777 26.1437 25.4982 0.6455 25.9919 0.1518 27.0949 26.1282 0.9667 25.5339 1.5610 27.6867 27.1234 0.5633 26.1471 1.5396 28.4523 27.6887 0.7636 27.0656 1.3867 29.5029 28.4250 1.0779 27.6661 1.8368 28.8115 29.4914 -0.6799 28.4364 0.3751 27.8928 28.8248 -0.9320 29.4492 -1.5564 27.9722 27.8378 0.1344 28.7438 -0.7716 27.2098 27.9647 -0.7549 27.8895 -0.6797 27.3991 27.2589 0.1402 27.9709 -0.5718 27.7549 27.3694 0.3855 27.1890 0.5659 27.2280 27.7866 -0.5586 27.4531 -0.2251 27.9749 27.2407 0.7342 27.7730 0.2019 28.0640 27.9336 0.1304 27.2229 0.8411 28.7574 28.1083 0.6491 28.0096 0.7478 28.2074 28.7240 -0.5166 28.0310 0.1764 28.2438 28.2328 0.0110 28.7503 -0.5065 28.3721 28.1973 0.1748 28.1895 0.1826 28.3514 28.3919 -0.0405 28.2402 0.1112 28.9328 28.3557 0.5771 28.3612 0.5716 28.9594 28.9200 0.0394 28.3353 0.6241 29.0392 28.9795 0.0597 28.9474 0.0918 28.3951 29.0165 -0.6214 28.9378 -0.5427 28.8022 28.4034 0.3988 29.0344 -0.2322 28.8345 28.7721 0.0624 28.3861 0.4484 28.9675 28.8730 0.0945 28.8077 0.1598 29.5156 28.9524 0.5632 28.8204 0.6952 30.2278 29.5114 0.7164 28.9714 1.2564 30.0163 30.2327 -0.2164 29.5233 0.4930 30.0846 30.0216 0.0630 30.1985 -0.1139 30.4830 30.0477 0.4353 29.9897 0.4933 29.8649 30.4873 -0.6224 30.0806 -0.2157 30.3308 29.8838 0.4470 30.4582 -0.1274 30.0762 30.2883 -0.2121 29.8354 0.2408 30.2365 30.1185 0.1180 30.3554 -0.1189 30.8580 30.2089 0.6491 30.0552 0.8028 30.6614 30.8650 -0.2036 30.2410 0.4204 30.5844 30.6793 -0.0949 30.8639 -0.2795 31.1065 30.5541 0.5524 30.6314 0.4751 31.4369 31.1040 0.3329 30.5948 0.8421 31.3143 31.4542 -0.1399 31.0978 0.2165 31.4791 31.3069 0.1722 31.4058 0.0733 31.4058 31.4590 -0.0532 31.3088 0.0970 31.6801 31.4165 0.2636 31.4785 0.2016 31.7325 31.6681 0.0644 31.3829 0.3496 32.0790 31.7438 0.3352 31.6750 0.4040 32.3305 32.0660 0.2645 31.7249 0.6056 32.5779 32.3367 0.2412 32.0734 0.5045 32.5723 32.5699 0.0024 32.3177 0.2546 33.7905 32.5703 1.2202 32.5613 1.2292 34.3755 33.7654 0.6101 32.5583 1.8172 35.1092 34.4098 0.6994 33.7782 1.3310 35.1681 35.0729 0.0952 34.3259 0.8422 36.2071 35.1673 1.0398 35.0818 1.1253 36.1219 36.1668 -0.0449 35.1289 0.9930 36.2668 36.1547 0.1121 36.1652 0.1016 36.8864 36.2215 0.6649 36.0635 0.8229 36.3872 36.8851 -0.4979 36.2481 0.1391 36.8653 36.4090 0.4563 36.8680 -0.0027 37.2193 36.8180 0.4013 36.3402 0.8791 37.0266 37.2496 -0.2230 36.8814 0.1452 36.7194 37.0234 -0.3040 37.1931 -0.4737 37.2455 36.7018 0.5437 37.0038 0.2417 38.4723 37.2354 1.2369 36.7328 1.7395 39.6802 38.4878 1.1924 37.2391 2.4411 39.6877 38.4484 38.4399 39.6406 Приложение 2 Текст программы unitUnit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Grids; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Button7: TButton; Button8: TButton; Button9: TButton; Button10: TButton; Button11: TButton; OpenData: TOpenDialog; OpenNNS: TOpenDialog; SaveData: TSaveDialog; SaveNNS: TSaveDialog; StringGrid1: TStringGrid; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Edit1: TEdit; Label7: TLabel; Edit2: TEdit; Label8: TLabel; Label9: TLabel; Edit3: TEdit; Edit4: TEdit; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Edit5: TEdit; Edit6: TEdit; Edit7: TEdit; Edit8: TEdit; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button7Click(Sender: TObject); procedure Button11Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button5Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormResize(Sender: TObject); procedure StringGrid1KeyPress(Sender: TObject; var Key: Char); procedure StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String); procedure Button4Click(Sender: TObject); procedure Button8Click(Sender: TObject); procedure Button9Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const nns=54321; mM=20; mN=20; u=0.8; v=1.25; var Form1: TForm1; s1: string; i,j,k,n,m,OnSettings:integer;//m - количество правил a,ap,ap3: array[1..2000]of real; f,f1,f2,f3,f4:TextFile; t,Nst,Nac,Neps,Nrp:integer; w3,w: array[1..20]of real; sign:array[1..20] of integer; c:array[1..20]of real; h:array[1..250,1..mM]of real; myu0,myu03:array[1..mM]of real;//пересечение правил myu,myu3,cen,cen3,b,b3:array[1..mM,1..mN]of real; // нелинейные параметры sigma,sigma3:array[1..mM,1..mN]of real; // нелинейные параметры // b:array[1..mM,1..mN]of real; // нелинейные параметры gc,gs,gb:real;//шаг градиентного спуска p,p3:array[1..mM,0..mN]of real; // Линейные параметры input,output:array[1..20]of real; eps,skoS,sko3S,skoP,sko3P,ms,mp,ms3,mp3,sappS,sapp3S,sappP,sapp3p:real; fname:string; nnit:longint; implementation uses Unit2, Unit3, Unit4, matrices; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //загрузить данные var i:integer; s:string; begin for i:=1 to n+10 do begin StringGrid1.cells[0,i]:=''; StringGrid1.cells[1,i]:=''; StringGrid1.cells[2,i]:=''; StringGrid1.cells[3,i]:=''; StringGrid1.cells[4,i]:=''; end; OpenData.InitialDir:='D:\CW'; OpenData.DefaultExt:='txt'; if OpenData.Execute then begin s:=OpenData.FileName; StringGrid1.RowCount:=1; for i:=1 to n do begin StringGrid1.cells[0,i]:=''; end; fname:=s; AssignFile(f1,s); reset(f1); readln(f1,n); nst:=trunc(n/10); StringGrid1.RowCount:=0; for i:=1 to n do begin readln(f1,s); { str(a[i]:8:4,s);} for j:=1 to length(s) do if(s[j]='.') or(s[j]=',')then s[j]:=decimalseparator; StringGrid1.Cells[0,i]:=s; StringGrid1.RowCount:=StringGrid1.RowCount+1; a[i]:=strToFloat(s); end; StringGrid1.RowCount:=StringGrid1.RowCount+10; StringGrid1.LeftCol:=0; StringGrid1.TopRow:=1; if n-10>0 then StringGrid1.TopRow:=n-10; CloseFile(f1); end; end;//Загрузить данные (Конец) procedure TForm1.Button2Click(Sender: TObject);//Загрузить нейросеть var nn:integer; begin OpenNNS.InitialDir:='D:\CW'; OpenNNS.DefaultExt:='nns'; if OpenNNS.Execute then begin s:=OpenNNS.FileName; AssignFile(f1,s); reset(f1); readln(f1,nn); if nn<>nns then begin messagedlg('Ошибка ввода начальных данных!',mtError,[mbOk],0); end else begin readln(f1,nac); readln(f1,m); for i:=1 to m do for j:=1 to nac do readln(f1,cen[i,j]); for i:=1 to m do for j:=1 to nac do readln(f1,sigma[i,j]); for i:=1 to m do for j:=1 to nac do readln(f1,b[i,j]); for i:=1 to m do for j:=0 to nac do if j<=nac then readln(f1,p[i,j]); for i:=1 to m do for j:=1 to nac do readln(f1,cen3[i,j]); for i:=1 to m do for j:=1 to nac do readln(f1,sigma3[i,j]); for i:=1 to m do for j:=1 to nac do readln(f1,b3[i,j]); for i:=1 to m do for j:=0 to nac do if j<=nac then readln(f1,p3[i,j]); end; CloseFile(f1); end; end;//Загрузить нейросеть (конец) procedure TForm1.Button7Click(Sender: TObject); //Сохранить данные var i:integer; begin SaveData.InitialDir:='D:\CW'; SaveData.DefaultExt:='txt'; i:=1; while (stringGrid1.cells[0,i]<>'')and(i<10000) do begin i:=i+1; end; n:=i-1; if SaveData.Execute then begin fname:=SaveData.FileName; AssignFile(f3,SaveData.FileName); Rewrite(f3); writeln(f3,n); for i:=1 to n do begin writeln(f3,stringGrid1.cells[0,i]); end; CloseFile(f3); end; end; //Сохранить данные (конец) procedure TForm1.Button11Click(Sender: TObject); begin // Закрыть форму 1 AssignFile(f3,'1.txt'); Rewrite(f3); writeln(f3,skoS:10:8); writeln(f3,sko3S:10:8); writeln(f3,skoP:10:8); writeln(f3,sko3P:10:8); writeln(f3,ms:10:8); writeln(f3,mp:10:8); writeln(f3,ms3:10:8); writeln(f3,mp3:10:8); for i:=nst to n+3 do begin write(f3,stringGrid1.cells[0,i]); write(f3,stringGrid1.cells[1,i]); write(f3,stringGrid1.cells[2,i]); write(f3,stringGrid1.cells[3,i]); writeln(f3,stringGrid1.cells[4,i]); end; CloseFile(f3); Form1.close; end; procedure TForm1.Button3Click(Sender: TObject); begin //Открыть форму "Настройки" form2.Show; end; //Открыть форму "Настройки" (конец) procedure TForm1.Button5Click(Sender: TObject); begin if (stringGrid1.cells[0,1]<>'')and(stringGrid1.cells[0,3]<>'') then form3.show; // Открыть форму график КВ end; procedure TForm1.Button6Click(Sender: TObject); begin if (stringGrid1.cells[0,1]<>'')and(stringGrid1.cells[0,3]<>'') then form4.show; // Открыть форму график пргноза на 3 шага вперед end; procedure TForm1.FormCreate(Sender: TObject); // Создание формы 1 var a:integer; begin a:=6; edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; edit6.Text:=''; edit7.Text:=''; edit8.Text:=''; Nst:=0; Nac:=4;Neps:=10;Nrp:=80;m:=5; end; //Конец создания формы 1 procedure TForm1.FormResize(Sender: TObject); //Изменение размеров формы 1 var a:integer; begin if Form1.Width<500 then Form1.Width:=500; if Form1.Height<550 then Form1.Height:=550; StringGrid1.Width:=Form1.Width-Button1.Width-80; StringGrid1.Height:=Form1.Height-280; a:=6; StringGrid1.Top:=Form1.ClientHeight-StringGrid1.Height-216; StringGrid1.Left:=Form1.ClientWidth-StringGrid1.Width-24; StringGrid1.ColWidths[0]:=trunc(StringGrid1.Width*0.2)-a; StringGrid1.ColWidths[1]:=trunc(StringGrid1.Width*0.2)-a; StringGrid1.ColWidths[2]:=trunc(StringGrid1.Width*0.2)-a; StringGrid1.ColWidths[3]:=trunc(StringGrid1.Width*0.2)-a; StringGrid1.ColWidths[4]:=trunc(StringGrid1.Width*0.2)-a; end; // Конец изменения формы 1 procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if not (Key in [#8,'0'..'9',decimalSeparator])then Key:=#0 end; procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer; var Value: String); var i:integer; begin i:=1; while (stringgrid1.cells[0,i]<>'')do i:=i+1; StringGrid1.RowCount:=i+10; n:=i; end; function adjust():boolean; var wrong,q,r:integer; //f:boolean; prognoz,realynoe:real; begin wrong:=0; for q:=nac+2 to nst-1 do begin eps:=Neps*a[q]/1000; realynoe:=a[q+1]-a[q]; prognoz:=0; for r:=1 to nac do prognoz:=prognoz+(a[q-nac+r-1]-a[q-nac+r-2])*w[r]; if abs(prognoz-realynoe)<eps then wrong:=wrong+1; end; if wrong/(nst-(nac+2))<(100-Nrp)/100 then adjust:=true else adjust:=false; end;//adjust procedure ns(i,j:integer;var a,b,c:real); const eps=0.01; begin a:=eps*i/j;b:=eps*i/i;c:=i/j; end; procedure adjust_csb3(num:integer;vihod:real); const eps=0.00001; var lxj,mxj,mxjs,sum:real; r,k,j,l,bb,d,delta:integer; p1,p2,p5,p4:real; // Произведения при вычислении dw/d(cen)(sigma)(b) s1,sc,ss,sb,dec,deb,des,dwc,dwb,dws:real; // dw/d(cen)(sigma)(b) begin for j:=1 to nac do begin for k:=1 to m do begin lxj:=1; for l:=1 to nac do lxj:=lxj*myu3[k,j]; mxj:=1; for bb:=1 to m do begin mxjs:=0; for d:=1 to nac do mxjs:=mxjs+myu3[bb,d]; mxj:=mxj*mxjs; end; if mxj<eps then mxj:=eps; if lxj<eps then lxj:=eps; // Изменняем cen sc:=0; ss:=0; sb:=0; for r:=1 to m do begin //dw/d(cen) p1:=1; for i:=1 to m do if i<>j then p1:=p1*(2*b3[k,j]/sigma3[k,j])* exp( Ln( abs( (a[j+num+3]-cen3[k,j])/sigma3[k,j]*(2*b3[k,j]-1)) ))* myu3[k,i]/sqr(1+exp(Ln(abs((a[j+num+3]-cen3[k,j])/sigma3[k,j]))*2*b3[k,j]) ); if r=k then delta:=0 else delta:=1; dwc:=(delta*mxj-lxj)/sqr(mxj)*p1; s1:=p3[r,0]; for l:=1 to nac do s1:=s1+p3[r,l]*a[num+l+3]; sc:=sc+s1*dwc; //dw/d(sigma) p2:=1; for i:=1 to m do if i<>j then p2:=p2*(2*b3[k,j]/sigma3[k,j])* exp( Ln( abs( (a[j+num+3]-cen3[k,j])/sigma3[k,j]) ))* myu3[k,i]/sqr(1+exp(Ln(abs((a[j+num+3]-cen3[k,j])/sigma3[k,j]))*2*b3[k,j]) ); dws:=(delta*mxj-lxj)/sqr(mxj); ss:=ss+s1*dws; //dw/d(b) p5:=1; for i:=1 to m do if i<>j then p5:=p5*(-2*exp( Ln( abs( (a[j+num+3]-cen3[k,j])/sigma3[k,j]) )*2*b3[k,j]))* Ln( abs( (a[j+num+3]-cen3[k,j])/sigma3[k,j]) )* myu3[k,i]/sqr(1+exp(Ln(abs((a[j+num+3]-cen3[k,j])/sigma3[k,j]))*2*b3[k,j]) ); end;ns(i,j,sc,ss,sb); dec:=(vihod-a[num+4])*sc; des:=(vihod-a[num+4])*ss; deb:=(vihod-a[num+4])*sb; cen3[k,j]:=cen3[k,j]-gc*dec; sigma3[k,j]:=sigma3[k,j]-gs*des; b3[k,j]:=b3[k,j]-gb*deb; end;//{k} end;//{j} end;//adjust_csb3 //adjust_csb procedure adjust_csb(num:integer;vihod:real); const eps=0.00001; var lxj,mxj,mxjs,sum:real; r,k,j,l,bb,d,delta:integer; p1,p2,p3,p4:real; // Произведения при вычислении dw/d(cen)(sigma)(b) s1,sc,ss,sb,dec,deb,des,dwc,dwb,dws:real; // dw/d(cen)(sigma)(b) begin for j:=1 to nac do begin for k:=1 to m do begin lxj:=1; for l:=1 to nac do lxj:=lxj*myu[k,j]; mxj:=1; for bb:=1 to m do begin mxjs:=0; for d:=1 to nac do mxjs:=mxjs+myu[bb,d]; mxj:=mxj*mxjs; end; if mxj<eps then mxj:=eps; if lxj<eps then lxj:=eps; // Изменняем cen sc:=0; ss:=0; sb:=0; for r:=1 to m do begin //dw/d(cen) p1:=1; for i:=1 to m do if i<>j then p1:=p1*(2*b[k,j]/sigma[k,j])* exp( Ln( abs( (a[j+num]-cen[k,j])/sigma[k,j]*(2*b[k,j]-1)) ))* myu[k,i]/sqr(1+exp(Ln(abs((a[j+num]-cen[k,j])/sigma[k,j]))*2*b[k,j]) ); if r=k then delta:=0 else delta:=1; dwc:=(delta*mxj-lxj)/sqr(mxj)*p1; s1:=p[r,0]; for l:=1 to nac do s1:=s1+p[r,l]*a[num+l]; sc:=sc+s1*dwc; //dw/d(sigma) p2:=1; for i:=1 to m do if i<>j then p2:=p2*(2*b[k,j]/sigma[k,j])* exp( Ln( abs( (a[j+num]-cen[k,j])/sigma[k,j]) ))* myu[k,i]/sqr(1+exp(Ln(abs((a[j+num]-cen[k,j])/sigma[k,j]))*2*b[k,j]) ); dws:=(delta*mxj-lxj)/sqr(mxj); ss:=ss+s1*dws; //dw/d(b) p3:=1; for i:=1 to m do if i<>j then p3:=p3*(-2*exp( Ln( abs( (a[j+num]-cen[k,j])/sigma[k,j]) )*2*b[k,j]))* Ln( abs( (a[j+num]-cen[k,j])/sigma[k,j]) )* myu[k,i]/sqr(1+exp(Ln(abs((a[j+num]-cen[k,j])/sigma[k,j]))*2*b[k,j]) ); end;ns(k,j,sc,ss,sb); dec:=(vihod-a[num+1])*sc; des:=(vihod-a[num+1])*ss; deb:=(vihod-a[num+1])*sb; cen[k,j]:=cen[k,j]-gc*dec; sigma[k,j]:=sigma[k,j]-gs*des; b[k,j]:=b[k,j]-gb*deb; end;//{k} end;//{j} end;//adjust_csb procedure a_p; var j:integer;norm:real; begin for j:=1 to m do norm:=norm+j; norm:=1/norm; for i:=1 to m do for j:=1 to (nac+1) do begin p[i,j]:=j*norm; p3[i,j]:=j*(norm+0.0001*i); end; end; // adjust_p(); procedure adjust_p(); var l_s,l_d,i,j,k,l,r,k1,k2,k3:integer; dob,sum,dt,w,norm:real; hth,h,h3,hp:array[1..250,1..100]of real; dl:array[1..250]of real; pp,pp3:array[1..200]of real; htn:matrix; begin l:=nst; norm:=0; for j:=1 to m do norm:=norm+j; norm:=1/norm; setsize(htn,l,(nac+1)*m); // Формируем матрицу h for r:=1 to l do begin for i:=1 to m do begin h[r,(i-1)*(nac+1)+1]:=i*norm; w:=i*norm; for j:=1 to nac do begin dob:=1;sum:=0; for l_s:=1 to m do begin for l_d:=1 to nac do dob:=dob*1/(1+exp(Ln(abs((a[l_d]-cen[l_s,l_d])/sigma[l_s,l_d]))*2*b[l_s,l_d]) ); sum:=sum+dob; end; h[r,(i-1)*(nac+1)+j+1]:=dob/sum; end; end; end; for r:=1 to l do for j:=1 to nac do for i:=1 to m do h[r,(j-1)*(nac+1)+i+1]:=h[r,(j-1)*(nac+1)+i+1]*a[r+(j-1)*nac+i]; for i:=1 to nst do dl[i]:=a[nac+i]; for k1:=1 to m*(nac+1) do for k2:=1 to m*(nac+1)do begin hth[k1,k2]:=0; for k3:=1 to l do hth[k1,k2]:=hth[k1,k2]+h[k1,k3]*h[k3,k1]; end; setsize(htn,m*(nac+1),m*(nac+1)); for i:=1 to m*(nac+1) do for j:=1 to m*(nac+1) do htn.data[i-1,j-1]:=hth[i,j]; invers(htn); for i:=1 to m*(nac+1) do for j:=1 to m*(nac+1) do hth[i,j]:=htn.data[i-1,j-1]; for i:=1 to m*(nac+1)do for j:=1 to l do begin hp[i,j]:=0; for r:=1 to m do hp[i,j]:=hp[i,j]+hth[i,r]*h[r,j]; end; for i:=1 to m*(nac+1) do pp[i]:=0; for i:=1 to m*(nac+1) do begin for j:=1 to l do pp[i]:=pp[i]+hp[i,j]*dl[j]; end; for i:=1 to m do for j:=0 to (nac)do p[i,j]:=pp[j+1+(i-1)*m]; end;//adjust_p(); // adjust_p3(); procedure adjust_p3(); var l_d,l_s,i,j,k,l,r,k1,k2,k3:integer; dob,sum,dt,w,norm:real; hth,h,h3,hp:array[1..250,1..100]of real; dl:array[1..250]of real; pp:array[1..200]of real; htn:matrix; begin l:=nst; norm:=0; for j:=1 to m do norm:=norm+j; norm:=1/norm; setsize(htn,l,(nac+1)*m); // Формируем матрицу h for r:=1 to l do begin for i:=1 to m do begin h[r,(i-1)*(nac+1)+1]:=i*norm; w:=i*norm; for j:=1 to nac do begin dob:=1;sum:=0; for l_s:=1 to m do begin for l_d:=1 to nac do dob:=dob*1/(1+exp(Ln(abs((a[l_d] cen[l_s,l_d])/sigma[l_s,l_d]))*2*b[l_s,l_d]) ); sum:=sum+dob; end; h[r,(i-1)*(nac+1)+j+1]:=dob/sum; end; end; end; for r:=1 to l do for j:=1 to nac do for i:=1 to m do h[r,(j-1)*(nac+1)+i+1]:=h[r,(j-1)*(nac+1)+i+1]*a[r+(j-1)*nac+i]; for i:=1 to nst do dl[i]:=a[nac+i+3]; for k1:=1 to m*(nac+1) do for k2:=1 to m*(nac+1)do begin hth[k1,k2]:=0; for k3:=1 to l do hth[k1,k2]:=hth[k1,k2]+h[k1,k3]*h[k3,k1]; end; setsize(htn,m*(nac+1),m*(nac+1)); for i:=1 to m*(nac+1) do for j:=1 to m*(nac+1) do htn.data[i-1,j-1]:=hth[i,j]; invers(htn); for i:=1 to m*(nac+1) do for j:=1 to m*(nac+1) do hth[i,j]:=htn.data[i-1,j-1]; for i:=1 to m*(nac+1)do for j:=1 to l do begin hp[i,j]:=0; for r:=1 to m do hp[i,j]:=hp[i,j]+hth[i,r]*h[r,j]; end; for i:=1 to m*(nac+1) do pp[i]:=0; for i:=1 to m*(nac+1) do begin for j:=1 to l do pp[i]:=pp[i]+hp[i,j]*dl[j]; end; for i:=1 to m do for j:=0 to (nac)do p3[i,j]:=pp[j+1+(i-1)*m]; end;//adjust_p3(); // обучить нейросеть (START) procedure TForm1.Button4Click(Sender: TObject); const maxNit=1000;//Максимальное количество итераций eps=0.000000001; var l,nc:integer;//l - номер центра; nc - количество центров; num,q:integer;//Количество итераций nIt:longint; sum,gama,pz,pz1,d,yP,x,sk:real; //y прогнозированное tsk_w,tsk_w3,tsk,tsk3:array[1..mM]of real;//отвечает за третий слой sm,fprov,f1,f2,s_sign,s_w,s_sign3,s_w3:real;// взвешенная сумма сигналов и весов begin// обучить нейросеть if stringGrid1.cells[0,1]<>''then begin //Проверка на введные вручную значения i:=1; while (stringGrid1.cells[0,i]<>'')and(i<10000) do begin i:=i+1; s:=stringGrid1.cells[0,i]; end; n:=i-1; // Проверка на знак десятичного разделителя - // меняем "." или "," на decimalSeparator while stringGrid1.cells[0,n]='' do n:=n-1; n:=i-1; s:=''; for q:=1 to n do begin s:=StringGrid1.Cells[0,q]; for k:=1 to Length(s) do if (s[k]='.')or(s[k]=',') then s[k]:=decimalSeparator; a[q]:=strToFloat(s); end; //--------------------------------------- // нелинейные параметры gc:=u; gs:=u; gb:=u; //линейные параметры for j:=1 to m do begin p[j,0]:=0; p3[j,0]:=0; end; for i:=1 to m do for j:=1 to nac do begin p[i,j]:=1/nac; p3[i,j]:=1/nac; end; //Задаем начальные условия (Начало) for i:=1 to m do // по количеству входов for j:=1 to nac do // по количеству правил begin cen[i,j]:=0.5*(a[j]+a[i]); sigma[i,j]:=abs((a[j+1]-a[j])*(a[i+1]-a[i])); b[i,j]:=1+0.01*a[i]/a[j]; cen3[i,j]:=0.5*(a[j]+a[i]); sigma3[i,j]:=abs((a[j+1]-a[j])*(a[i+1]-a[i])); b3[i,j]:=1+0.01*a[i]/a[j]; end; //Задаем начальные условия (Конец) nIt:=maxNit-10; // Отвечает за количество итераций //-------------------------------------------------------------- //-------------------------------------------------------------- while(not(adjust))and(nIt<maxNit)do begin gama:=gama*0.9; nIt:=nIt+1; nnit:=i; for num:=nac to nst-nac do //цикл по обучающей выборке begin // Первый слой // прогноз на 1 шаг for i:=1 to nac do //цикл по входным переменным for j:=1 to m do //цикл по правилам myu[i,j]:=1/( 1+exp(Ln(abs((a[i+num]-cen[j,i])/sigma[j,i]))*2*b[j,i]) ); // Второй слой // прогноз на 1 шаг for j:=1 to m do begin myu0[j]:=1; for i:=1 to nac do myu0[j]:=myu0[j]*myu[j,i]; //Пересечение правил end; // Третий слой // прогноз на 1 шаг for j:=1 to m do begin tsk[j]:=p[j,0]; tsk3[j]:=p3[j,0]; // для прогноза на 3 шага end; for j:=1 to m do for i:=1 to nac do tsk[j]:=tsk[j]+p[j,i]*a[num+i-1]; for j:=1 to m do tsk_w[j]:=tsk[j]*myu0[j];// y[k](x)*w[k] // прогноз на 3 шагa //tsk3:=p3[0]; //пятый слой f1:=0; for j:=1 to m do f1:=f1+tsk_w[j]; f2:=0; for j:=1 to m do f2:=f2+myu0[j]; gc:=gc*u; gs:=gs*u; gb:=gb*u; fprov:=f1; if f2>0 then fprov:=f1/f2; adjust_csb(num,fprov); // Настройка нелинейных параметров if f2>0 then ap[num+1]:=f1/f2 else ap[num+1]:=ap[num]; str(ap[num+1]:8:4,s); stringGrid1.Cells[1,num+1]:=s; str(a[num+1]-ap[num+1]:8:4,s); stringGrid1.Cells[2,num+1]:=s; end;//цикл по обучающей выборке for num:=nac+3 to nst-nac-3 do //цикл по обучающей выборке (НА 3 ШАГА ВПЕРЕД) begin // Первый слой for i:=1 to nac do //цикл по входным переменным for j:=1 to m do //цикл по правилам myu3[i,j]:=1/( 1+exp(Ln(abs((a[i+num+3]-cen3[j,i])/sigma3[j,i]))*2*b3[j,i]) ); // Второй слой for j:=1 to m do begin myu03[j]:=1; for i:=1 to nac do myu03[j]:=myu03[j]*myu3[j,i]; //Пересечение правил end; // Третий слой for j:=1 to m do tsk3[j]:=p3[j,0]; // для прогноза на 3 шага for j:=1 to m do for i:=1 to nac do tsk3[j]:=tsk3[j]+p3[j,i]*a[num+i-1+3]; for j:=1 to m do tsk_w3[j]:=tsk3[j]*myu03[j];// y[k](x)*w[k] //пятый слой f1:=0; for j:=1 to m do f1:=f1+tsk_w3[j]; f2:=0; for j:=1 to m do f2:=f2+myu03[j]; gc:=gc*u; gs:=gs*u; gb:=gb*u; if f2>0 then begin adjust_csb3(num,f1/f2); // Настройка нелинейных параметров ap3[num+4]:=f1/f2; end else ap3[num+4]:=ap3[num+3]; str(ap3[num+4]:8:4,s); stringGrid1.Cells[3,num+1]:=s; str(a[num+4]-ap3[num+4]:8:4,s); stringGrid1.Cells[4,num+1]:=s; end;//цикл по обучающей выборке (НА 3 ШАГА ВПЕРЕД) adjust_p();// Настройка линейных параметров adjust_p3(); end; // while not adjust // ДЕЛАЕМ ПРОГНОЗ //делаем прогноз на 1 шаг for num:=nac+2 to n do begin // Первый слой // прогноз на 1 шаг for i:=1 to nac do //цикл по входным переменным for j:=1 to m do //цикл по правилам myu[i,j]:=1/( 1+exp(Ln(abs((a[num-i]-cen[j,i])/sigma[j,i]))*2*b[j,i]) ); // Второй слой // прогноз на 1 шаг for j:=1 to m do begin myu0[j]:=1; for i:=1 to nac do myu0[j]:=myu0[j]*myu[j,i]; //Пересечение правил end; // Третий слой // прогноз на 1 шаг for j:=1 to m do tsk[j]:=p[j,0]; for j:=1 to m do for i:=1 to nac do tsk[j]:=tsk[j]+p[j,i]*a[num-i]; for j:=1 to m do tsk_w[j]:=tsk[j]*myu0[j];// y[k](x)*w[k] //пятый слой f1:=0; for j:=1 to m do f1:=f1+tsk_w[j]; f2:=0; for j:=1 to m do f2:=f2+myu0[j]; if f2>0 then ap[num+1]:=f1/f2 else ap[num+1]:=ap[num]; ap[num+1]:=ap[num+1]+0.0001*(7-m); str(ap[num+1]:8:4,s); stringGrid1.Cells[1,num+1]:=s; str(a[num+1]-ap[num+1]:8:4,s); stringGrid1.Cells[2,num+1]:=s; end; stringGrid1.Cells[2,n+1]:=''; //Сделали прогноз на 1 шаг //------------------------------------------- //Делаем прогноз на 3 шага for num:=nac+3 to n do //цикл по обучающей выборке (НА 3 ШАГА ВПЕРЕД) begin // Первый слой for i:=1 to nac do //цикл по входным переменным for j:=1 to m do //цикл по правилам myu3[i,j]:=1/( 1+exp(Ln(abs((a[num-nac+i]-cen3[j,i])/sigma3[j,i]))*2*b3[j,i]) ); // Второй слой for j:=1 to m do begin myu03[j]:=1; for i:=1 to nac do myu03[j]:=myu03[j]*myu3[j,i]; //Пересечение правил end; // Третий слой for j:=1 to m do tsk3[j]:=p3[j,0]; // для прогноза на 3 шага for j:=1 to m do for i:=1 to nac do tsk3[j]:=tsk3[j]+p3[j,i]*a[num+i-nac]; for j:=1 to m do tsk_w3[j]:=tsk3[j]*myu03[j];// y[k](x)*w[k] //пятый слой f1:=0; for j:=1 to m do f1:=f1+tsk_w3[j]; f2:=0; for j:=1 to m do f2:=f2+myu03[j]; if f2>0 then ap3[num+3]:=f1/f2 else ap3[num+3]:=ap3[num+2] ; ap3[num+1]:=ap3[num+1]+0.0001*(7-m); str(ap3[num+3]:8:4,s); stringGrid1.Cells[3,num+3]:=s; str(a[num+3]-ap3[num+3]:8:4,s); stringGrid1.Cells[4,num+3]:=s; end; stringGrid1.Cells[4,num+1]:=''; stringGrid1.Cells[4,num+2]:=''; stringGrid1.Cells[4,num]:='';sm:=9.5; // Сделали прогноз на 3 шага // вычисляем критерий СКО и САПП для прогноза на 1 и 3 шага skoS:=0; skoP:=0; skoP:=0; sko3P:=0; ms:=0; mp:=0; ms3:=0; mp3:=0; sappS:=0;sappP:=0;sapp3s:=0;sapp3p:=0; for i:=nac+3 to nst do skoS:=skoS+sqr(a[i]-ap[i]); skoS:=(skoS/(nst-nac-3)); Str(skoS:8:7,s); edit3.Text:=s; sappS:=0; for i:=nac+1 to nst do sappS:=sappS+abs(a[i]-ap[i])/a[i]; sappS:=sappS/(nst-nac-1); str(sappS:8:7,s); edit7.Text:=s; for i:=nst to n do skoP:=skoP+sqr(a[i]-ap[i]); skoP:=skoP/(n-nst); Str(skoP:8:7,s); edit4.Text:=s; for i:=nst to n do sappP:=sappP+abs(a[i]-ap[i])/a[i]; sappP:=sappP/(n-nst); Str(sappP:8:7,s); edit8.Text:=s; sko3S:=0; for i:=nac+6 to nst do sko3S:=sko3S+sqr(a[i]-ap3[i]); sko3S:=sko3S/(nst-nac-6); Str(sko3S:8:7,s); edit1.Text:=s; for i:=nac+6 to nst do sapp3S:=sapp3S+abs(a[i]-ap3[i])/a[i]; sapp3S:=sapp3S/(nst-nac-6); Str(sapp3S:8:7,s); edit5.Text:=s; for i:=nst to n do sko3P:=sko3P+sqr(a[i]-ap3[i]); sko3P:=sko3P/(n-nst); Str(sko3P:8:7,s); edit2.Text:=s; for i:=nst to n do sapp3P:=sapp3P+abs(a[i]-ap3[i])/a[i]; sapp3P:=sapp3P/(n-nst); Str(sapp3P:8:7,s); edit6.Text:=s; end;//if sg1[0,1]<>'' end; // обучить нейросеть (конец) procedure TForm1.Button8Click(Sender: TObject);//Сохранить нейросеть begin SaveNNS.InitialDir:='D:\CW'; SaveNNS.DefaultExt:='txt'; if SaveNNS.Execute then begin AssignFile(f4,SaveNNS.FileName); Rewrite(f4); writeln(f4,nns); writeln(f4,nac); writeln(f4,m); for i:=1 to m do for j:=1 to nac do writeln(f4,cen[i,j]:12:10); for i:=1 to m do for j:=1 to nac do writeln(f4,sigma[i,j]:12:10); for i:=1 to m do for j:=1 to nac do writeln(f4,b[i,j]:12:10); for i:=1 to m do for j:=0 to nac do if j<=nac then writeln(f4,p[i,j])else begin end; for i:=1 to m do for j:=1 to nac do writeln(f4,cen3[i,j]:12:10); for i:=1 to m do for j:=1 to nac do writeln(f4,sigma3[i,j]:12:10); for i:=1 to m do for j:=1 to nac do writeln(f4,b3[i,j]:12:10); for i:=1 to m do for j:=0 to nac do if j<=nac then writeln(f4,p3[i,j])else begin end; CloseFile(f4); end;//if end;//Сохранить нейросеть (конец) // RUN procedure TForm1.Button9Click(Sender: TObject); var s:string; l,nc:integer;//l - номер центра; nc - количество центров; num,q:integer;//Количество итераций nIt:longint; sum,gama,pz,pz1,d,yP,x,sk:real; //y прогнозированное tsk_w,tsk_w3,tsk,tsk3:array[1..mM]of real;//отвечает за третий слой f1,f2,s_sign,s_w,s_sign3,s_w3:real;// взвешенная сумма сигналов и весов begin for q:=1 to n do begin s:=StringGrid1.Cells[0,q]; for k:=1 to Length(s) do if (s[k]='.')or(s[k]=',') then s[k]:=decimalSeparator; a[q]:=strToFloat(s); end; skoS:=0; skoP:=0; skoP:=0; sko3P:=0; ms:=0; mp:=0; ms3:=0; mp3:=0; sappS:=0;sappP:=0;sapp3s:=0;sapp3p:=0; for num:=nac+2 to n do begin // Первый слой // прогноз на 1 шаг for i:=1 to nac do //цикл по входным переменным for j:=1 to m do //цикл по правилам myu[i,j]:=1/( 1+exp(Ln(abs((a[num-i]-cen[j,i])/sigma[j,i]))*2*b[j,i]) ); // Второй слой // прогноз на 1 шаг for j:=1 to m do begin myu0[j]:=1; for i:=1 to nac do myu0[j]:=myu0[j]*myu[j,i]; //Пересечение правил end; // Третий слой // прогноз на 1 шаг for j:=1 to m do tsk[j]:=p[j,0]; for j:=1 to m do for i:=1 to nac do tsk[j]:=tsk[j]+p[j,i]*a[num-i]; for j:=1 to m do tsk_w[j]:=tsk[j]*myu0[j];// y[k](x)*w[k] //пятый слой f1:=0; for j:=1 to m do f1:=f1+tsk_w[j]; f2:=0; for j:=1 to m do f2:=f2+myu0[j]; ap[num+1]:=f1/f2; str(ap[num+1]:8:4,s); stringGrid1.Cells[1,num+1]:=s; str(a[num+1]-ap[num+1]:8:4,s); stringGrid1.Cells[2,num+1]:=s; end; stringGrid1.Cells[2,n+1]:=''; //Сделали прогноз на 1 шаг //------------------------------------------- //Делаем прогноз на 3 шага for num:=nac+3 to n do //цикл по обучающей выборке (НА 3 ШАГА ВПЕРЕД) begin // Первый слой for i:=1 to nac do //цикл по входным переменным for j:=1 to m do //цикл по правилам myu3[i,j]:=1/(1+exp(Ln(abs((a[num-nac+i]-cen3[j,i])/sigma3[j,i]))*2*b3[j,i]) ); // Второй слой for j:=1 to m do begin myu03[j]:=1; for i:=1 to nac do myu03[j]:=myu03[j]*myu3[j,i]; //Пересечение правил end; // Третий слой for j:=1 to m do tsk3[j]:=p3[j,0]; // для прогноза на 3 шага for j:=1 to m do for i:=1 to nac do tsk3[j]:=tsk3[j]+p3[j,i]*a[num+i-nac]; for j:=1 to m do tsk_w3[j]:=tsk3[j]*myu03[j];// y[k](x)*w[k] //пятый слой f1:=0; for j:=1 to m do f1:=f1+tsk_w3[j]; f2:=0; for j:=1 to m do f2:=f2+myu03[j]; ap3[num+3]:=f1/f2; str(ap3[num+3]:8:4,s); stringGrid1.Cells[3,num+3]:=s; str(a[num+3]-ap3[num+3]:8:4,s); stringGrid1.Cells[4,num+3]:=s; end; stringGrid1.Cells[4,num+1]:=''; stringGrid1.Cells[4,num+2]:=''; stringGrid1.Cells[4,num]:=''; // Сделали прогноз на 3 шага // вычисляем критерий СКО и САПП для прогноза на 1 и 3 шага skoS:=0; skoP:=0; skoP:=0; sko3P:=0; ms:=0; mp:=0; ms3:=0; mp3:=0; sappS:=0;sappP:=0;sapp3s:=0;sapp3p:=0; for i:=nac+3 to nst do skoS:=skoS+sqr(a[i]-ap[i]); skoS:=(skoS/(nst-nac-3)); Str(skoS:8:7,s); edit3.Text:=s; sappS:=0; for i:=nac+1 to nst do sappS:=sappS+abs(a[i]-ap[i])/a[i]; sappS:=sappS/(nst-nac-1); str(sappS:8:7,s); edit7.Text:=s; for i:=nst to n do skoP:=skoP+sqr(a[i]-ap[i]); skoP:=skoP/(n-nst); Str(skoP:8:7,s); edit4.Text:=s; for i:=nst to n do sappP:=sappP+abs(a[i]-ap[i])/a[i]; sappP:=sappP/(n-nst); Str(sappP:8:7,s); edit8.Text:=s; sko3S:=0; for i:=nac+6 to nst do sko3S:=sko3S+sqr(a[i]-ap3[i]); sko3S:=sko3S/(nst-nac-6); Str(sko3S:8:7,s); edit1.Text:=s; for i:=nac+6 to nst do sapp3S:=sapp3S+abs(a[i]-ap3[i])/a[i]; sapp3S:=sapp3S/(nst-nac-6); Str(sapp3S:8:7,s); edit5.Text:=s; for i:=nst to n do sko3P:=sko3P+sqr(a[i]-ap3[i]); sko3P:=sko3P/(n-nst); Str(sko3P:8:7,s); edit2.Text:=s; for i:=nst to n do sapp3P:=sapp3P+abs(a[i]-ap3[i])/a[i]; sapp3P:=sapp3P/(n-nst); Str(sapp3P:8:7,s); edit6.Text:=s; end;// RUN end. unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Mask,Grids; type TForm2 = class(TForm) Button1: TButton; Button2: TButton; Splitter1: TSplitter; StaticText1: TStaticText; StaticText2: TStaticText; Bevel1: TBevel; Bevel2: TBevel; StaticText4: TStaticText; StaticText5: TStaticText; StaticText6: TStaticText; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Memo1: TMemo; Label1: TLabel; Edit5: TEdit; Label2: TLabel; procedure Button2Click(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Edit1KeyPress(Sender: TObject; var Key: Char); procedure Edit2KeyPress(Sender: TObject; var Key: Char); procedure Edit3KeyPress(Sender: TObject; var Key: Char); procedure Edit4KeyPress(Sender: TObject; var Key: Char); procedure FormPaint(Sender: TObject); procedure Edit5KeyPress(Sender: TObject; var Key: Char); private { Private declarations } public { Public declarations } end; var Form2: TForm2; // f: TextFile; //n,nst,nac,neps,nrp:integer; s:string; sw:array[1..20]of string; implementation uses Unit1; {$R *.dfm} procedure TForm2.Button2Click(Sender: TObject); begin //Закрыть форму Form2.close; end; procedure TForm2.FormResize(Sender: TObject); begin Button2.Top:=Form2.ClientHeight-Button2.Height-8; Button1.Top:=Form2.ClientHeight-Button2.Height*2-16; end; procedure TForm2.FormCreate(Sender: TObject); var i:integer; begin edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; edit5.Text:=''; if nst>n then nst:=trunc(n/2); str(Nst,s); edit1.Text:=s; if nac>nst then nac:=4; str(Nac,s); edit2.Text:=s; if (neps<1)or(neps>1000)then neps:=10; str(Neps,s); edit3.Text:=s; if(nrp<10)or(nrp>99)then nrp:=80; str(Nrp,s); edit4.Text:=s; if (m>mM)or(m<1)then m:=5; Form2.Memo1.Lines.Clear; for i:=1 to nac do Form2.Memo1.Lines[i-1]:=sw[i]+#13#10; end;//Form2.create; procedure TForm2.Button1Click(Sender: TObject);//Сохранить и выйти begin s:=edit1.Text; nst:=abs(StrToInt(s)); if (nst>n)or(nst<2) then nst:=trunc(n/2); s:=edit2.Text; nac:=StrToInt(s); s:=edit3.Text; neps:=abs(StrToInt(s)); if (neps<1)or(neps>1000)then neps:=10; s:=edit4.Text; nrp:=StrToInt(s); if(nrp<10)or(nrp>99)then nrp:=80; s:=edit5.Text; m:=StrToInt(s); if (m>mM)or(m<1)then m:=5; Form2.close; end;//Сохранить и выйти (конец) procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key=#13then begin s:=edit1.Text; nst:=StrToInt(s); if nst>n then nst:=trunc(n/2); end; if not(Key in [#8,'0'..'9'])then Key:=#0; end; procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char); begin if key=#13then begin s:=edit2.Text; nac:=StrToInt(s); if nac>nst then nac:=4; end; if not(Key in [#8,'0'..'9'])then Key:=#0; end; procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char); begin if key=#13then begin s:=edit3.Text; Neps:=StrToInt(s); if (neps<1)or(neps>1000)then neps:=10; end; if not(Key in [#8,'0'..'9'])then Key:=#0; end; procedure TForm2.Edit4KeyPress(Sender: TObject; var Key: Char); begin if key=#13then begin s:=edit4.Text; nrp:=StrToInt(s); if(nrp<10)or(nrp>99)then nrp:=80; end; if not(Key in [#8,'0'..'9'])then Key:=#0; end; procedure TForm2.FormPaint(Sender: TObject); var i:integer; begin edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; edit4.Text:=''; if nst>n then nst:=trunc(n/2); str(Nst,s); edit1.Text:=s; str(Nac,s); edit2.Text:=s; if (neps<1)or(neps>1000)then neps:=10; str(Neps,s); edit3.Text:=s; if(nrp<10)or(nrp>99)then nrp:=80; str(Nrp,s); edit4.Text:=s; if(m<1)or(m>mM)then m:=5; str(m,s); edit5.Text:=s; Form2.Memo1.Lines.Clear; Form2.Memo1.Lines[0]:='Весовые коэфициенты при прогнозированнии на 1 шаг'+#13#10; for i:=1 to nac do begin str(w[i]:6:5,sw[i]); Form2.Memo1.Lines[i]:=sw[i]+#13#10; end; Form2.Memo1.Lines[nac+1]: =' Весовые коэфициенты при прогнозированнии на 3 шагa'+#13#10; for i:=1 to nac do begin str(w3[i]:6:5,sw[i]); Form2.Memo1.Lines[nac+i+1]:=sw[i]+#13#10; end; //Form2.Memo1.Lines[nac+1]:=form1.nnit+#13#10; end; procedure TForm2.Edit5KeyPress(Sender: TObject; var Key: Char); begin if key=#13then begin s:=edit5.Text; m:=StrToInt(s); if (m>mM)or(m<1)then m:=5; end; if not(Key in [#8,'0'..'9'])then Key:=#0; end; end. unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; const cc=0; dd=24; var Form3: TForm3; i,j,k:integer; max,min:real; var d,xlong,ylong,u0x,u0y,w,h,wm,hm:integer; s,inform:string; implementation uses Unit1; {$R *.dfm} //close procedure TForm3.Button1Click(Sender: TObject); begin form3.Close; end; //fi function fi(g:real):integer; var h:real; begin h:=u0x-(g-min)*u0x/(max-min); fi:=trunc(h); end; //Resize procedure TForm3.FormResize(Sender: TObject); var h:integer; begin max:=0; min:=10000; for i:=1 to n do begin if a[i]>max then max:=a[i]; if a[i]<min then min:=a[i]; end; Button1.Top:=Form3.ClientHeight-Button1.Height-8; Form3.Refresh; wm:=Form3.clientWidth; hm:=Form3.clientHeight; d:=1; //Область рисования графика with form3.canvas do begin Pen.color:=clblack; Brush.Color:=clWhite; Brush.Style:=bsSolid; u0x:=hm-32-button1.height; u0y:=32; rectangle(dd,cc,wm-8,hm-16-button1.height); xlong:=wm-u0y-16; ylong:=u0x-8; if n=0 then n:=1; d:=trunc(xlong/n); if d=0 then d:=1; Pen.color:=clgreen; //вывод а moveTo(u0y,fi(a[1])); for i:=2 to n do begin moveTo(u0y+d*(i-1),fi(a[i-1])); lineTo(u0y+d*i,fi(a[i])); end; Pen.color:=clred; //вывод ар for i:=nac+3 to n do begin moveTo(u0y+d*(i-1),fi(ap[i-1])); lineTo(u0y+d*i,fi(ap[i])); end; //вывод сетки и подписей i:=trunc(min/10); j:=trunc(max/10); k:=i*10+5; j:=j*10; font.color:=clBlack; font.Size:=14; while k<=j+1 do begin inform:=IntTostr(k); TextOut(1,fi(k),inform); k:=k+5; end; font.Size:=10; TextOut(Button1.Width+20,u0x+20,'Имя файла: '+fname); TextOut(Button1.Width+20,u0x+40,'Зеленый - реальные данные; красный - спрогнозированные'); end;//with form3.canvas do end;//form3.Resize //Form3.active procedure TForm3.FormActivate(Sender: TObject); begin max:=0; min:=10000; for i:=1 to n do begin if a[i]>max then max:=a[i]; if a[i]<min then min:=a[i]; end; Button1.Top:=Form3.ClientHeight-Button1.Height-8; Form3.Refresh; wm:=Form3.clientWidth; hm:=Form3.clientHeight; d:=1; //Область рисования графика with form3.canvas do begin Pen.color:=clblack; Brush.Color:=clWhite; Brush.Style:=bsSolid; u0x:=hm-32-button1.height; u0y:=32; rectangle(dd,cc,wm-8,hm-16-button1.height); xlong:=wm-u0y-16; ylong:=u0x-8; if n=0 then n:=1; d:=trunc(xlong/n); if d=0 then d:=1; Pen.color:=clgreen; moveTo(u0y,fi(a[1])); for i:=2 to n do begin moveTo(u0y+d*(i-1),fi(a[i-1])); lineTo(u0y+d*i,fi(a[i])); end; Pen.color:=clred; for i:=nac+3 to n do begin moveTo(u0y+d*(i-1),fi(ap[i-1])); lineTo(u0y+d*i,fi(ap[i])); end; //вывод сетки и подписей i:=trunc(min/10); j:=trunc(max/10); k:=i*10+5; j:=j*10; font.color:=clBlack; font.Size:=14; while k<=j+1 do begin inform:=IntTostr(k); TextOut(1,fi(k),inform); k:=k+5; end; font.Size:=10; TextOut(Button1.Width+20,u0x+20,'Имя файла: '+fname); TextOut(Button1.Width+20,u0x+40,'Зеленый - реальные данные; красный - спрогнозированные'); end;//with form3.canvas do end; // form3.active procedure TForm3.FormCreate(Sender: TObject); begin end; end. unit matrices; interface Uses SysUtils; type Matrix = record M, N : integer; { M - число строк, N - столбцов } Data : array of array of extended; end; {$IFNDEF XP_CMATRIX} {$DEFINE XP_MATRIX} TMap = array of integer; {$ENDIF} Vector = array of extended; Procedure SetSize(var A:Matrix; M,N:integer); overload; {задание размера матрицы} Procedure Zero(var A:Matrix); overload; {заполнение матрицы нулями } Procedure E(var A:Matrix); overload; { единичная матрица } Function Transpose(const A:Matrix):Matrix; overload; { транспонирование матрицы } Function Add(const A,B:Matrix):Matrix; overload; { сложение матриц } Function Sub(const A,B:Matrix):Matrix; overload; { вычитанние матриц } Function Mul(const A,B:Matrix):Matrix; overload; { умножение матриц } Function AddValue(const A:Matrix; Value:extended):Matrix; overload; { сложение матрицы с числом } Function MulValue(const A:Matrix; Value:extended):Matrix; overload; { домножение матрицы на число } Function Negate(const A:Matrix):Matrix; overload; { измненение знака элеметнов матрицы} Procedure DeleteRow(var A:Matrix; Row:integer); overload; Procedure DeleteCol(var A:Matrix; Col:integer); overload; Procedure DeleteCross(var A:Matrix; Row:integer); overload; Procedure InsertRow(var A:Matrix; Row:integer); overload; Procedure InsertCol(var A:Matrix; Col:integer); overload; Function MapMatrix(const A:Matrix; const Map:TMap):Matrix; overload; Function UnmapMatrix(const A:Matrix; const Map:TMap):Matrix; overload; Function MapVector(const A:Matrix; const Map:TMap):Matrix; overload; Function UnmapVector(const A:Matrix; const Map:TMap):Matrix; overload; Function SubMatrix(const A:Matrix; const MapX,MapY:TMap):Matrix; overload; Function RangeMatrix(const A:Matrix; StartX,EndX,StartY,EndY:integer):Matrix; overload; Function Vectorize(const A:Matrix):Vector; overload; Function Unvectorize(const V:Vector):Matrix; overload; Function Inverse(const A:Matrix):Matrix; overload; Function Trace(const A:Matrix):extended; overload; Procedure JoinBottom(var A:Matrix; const B:Matrix); overload; Procedure JoinRight(var A:Matrix; const B:Matrix); overload; Procedure JoinDiag(var A:Matrix; const B:Matrix); overload; implementation Procedure SetSize(var A:Matrix; M,N:integer); var i : integer; Begin A.M:=M; A.N:=N; SetLength(A.Data,M); for i:=0 to M-1 do begin SetLength(A.Data[i],N); end; End; Procedure Zero(var A:Matrix); var i,j : integer; Begin for i:=0 to A.M-1 do for j:=0 to A.N-1 do A.Data[i,j]:=0; End; Procedure E(var A:Matrix); var i : integer; Begin if (A.M<>A.N) then Raise Exception.Create('Попытка сформировать неквадратную единичную матрицу!'); Zero(A); for i:=0 to A.M-1 do A.Data[i,i]:=1; End; Function Transpose(const A:Matrix):Matrix; var B : Matrix; i,j : integer; Begin SetSize(B,A.N,A.M); for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[j,i]:=A.Data[i,j]; Result:=B; End; Function Add(const A,B:Matrix):Matrix; var C : Matrix; i,j : integer; Begin if ((A.M<>B.M) or (A.N<>B.N)) then Raise Exception.Create('Размеры матриц при сложении не совпадают!'); SetSize(C,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do C.Data[i,j]:=A.Data[i,j]+B.Data[i,j]; Result:=C; End; Function Sub(const A,B:Matrix):Matrix; var C : Matrix; i,j : integer; Begin if ((A.M<>B.M) or (A.N<>B.N)) then Raise Exception.Create('Размеры матриц при сложении не совпадают!'); SetSize(C,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do C.Data[i,j]:=A.Data[i,j]-B.Data[i,j]; Result:=C; End; Function Mul(const A,B:Matrix):Matrix; var C : Matrix; i,j,k : integer; Begin if (A.N<>B.M) then Raise Exception.Create('Размеры матриц при умножении не совпадают!'); SetSize(C,A.M,B.N); Zero(C); for i:=0 to A.M-1 do for j:=0 to B.N-1 do for k:=0 to A.N-1 do C.Data[i,j]:=C.Data[i,j]+A.Data[i,k]*B.Data[k,j]; Result:=C; End; Function Inverse(const A:Matrix):Matrix; var i,j,k : integer; B : Matrix; sk, sz : extended; Begin if (A.N<>A.M) then Raise Exception.Create('Попытка вычислить обратную матрицу для неквадратной матрицы!'); SetSize(B,A.M,A.M); Zero(B); for i:=0 to A.M-1 do B.Data[i,i]:=1; for i:=0 to A.M-1 do begin sk:=1/A.Data[i,i]; for j:=0 to A.M-1 do if (i<>j) then begin sz:=sk*A.Data[j,i]; for k:=0 to A.M-1 do A.Data[j,k]:=A.Data[j,k]-sz*A.Data[i,k]; for k:=0 to A.M-1 do B.Data[j,k]:=B.Data[j,k]-sz*B.Data[i,k]; end; for k:=0 to A.M-1 do A.Data[i,k]:=sk*A.Data[i,k]; for k:=0 to A.M-1 do B.Data[i,k]:=sk*B.Data[i,k]; end; Result:=B; End; Function Trace(const A:Matrix):extended; var i : integer; res : extended; Begin res:=0; if (A.N<>A.M) then Raise Exception.Create('Попытка вычислить след для неквадратной матрицы!'); for i:=0 to A.M-1 do res:=res+A.Data[i,i]; Result:=res; End; Procedure JoinBottom(var A:Matrix; const B:Matrix); var i,j,oldy : integer; Begin if (A.N<>B.N) thenRaiseException.Create('Невозможно объединить две матрицы по вертикали. Их размеры не совпадают!'); oldy:=A.M; SetSize(A,A.M+B.M,A.N); for i:=0 to B.M-1 do for j:=0 to B.N-1 do A.Data[i+oldY,j]:=B.Data[i,j]; End; Procedure JoinRight(var A:Matrix; const B:Matrix); { присоединение матрицы справа } var i,j,oldx : integer; Begin if (A.M<>B.M) thenRaiseException.Create('Невозможно объединить две матрицы по горизонтали. Их размеры не совпадают!'); oldx:=A.N; SetSize(A,A.M,A.N+B.N); for i:=0 to B.M-1 do for j:=0 to B.N-1 do A.Data[i,j+oldX]:=B.Data[i,j]; End; Procedure JoinDiag(var A:Matrix; const B:Matrix); { присоединение матрицы в нижний правый угол } var i,j,oldx,oldy : integer; Begin oldY:=A.M; oldX:=A.N; SetSize(A,A.M+B.M,A.N+B.N); for i:=0 to B.M-1 do for j:=0 to B.N-1 do A.Data[i+oldY,j+oldX]:=B.Data[i,j]; for i:=0 to oldY-1 do for j:=oldX to A.N-1 do A.Data[i,j]:=0; for i:=oldY to A.M-1 do for j:=0 to oldX-1 do A.Data[i,j]:=0; End; Function Negate(const A:Matrix):Matrix; var i,j : integer; B : Matrix; Begin SetSize(B,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=-A.Data[i,j]; Result:=B; End; Function AddValue(const A:Matrix; Value:extended):Matrix; { сложение матрицы с числом } var i,j : integer; B : Matrix; Begin SetSize(B,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j]+Value; Result:=B; End; Function MulValue(const A:Matrix; Value:extended):Matrix; { домножение матрицы на число } var i,j : integer; B : Matrix; Begin SetSize(B,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j]*Value; Result:=B; End; Procedure DeleteRow(var A:Matrix; Row:integer); { удаление строки } var i : integer; Begin if (Row>=A.M) then Raise Exception.Create('Попытка удалить из матрицы несуществующую строку!'); SetLength(A.Data[Row],0); for i:=Row+1 to A.M-1 do A.Data[i-1]:=A.Data[i]; SetLength(A.Data,A.M-1); dec(A.M); End; Procedure DeleteCol(var A:Matrix; Col:integer); { удаление столбца } var i,j : integer; Begin if (Col>=A.N) then Raise Exception.Create('Попытка удалить из матрицы несуществующий столбец!'); for i:=0 to A.M-1 do begin for j:=Col+1 to A.N-1 do A.Data[i,j-1]:=A.Data[i,j]; SetLength(A.Data[i],A.N-1); end; dec(A.N); End; Procedure DeleteCross(var A:Matrix; Row:integer); { удаление строки и столбца с заданным номером } Begin DeleteRow(A,Row); DeleteCol(A,Row); End; Procedure InsertRow(var A:Matrix; Row:integer); var i : integer; Begin SetSize(A,A.M+1,A.N); for i:=A.M-1 downto Row do A.Data[i+1]:=A.Data[i]; SetLength(A.Data[Row],A.N); for i:=0 to A.N-1 do A.Data[Row,i]:=0; End; Procedure InsertCol(var A:Matrix; Col:integer); var i,j : integer; Begin SetSize(A,A.M,A.N+1); for i:=0 to A.M-1 do begin for j:=A.N-1 downto Col do A.Data[i,j+1]:=A.Data[i,j]; A.Data[i,Col]:=0; end; End; Function MapMatrix(const A:Matrix; const Map:TMap):Matrix; { удаление заданных строк и столбцов } var i,j : integer; B : Matrix; CurValue : integer; Begin SetSize(B,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j]; for i:=0 to length(Map)-2 do begin for j:=i to length(Map)-1 do if (Map[j]<Map[i]) then begin CurValue:=Map[j]; Map[j]:=Map[i]; Map[i]:=CurValue; end; end; for i:=length(Map)-1 downto 0 do DeleteRow(B,Map[i]); for i:=length(Map)-1 downto 0 do DeleteCol(B,Map[i]); Result:=B; End; Function MapVector(const A:Matrix; const Map:TMap):Matrix; { удаление заданных строк} var i,j : integer; B : Matrix; CurValue : integer; Begin SetSize(B,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j]; for i:=0 to length(Map)-2 do begin for j:=i to length(Map)-1 do if (Map[j]<Map[i]) then begin CurValue:=Map[j]; Map[j]:=Map[i]; Map[i]:=CurValue; end; end; for i:=length(Map)-1 downto 0 do DeleteRow(B,Map[i]); Result:=B; End; Function UnmapMatrix(const A:Matrix; const Map:TMap):Matrix; { восстановление матрицы до исходного размера} var i,j : integer; B : Matrix; CurValue : integer; Begin SetSize(B,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j]; for i:=0 to length(Map)-2 do begin for j:=i to length(Map)-1 do if (Map[j]<Map[i]) then begin CurValue:=Map[j]; Map[j]:=Map[i]; Map[i]:=CurValue; end; end; for i:=0 to length(Map)-1 do InsertRow(B,Map[i]); for i:=0 to length(Map)-1 do InsertCol(B,Map[i]); Result:=B; End; Function UnmapVector(const A:Matrix; const Map:TMap):Matrix; { восстановление количества строк матрицы до исходного размера} var i,j : integer; B : Matrix; CurValue : integer; Begin SetSize(B,A.M,A.N); for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j]; for i:=0 to length(Map)-2 do begin for j:=i to length(Map)-1 do if (Map[j]<Map[i]) then begin CurValue:=Map[j]; Map[j]:=Map[i]; Map[i]:=CurValue; end; end; for i:=0 to length(Map)-1 do InsertRow(B,Map[i]); Result:=B; End; Function SubMatrix(const A:Matrix; const MapX,MapY:TMap):Matrix; { выделение подматрицы, содержащей заданные столбцы и строки } var i,j : integer; B : Matrix; Begin SetSize(B,Length(MapY),Length(MapX)); for i:=0 to length(MapY)-1 do begin for j:=0 to length(MapX)-1 do B.Data[i,j]:=A.Data[MapY[i],MapX[j]]; end; Result:=B; End; Function RangeMatrix(const A:Matrix; StartX,EndX,StartY,EndY:integer):Matrix; { выделение подматрицы, содержащей заданный диапазон столбцов и строк } var i,j : integer; B : Matrix; Begin SetSize(B,EndY-StartY+1,EndX-StartX+1); for i:=StartY to EndY do begin for j:=StartX to EndX do B.Data[i-StartY,j-StartX]:=A.Data[i,j]; end; Result:=B; End; Function Vectorize(const A:Matrix):Vector; { преобразование матрицы в вектор, расположенный в памяти последовательно } var i,j,k : integer; V : Vector; Begin SetLength(V,A.M*A.N+2); V[0]:=A.M; V[1]:=A.N; k:=2; for i:=0 to A.M-1 do for j:=0 to A.N-1 do begin V[k]:=A.Data[i,j]; inc(k); end; Result:=V; End; Function Unvectorize(const V:Vector):Matrix; { обратное преобразование: вектор в матрицу } var i,j,k : integer; A : Matrix; Begin SetSize(A,trunc(V[0]),trunc(V[1])); k:=2; for i:=0 to A.M-1 do for j:=0 to A.N-1 do begin A.Data[i,j]:=V[k]; inc(k); end; Result:=A; End; end. |