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