бесплатные рефераты

Использование нечеткой искусственной нейронной сети TSK (Takagi, Sugeno, Kang’a) в задаче прогнозирования валютных курсов

Использование нечеткой искусственной нейронной сети TSK (Takagi, Sugeno, Kang’a) в задаче прогнозирования валютных курсов

МИНИСТЕРСТВО ОБРАЗОВАНИЯ и НАУКИ УКРАИНЫ

НАЦИОНАЛЬНАЯ АКАДЕМИЯ НАУК УКРАИНЫ

НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ УКРАИНЫ

«КИЕВСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ»

НАУЧНО-ОБУЧАЮЩИЙ КОМПЛЕКС

«ИНСТИТУТ ПРИКЛАДНОГО СИСТЕМНОГО АНАЛИЗА»

Курсовая робота

По дисциплине «Основы проектирования интеллектуальных систем»

«Использование нечеткой искусственной нейронной сети

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. При известных значениях ФП зависимость для выхода можно представить в виде линейной формы относительно параметра :

, где ,

При размерности обучающей выборки , и замене выходного сигнала сети ожидаемым значением получим систему из линейных уравнений вида

где означает уровень активации (вес) условия -го правила при предъявлении -го входного вектора . Это выражение можно записать в матричном виде

Размерность матрицы равняется . При этом количество строк обычно бывает значительно больше количества столбцов . Решение этой системы уравнений можно получить как обычными методами, так и за один шаг, используя псевдо инверсию матрицы :

,

где - псевдо инверсная матрица.

На втором этапе после фиксации значения линейных параметров рассчитываются фактические выходные сигналы , , для этого используется линейная зависимость:

После этого рассчитывается вектор ошибки и критерий

Сигналы ошибок направляются через сеть в обратном порядке согласно методу Back Propagation вплоть до первого слоя, где могут быть рассчитаны компоненты . После вычисления вектора градиента делается шаг спуска градиентным методом. Соответствующие формулы обучения (для самого простого метода быстрого спуска) принимают вид:

,

,

,

где - номер итерации.

После уточнения нелинейных параметров снова запускается процесс адаптации линейных параметров функции 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% хуже по критерию СКО.

USD-EUR

USD-GBR

USD-JPY

ННС

TSK

0.0000162/

0.0000234

0.0000104/

0.0000286

0.0729360/

0.3195586

ИНС

0.00001249/

0.00002505

0.00000625/

0.00001168

0.67920842/

1.25459400

МЭС

0.00002453/

0.00005979

0.00001302/

0.00005821

1.34542648/

0.98794776

Таблица 1. СКО на обучающей выборке. Через черту приведено СКО на проверочной выборке

RUR-USD

RUR-EUR

RUR-GBR

RUR-CHF

RUR-JPY

ННС

TSK

0.0027301/

0.0202277

0.0059374/

0.03839935

0.0339521/

0.0951158

0.0083554/

0.0156637

0.0229360/

0.0695586

ИНС

0.00297544/

0.00663364

0.00545026/

0.01173761

0.03610494/

0.07352309

0.00545026/

0.01173761

0.02180100/

0.04099284

МЭС

0.00524360/

0.04131376

0.00992108/

0.06564615

0.06952535/

0.24069109

0.00992108/

0.06564615

0.04279490/

0.11568037

В таблице 2 приведены значения критерия САПП на обучающей и через черту на проверочной выборке для рассматриваемой ИНС и МЭС. Как видно с таблицы 2 ННС TSK на обучающей и проверочной выборках во всех экспериментах показала лучшие результаты, чем МЭС. ННС TSK в сравнении с ИНС показала приблизительно одинаковые результаты, но в среднем на 1% хуже по критерию САПП. Полученные результаты свидетельствуют о том, что ННС TSK дает результаты по критерию среднеквадратического отклонения и САПП значительно лучше чем МЭС, но немного уступает ИНС с кубическими сплайнами.

USD-EUR

USD-GBR

USD-JPY

ННС TSK

0.0056839/

0.00522093

0.0058833/

0.0089322

0.0046822/

0.0127999

ИНС

0.0055841/

0.0075334

0.0054146/

0.0084466

0.0040441/

0.0106893

МЭС

0.0075474/

0.0125653

0.0084500/

0.0093964

0.0094191/

0.0195964

Таблица 2. САПП на обучающей выборке. Через черту приведен САПП на проверочной выборке

RUR-USD

RUR-EUR

RUR-GBR

RUR-CHF

RUR-JPY

ННС

TSK

0.0025303/

0.0035533

0.0011895/

0.0061127

0.0049555/

0.0089827

0.0022569/

0.0063632

0.0066822/

0.0077999

ИНС

0.0024876/

0.0045957

0.0015338/

0.0071520

0.0037962/

0.0065741

0.0022448/

0.0081520

0.0066179/

0.0084628

МЭС

0.0046019/

0.0123068

0.00992108/

0.06564615

0.0041510/

0.0118451

0.0141510/

0.0178451

0.0117940/

0.0168037

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. Это позволило в сжатые сроки написать удобный пользовательский интерфейс.

Пользовательский интерфейс является очень удобным и позволяет загружать данные из файла, редактировать данные в удобном для пользователя окне, подобном Microsoft Excel, и сохранять данные в файле. Так же предусмотрена возможность изменять длину обучающей выборки, память системы, количество правил, а также задавать другие параметры настройки ННС 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. В этой процедуре реализована настройка параметров, а также получение прогноза. Так же подсчитываются критерии СКО и САПП.

procedure TForm1.Button1Click(Sender: TObject); - загрузить данные из файла. Открывает диалоговое окно, в котором можно выбрать файл с исходными данными. При выборе файла происходит прочтение данных.

procedure TForm1.Button2Click(Sender: TObject); - загрузить настройки ННС TSK из файла. Загружает параметры ННС TSK из файла.

procedure TForm1.Button7Click(Sender: TObject); - сохранить данные.

procedure TForm1.Button8Click(Sender: TObject); - сохранить нейросеть.

procedure TForm1.Button9Click(Sender: TObject); - получить прогноз. Если необходимо получить прогноз, в случае редактирования данных вручную.

procedure TForm1.Button3Click(Sender: TObject); открыть форму 2, в которой размещается меню настроек.

procedure TForm1.Button5Click(Sender: TObject); - открыть форму 3, в которой реализованы графики курсов валют - реальный и спрогнозированный на 1 шаг вперед.

procedure TForm1.Button6Click(Sender: TObject); открыть форму 4, в которой реализованы графики курсов валют - реальный и спрогнозированный на 3 шага вперед.

Unit 2. В данном программном модуле реализована возможность изменять настройки ННС TSK.

Unit 3, Unit 4. Данные два программных модуля являются однотипными. В этих программных модулях происходит вывод графиков. Основной функцией данных программных модулей является:

function fi(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

Текст программы

unit Unit1;

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) then Raise Exception.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) then Raise Exception.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.


© 2010 РЕФЕРАТЫ