Использование нечеткой искусственной нейронной сети TSK Takagi Sugeno Kanga в задаче прогнозирования

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

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

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

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

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

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











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



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



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

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





Выполнил

Поляновский Н. А

група КА-55

5 курс

Принял

Зайченко Ю. П





Киев – 2009г.


Реферат



Ключевые слова: прогнозирование, нечеткая нейронная сеть, нечеткость, валютные курсы, TSK.

В данной работе рассматривается прогнозирование валютных курсов. Рассматривалась искусственная нечеткая нейронная сеть TSK. В качестве критерия правильности прогноза были выбраны средний квадрат отклонения и средняя абсолютная процентная погрешность. ННС TSK сравнивается с методом экспоненциального сглаживания и с искусственной нейронной сетью с кубическими сплайнами. Были получены результаты, которые свидетельствуют о том, что рассматриваемый искусственная нейронная сеть может быть использованы в деятельности банков и других инвесторов. 




Введение



Повышение эффективности краткосрочных операций с валютой – одна из важнейших задач в деятельности банков и других инвесторов. Ежедневно (а иногда и несколько раз в день) банки продают и покупают различные валюты в значительных объемах, стремясь придать движение имеющимся в наличии свободным валютным резервам с целью избежать потерь от конъюнктурных колебаний курсов и получить дополнительную прибыль. Эффективность валютных операций существенным образом зависит он надежности прогнозов колебаний курсов валют. Именно поэтому краткосрочное прогнозирование курсов имеет большое практическое значение для оперативной деятельности банков и прочих инвесторов, а вопрос о возможности применения статистических методов для этой цели представляется актуальным.

Информация о динамике курсов национальных валют создает впечатление хаотического движения: падение и рост курсов сменяют друг друга в каком-то случайном порядке. Даже если за большой интервал времени отмечается тенденция, например, к росту, то на графике легко можно увидеть, что эта тенденция прокладывала себе путь через сложные движения временного ряда курса валюты. Направление ряда все время меняется под воздействием нерегулярных и часто неизвестных сил. Исследуемый объект в полной мере подвержен воздействию стихии мирового рынка, и точной информации о будущем движении курса нет. Необходимо сделать прогноз.

В данной курсовой работе предпринята попытка прогнозирования валютных курсов с использованием искусственной нейронной сети.




Раздел 1. Область исследований



1.1 Важность задачи прогнозирования



В наше время перед человечеством стоит задача прогнозирования различных важных с точки зрения прикладной деятельности человека показателей. Эти показатели могут быть физическими, социальными и экономическими. Жизненно важным для человечества является задача своевременного прогнозирования землетрясений, цунами, повышенной солнечной активности. Не менее важной задачей прогнозирования является прогнозирование социальных показателей, таких как: численность народонаселения, уровень смертности, градация граждан по возрастному цензу в будущем. В условиях рыночной экономики для обеспечения населения необходимыми товарами и услугами, а также для обеспечения нормального функционирования экономики требуется прогнозировать следующие макроэкономические показатели: валовой внутренний продукт, валовой внутренний продукт, внешнеэкономическое торговое сальдо, курсы национальных валют.



1.2 Существующие методы прогнозирования



Одним из самых первых и распространенных методов прогнозирования является метод наименьших квадратов (МНК). В основе этого метода лежит гипотеза о том, что временной ряд имеет линейный тренд. Данное допущение в задаче краткосрочного прогнозирования валютных курсов является недопустимым.

В середине двадцатого века независимо друг от друга Браун и Холт предложили метод экспоненциального сглаживания. Суть метода состоит в том, что прогноз на следующий шаг является взвешенной суммой предыдущих, уже известных членов временного ряда. Веса при членах временного ряда экспоненциально уменьшаются со временем. 

В 60-х годах двадцатого века Калманом был предложен метод фильтрации, позже названный в его честь. Суть данного метода состоит в представлении временного ряда в модели пространстве состояний [2].

Метод Группового Учета Аргументов (МГУА) разрабатывается академиком НАН Украины А.Г. Ивахненко и его школой, с 60-х годов двадцатого века, и является типичным методом индуктивного моделирования и одним из наиболее эффективных методов структурно-параметрической идентификации сложных объектов, процессов и систем по данным наблюдений в условиях неполноты информации.

Искусственные нейронные сети являются перспективным направлением в создании искусственного интеллекта и еще одним инструментом, позволяющим осуществлять прогнозирование.




Раздел 2. Описание выбранных инструментов



2.1 Общая характеристика нечетких нейронных сетей



Нечеткие искусственные нейроны, так же называемые нейронными клетками, узлами модулями, моделируют структуру и функции биологических нейронов. Архитектура и особенности нечетких искусственных нейронных сетей, состоящих из нейронов, зависит от конкретных задач, которые будут решаться с их помощью.

Соединенные между собой нейроны создают искусственную нейронную сеть (ИНС). Таким образом ИНС – это пара (M, V), где M – множество нейронов; V – множество связей. Структура сети задается в виде графа, в котором вершинами являются нейроны, а ребрами являются связи.

ИНС могут быть применены в следующих областях и для решения следующих задач: аппроксимация функций, создание ассоциативной памяти, архивирование данных, распознавание и классификация, оптимизационные задачи, управление сложными процессами, прогнозирование, нейрокомпьютеры.

Нечеткие нейронные сети (ННС) применяются в системах с нечеткой логикой. ННС помогают снять неопределенность в задачах, где входные переменные заданы интервально



2.2 Общая характеристика среды программирования Delphi 7



Для программной реализации искусственной нейронной сети, рассматриваемой в данной курсовой работе, была использована визуальная среда программирования Delphi 7. Выбор был обусловлен возможностью быстрого написания приложения с удобным пользовательским интерфейсом для семейства операционных систем Windows и Linux.


Раздел 3. Математическое описание задачи



3.1 Описание общей задачи прогнозирования валютных курсов



В данном подразделе рассматривается прогнозирование валютных курсов. Объектом исследования является временной ряд последовательных ежедневных данных (наблюдений) о динамике валютных пар, который будем записывать как







где  – длина ряда.

Исходные ряды исследуются на абсолютную случайность. Проверяется, не являются ли они белым шумом. В качестве критериев случайности используются: критерий поворотных точек, критерий распределения длины фазы и критерий, основанный на знаках разностей [1].

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



3.2 Описание структуры ННС TSK



На рисунке 1 приводится структура нейронной сети TSK. Выделяются следующие характеристики, свойства, особенности и функциональные элементы сети:

		Обучение проводится с учителем. Т.е. для каждого входного вектора имеется желаемое для выхода значение. 

		Выборка разбивается на 2 части: обучающая и проверочная.

Обобщенную схему вывода в модели TSK при использовании  правил и  переменных  можно представить в следующем виде:

, то ;

, то 



где  - значение лингвистической переменной  для правила  с функцией принадлежности (ФП)



, , 



В нечеткой нейронной сети TSK пересечение правил  определяется ФП в форме произведения, т.е.







При  правилах вывода композиция исходных результатов сети определяется по следующей формуле (аналогично выводу Сугено):





где , 



Нечеткая нейронная сеть TSK задается многослойной структурной сетью, представленной на рисунке 1. В такой сети выделяют 5 слоев.

		Первый слой выполняет раздельную фаззификацию каждой переменной , , определяя для каждого -го правила вывода значение ФП  в соответствии с функцией фаззификации. Это параметрический слой с параметрами , которые подлежат адаптации в процессе обучения.

	Второй слой выполняет агрегирование отдельных переменных , определяя результирующую степень принадлежности для вектора  условиям -го правила. Это не параметрический слой.

	Третий слой представляет собой генератор функции TSK, в котором рассчитывается значения . В этом слое также происходит умножение функции  на , сформированных на предыдущем слое. Это параметрический слой, в котором адаптации подлежат линейные параметры (веса),  для , , определяющие функции последствий правил.

	Четвертый слой составляют 2 нейрона-сумматора, один из которых рассчитывает взвешенную сумму сигналов , а второй определяет сумму весов .

	Пятый слой состоит из одного единственного нейрона. В нем веса подлежат нормализации и вычисляется выходной сигнал  в соответствием с выражением

	





Это так же не параметрический слой.

Из приведенного описания следует, что нечеткая сеть TSK содержит только 2 параметрических слоя (первый и третий), параметры которых уточняются в процессе обучения. Параметры первого слоя () будем называть нелинейными, а параметры третьего слоя - линейными весами.

Общее выражение для функциональной зависимости для сети TSK задается так:












…







.

.

.









































…

Рисунок 1. Структура ННС TSK




3.3 Алгоритм обучения



Рассмотрим гибридный алгоритм обучения. В гибридном алгоритме параметры, подлежащие адаптации, делятся на 2 группы. Первая из них состоит из линейных параметров  третьего слоя, а вторая группа – из параметров нелинейной ФП первого слоя. Уточнение параметров происходит в 2 этапа.

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



, где , 



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





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







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



,



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

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







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







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



 ,

,

,



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

После уточнения нелинейных параметров снова запускается процесс адаптации линейных параметров функции TSK (первый этап) и нелинейных параметров (второй этап). Этот цикл продолжается до тех пор пока не стабилизируются все параметры процесса.

В курсовой работе использовалась обобщенная колоколообразная функция принадлежности





соответствующие формулы градиентного метода целевой функции для одной пары данных  принимают вид:



,

,




Соответствующие производные







принимают следующий вид:



,

,



для ,

где  - дельта Кронекера, ; 



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

Представленный гибридный алгоритм – один из наиболее эффективных способов обучения нечетких нейронных сетей. Его характерной чертой является разделение процесса на два отделенных во времени этапа. Если учитывать, что расчетная сложность каждого алгоритма оптимизации нелинейно зависит от количества параметров, которые подлежат оптимизации, то уменьшение размерности задач оптимизации значительно сокращает объем расчетных операций и повышает скорость сходимости алгоритма. Благодаря этому гибридный алгоритм является более эффективным в сравнении с обычным градиентным методом. [3]




Раздел 4. Полученные результаты



4.1 Экспериментальные исследования ННС TSK



Рассматриваются временные ряды валютных курсов российского рубля по отношению к американскому доллару, евро, британскому фунту стерлингов, швейцарскому франку, японской йене. А также рассматриваются временные ряды курсов валютных пар доллара к евро, британскому фунту стерлингов, японской йене. Временные ряды взяты за 2007, 2008 и начало 2009 года – всего 500 измерений. Данные о временных рядах взяты с сайта биржевых торгов Forex и официального сайта центрального банка России.

Количество точек обучающей выборке в эксперименте взято равным 250, количество точек проверочной выборки – 250. На рисунках 2-9 приведены графики курсов валют реальные данные и прогноз на 1 шаг. Видно, что реальные данные от спрогнозированных данных визуально практически неотличимы. На рисунках 10-17 приведены графики курсов валют реальные данные и прогноз на 3 шага. Видно, что реальные данные от спрогнозированных данных уже можно отличить визуально. В приложении 1 приведены численные значения реальных и спрогнозированных значений курсов валют, а также ошибки прогноза.

Каждая валютная пара рассматривается независимо от других валютных пар. Входными данными для прогнозирования значения курса валютной пары являются наблюдения за ежедневными курсами этой валютной пары за предыдущие периоды. Выходом является прогноз курса рассматриваемой валютной пары на следующий период.

Критерием эффективности прогноза было выбрано среднеквадратическое отклонение СКО. 





где  – прогноз на -ый момент времени, сделанный в момент времени .

Вторым критерием эффективности был САПП.



.



СКО и САПП искались отдельно на обучающей выборке и отдельно на проверочной выборке. Полученные значения СКО и САПП приведены в разделе 4.4., где будет проведена сравнительная характеристика рассматриваемой ИНС и метода экспоненциального сглаживания.





Рисунок 2. График курса валюты доллара США к евро. Зеленый – реальные данные, красный – спрогнозированные






Рисунок 3. График курса валюты доллара США к британскому фунту стерлингов. Зеленый – реальные данные, красный – спрогнозированные





Рисунок 4. График курса валюты доллара США к евро. Зеленый – реальные данные, красный – спрогнозированные




Рисунок 5. График курса валюты российского рубля к доллару США. Зеленый – реальные данные, красный – спрогнозированные





Рисунок 6. График курса валюты российского рубля к евро. Зеленый – реальные данные, красный – спрогнозированные




Рисунок 7. График курса валюты российского рубля к британскому фунту стерлингов. Зеленый – реальные данные, красный – спрогнозированные





Рисунок 8. График курса валюты российского рубля к швейцарскому франку. Зеленый – реальные данные, красный – спрогнозированные




Рисунок 9. График курса валюты российского рубля к доллару японской йене. Зеленый – реальные данные, красный – спрогнозированные





Рисунок 10. График курса валюты доллара США к евро. Зеленый – реальные данные, красный – спрогнозированные на 3 шага




Рисунок 11. График курса валюты доллара США к британскому фунту стерлингов. Зеленый – реальные данные, красный – спрогнозированные на 3 шага





Рисунок 12. График курса валюты доллара США к японской йене. Зеленый – реальные данные, красный – спрогнозированные на 3 шага



Рисунок 13. График курса валюты российского рубля к доллару США. Зеленый – реальные данные, красный – спрогнозированные на 3 шага





Рисунок 14. График курса валюты российского рубля к евро. Зеленый – реальные данные, красный – спрогнозированные на 3 шага




Рисунок 15. График курса валюты российского рубля к британскому фунту стерлингов. Зеленый – реальные данные, красный – спрогнозированные на 3 шага





Рисунок 16. График курса валюты российского рубля к швейцарскому франку. Зеленый – реальные данные, красный – спрогнозированные на 3 шага



Рисунок 17. График курса валюты российского рубля к японской йене. Зеленый – реальные данные, красный – спрогнозированные на 3 шага



4.2 Экспериментальные исследования метода экспоненциально сглаживания



Метод экспоненциально сглаживания (МЭС) является адаптивным алгоритмом прогнозирования. МЭС проявил себя с хорошей стороны во многих экспериментальных исследованиях [1]. Поэтому МЭС был выбран для сравнения потенциальной эффективности ННС TSK в данной курсовой работе. 

Экспоненциальное сглаживание ряда  осуществлялось по рекуррентной формуле:







где  – значение экспоненциальной средней в момент ;  – постоянная сглаживания (параметр адаптации), , .

При прогнозировании исходная выборка была разбита на 2 части: обучающую и проверочную. Длины обучающей и проверочной выборке в эксперименте с ННС TSK и МЭС были равны. На обучающей выборке была выбрана наилучшая постоянная сглаживания . Далее она использовалась для прогнозирования на проверочной выборке. 



4.3 Экспериментальные исследования нейронной сети с кубическими сплайнами



На рисунке 2 приводится структура нейронной сети, которая была ранее предложена автором курсовой работы. Данная нейронная сеть приводится для сравнения. Выделяются следующие характеристики, свойства, особенности и функциональные элементы сети:

		Обучение проводится с учителем. Т.е. для каждого входного вектора имеется желаемое для выхода значение. 

		Выборка разбивается на 2 части: обучающая и проверочная.

		На вход  необходимо подавать сигналы 



. , 



где – память системы.

		На  входов подаются следующие величины 



, 



где – память системы.

		На выходе ИНС ожидается прогноз изменения значения величины . Т.е.






где  – выход ИНС.

		 функции принадлежности типа кубических сплайнов, предложенные Е. В. Бодянским. На интервале [0,1], нужно расположить  функций принадлежности  при этом центр  расположен в нуле (), а центр  в единице 







.



Данные функции принадлежности не допускают «дыр» и обеспечивают единичное разбиение, т.е.












net

































.

.

.





Рисунок 2. Структура исследуемой нейронной сети



4.4 Сравнение полученных результатов



В таблице 1 приведено СКО на обучающей и через черту приведено СКО на проверочной выборке для ННС TSK, ИНС с кубическими сплайнами (далее ИНС) и МЭС.

Как видно с таблицы 1 ННС TSK на обучающей выборке во всех экспериментах показала СКО более чем в два раза меньшее, чем МЭС.

На проверочной выборке ННС TSK также показала лучший результат во всех экспериментах в сравнении с МЭС.

ННС TSK в сравнении с ИНС показала приблизительно одинаковые результаты, но в среднем на 3.75% хуже по критерию СКО.






USD-EUR

USD-GBR

USD-JPY

ННС

TSK

0.0000162/

0.0000234

0.0000104/

0.0000286

0.0729360/

0.3195586

ИНС

0.00001249/

0.00002505

0.00000625/

0.00001168

0.67920842/

1.25459400

МЭС 

0.00002453/

0.00005979

0.00001302/

0.00005821

1.34542648/

0.98794776



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



RUR-USD

RUR-EUR

RUR-GBR

RUR-CHF

RUR-JPY

ННС

TSK

0.0027301/

0.0202277

0.0059374/

0.03839935

0.0339521/

0.0951158

0.0083554/

0.0156637

0.0229360/

0.0695586

ИНС

0.00297544/

0.00663364

0.00545026/

0.01173761

0.03610494/

0.07352309

0.00545026/

0.01173761

0.02180100/

0.04099284

МЭС

0.00524360/

0.04131376

0.00992108/

0.06564615

0.06952535/

0.24069109

0.00992108/

0.06564615

0.04279490/

0.11568037



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





USD-EUR

USD-GBR

USD-JPY

ННС TSK

0.0056839/

0.00522093

0.0058833/

0.0089322

0.0046822/

0.0127999

ИНС

0.0055841/

0.0075334

0.0054146/

0.0084466

0.0040441/

0.0106893

МЭС

0.0075474/

0.0125653

0.0084500/

0.0093964

0.0094191/

0.0195964


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



RUR-USD

RUR-EUR

RUR-GBR

RUR-CHF

RUR-JPY

ННС 

TSK

0.0025303/

0.0035533

0.0011895/

0.0061127

0.0049555/

0.0089827

0.0022569/

0.0063632

0.0066822/

0.0077999

ИНС

0.0024876/

0.0045957

0.0015338/

0.0071520

0.0037962/

0.0065741

0.0022448/

0.0081520

0.0066179/

0.0084628

МЭС

0.0046019/

0.0123068

0.00992108/

0.06564615

0.0041510/

0.0118451

0.0141510/

0.0178451

0.0117940/

0.0168037



4.5 Исследование чувствительности ННС TSK 



4.5.1 Исследование чувствительности к длине обучающей выборки

В данном разделе рассматривается чувствительность ННС TSK в зависимости от длины обучающей выборки. Рассматривается только одна валютная пара доллар США – евро. Во всех экспериментах варьировалась длина обучающей выборки, она составляла 50, 100, 200, 300 и 400 точек. На рисунках 18-25 приведены графики зависимостей СКО и критерия САПП в зависимости от длины обучающей выборки.

На графиках 18, 20, 22, 24 изображены графики критериев СКО и САПП на обучающей выборке. Как видно с графиков, при увеличении обучающей выборки уменьшаются значения СКО и САПП. На графиках 19, 21, 23, 25 изображены графики критериев СКО и САПП на проверочной выборке. Как видно с графиков, при увеличении обучающей выборки увеличиваются значения СКО и САПП и достигают своего максимального значения при длине обучающей выборки в 400 точек. Далее графики начинают убывать.

Можно сделать вывод, что оптимальным значеное значение обучающей выборки составляет 50 точек.




Рисунок 18. Зависимость при прогнозированни на 1 шаг СКО () на обучающей выборке от изменения длины обучающей выборки.





Рисунок 19. Зависимость СКО () при прогнозированни на 1 шаг на проверочной выборке от изменения длины обучающей выборки.






Рисунок 20. Зависимость при прогнозированни на 3 шага вперед СКО () на обучающей выборке от изменения длины обучающей выборки





Рисунок 21. Зависимость при прогнозированни на 3 шага вперед СКО () на проверочной выборке от изменения длины обучающей выборки.






Рисунок 22. Зависимость при прогнозированни на 1 шаг САПП  на обучающей выборке от изменения длины обучающей выборки





Рисунок 23. Зависимость при прогнозированни на 1 шаг САПП  на проверочной выборке от изменения длины обучающей выборки






Рисунок 24. Зависимость при прогнозированни на 3 шага САПП  на обучающей выборке от изменения длины обучающей выборки





Рисунок 25. Зависимость при прогнозированни на 3 шага САПП  на проверочной выборке от изменения длины обучающей выборки



4.5.2 Исследование чувствительно ННС TSK к изменению количества правил

В данном разделе рассматривается чувствительность ННС TSK в зависимости от количества правил в первом слое структуры сети. Рассматривается только одна валютная пара доллар США – евро. Длина обучающей выборки была выбрана равной 50. Во всех экспериментах варьировалось количество правил, оно составляло 1, 3, 5, 7, 9. 

На рисунках 26, 28, 30, 32 изображена зависимость критериев СКО и САПП при прогнозировании на 1 и 3 шага вперед на обучающей выборке. Как видно с этих рисунков, при увеличении количества правил уменьшается ошибка по критерию СКО и САПП при прогнозах на 1 и на 3 шага вперед.

На рисунках 27, 29, 31, 33 изображена зависимость критериев СКО и САПП при прогнозировании на 1 и 3 шага вперед на проверочной выборке. Как видно из этих рисунков, при увеличении количества правил сначала достигается минимум при количества правил , а затем ошибка увеличивается. 





Рисунок 26. Зависимость СКО  при прогнозировании на 1 шаг на обучающей выборке в зависимости от количества правил






Рисунок 27. Зависимость СКО  при прогнозировании на 1 шаг на проверочной выборке в зависимости от количества правил





Рисунок 28. Зависимость СКО  при прогнозировании на 3 шага на обучающей выборке в зависимости от количества правил






Рисунок 29. Зависимость СКО  при прогнозировании на 3 шага на проверочной выборке в зависимости от количества правил





Рисунок 30. Зависимость САПП  при прогнозировании на 1 шаг на обучающей выборке в зависимости от количества правил






Рисунок 31. Зависимость САПП  при прогнозировании на 1 шаг на проверочной выборке в зависимости от количества правил





Рисунок 32. Зависимость САПП  при прогнозировании на 3 шага на обучающей выборке в зависимости от количества правил






Рисунок 33. Зависимость САПП  при прогнозировании на 3 шага на проверочной выборке в зависимости от количества правил



4.6 Анализ полученных результатов



Во время первого экспериментального исследования ННС TSK прогнозировались валютные курсы для восьми валютных пар. Были получены значения критериев эффективности СКО и САПП. Для сравнения потенциальной эффективности ННС TSK были выбраны МЭС и ИНС с кубическими сплайнами. В результате экспериментов было установлено, что ННС TSK производит значительно более эффективное прогнозирование валютных курсов. СКО, полученное при прогнозировании рассматриваемой ИНС, было в 2-6 раз меньше, чем СКО, полученное при прогнозировании МЭС. Таким образом, ННС TSK лучше МЭС по критерию СКО. Критерий САПП, полученный при прогнозировании ННС TSK, был в 1,5-2 раза меньше, чем критерий САПП, полученный при прогнозировании МЭС. Таким образом ННС TSK по критериям СКО и САПП показала результаты лучше чем МЭС. ИНС с кубическими сплайнами и ННС TSK показали приблизительно равные показатели СКО и САПП, но в среднем ИНС с кубическими сплайнами дала прогноз на 3.5% лучше по критерию СКО и на 1% лучше по критерию САПП.

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




Раздел 5. Описание программного продукта



5.1 Описание пользовательского интерфейса



Пользовательский интерфейс был выполнен в визуальной среде программирования Delphi 7. Это позволило в сжатые сроки написать удобный пользовательский интерфейс.

Пользовательский интерфейс является очень удобным и позволяет загружать данные из файла, редактировать данные в удобном для пользователя окне, подобном Microsoft Excel, и сохранять данные в файле. Так же предусмотрена возможность изменять длину обучающей выборки, память системы, количество правил, а также задавать другие параметры настройки ННС TSK.

Реализована возможность сохранить настройки ННС TSK. Это является очень полезной функцией программы, т.к. время для настройки параметров растет нелинейно в зависимости от их количества и может достигать нескольких минут. 

Реализована возможность просмотра графиков курсов валют.



5.2 Инструкция по работе с программой



При запуске программы перед пользователем появляется интерфейс, показанный на рисунке 34.

Функции и процедуры, вызываемые кнопками интерфейса:

«Загрузить данные» – открывает диалоговое окно, позволяющее выбрать файл с данными.

«Загрузить нейросеть» – открывает диалоговое окно, позволяющее выбрать файл с параметрами ННС TSK.

«Сохранить данные» – открывает диалоговое окно, позволяющее выбрать файл для сохранения данных.

«Сохранить нейросеть» – открывает диалоговое окно, позволяющее выбрать файл для сохранения настроек ННС TSK.

«Настройки» – открывает окно настроек, рисунок 35. В окне можно задать длину обучающей выборки, количество правил и память системы. Для того чтобы изменения вошли в силу, необходимо нажать кнопку «Сохранить и выйти». Для отмены изменений необходимо нажать кнопку «Выйти без сохранения».

«Обучить нейросеть» – настраивает весовые коэффициенты ННС TSK, а также делает прогноз по имеющейся выборке. После введения данных и нажатия клавиши интерфейс пользователя принимает вид, представленный на рисунке 36.

«Графики курса валюты» – открывает окно с графиками курсов валют реального и спрогнозированного на 1 шаг вперед. Пример окон проиллюстрирован на рисунках 2-9.

«Графики курса валюты (3)» – открывает окно с графиками курсов валют реального и спрогнозированного на 3 шага вперед. Пример окон проиллюстрирован на рисунках 10-17.

«RUN» – служит для того, чтобы получить прогноз при изменении данных в окне редактирования. При нажатии клавиши не происходит пересчет весовых коэфициентов, а только происходит прогнозирование.

«Закрыть» – закрывает программу.

Так же реализована возможность просмотра значений среднеквадратичного отклонения обучающей и проверочной выборки в окне пользовательского интерфейса, рисунок 34.






Рисунок 34. Интерфейс при запуске программы






Рисунок 35. Окно интерфейса «настройки»






Рисунок 36. Интерфейс после нажатия клавиши «обучить нейросеть»



Описание программы



Unit 1 является основным модулем программной реализации ИНС. В Unit 1 реализованы интерфейс пользователя, рисунок 34, возможность вводить данные вручную и с файла, обучение ИНС, получение прогноза. В Unit 1 реализована главная форма из которой вызываются формы 2, 3, 4, которые программно реализованы в Unit 2, Unit 3, Unit 4. Для возможности работы с матрицами подключается модуль matrices.

Основными структурами данных являются следующие массивы:

а – массив реального курса валют;

ap – массив спрогнозированного курса валюты на 1 шаг.

ap3 – массив спрогнозированного курса валюты на 3 шага.

Основными процедурами и функциями Unit 1 являются:

procedure TForm1.Button4Click(Sender: TObject); - обучение ННС TSK. В этой процедуре реализована настройка параметров, а также получение прогноза. Так же подсчитываются критерии СКО и САПП.

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

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

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

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

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

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

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

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

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

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

function fi(g:real):integer; - при построении графика курса валюты сопоставляет реальное значение курса валюты к координате на экране.

В приложении 2 представлен текст программного модуля.




Выводы



В данной курсовой работе рассматривалась нечеткая нейронная сеть TSK. Целью данной работы было исследовать возможность применения ННС TSK для прогнозирования валютных курсов. 

Для экспериментальных исследований были выбраны курсы валют доллара США и российского рубля, а критериями правильности служили среднеквадратическое отклонение и средняя абсолютная процентная погрешность. Выборка была взята за 2007-2009 года, всего 500 точек.

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

Рассматривалась чувствительность ННС TSK к изменению длины обучающей выборке. При увеличении длины обучающей выборки СКО и критерий САПП уменьшались и стремились к установившемуся значению, на обучающей выборке. На проверочной выборке при увеличении обучающей выборки увеличиваются значения СКО и САПП и достигают своего максимального значения при длине обучающей выборки в 400 точек. Далее графики начинают убывать. Можно сделать вывод, что оптимальным значеное значение обучающей выборки составляет 50 точек.

Рассматривалась чувствительность ННС TSK к изменению количества правил. На обучающей выборке при увеличении количества правил уменьшается ошибка по критерию СКО и САПП при прогнозах на 1 и на 3 шага вперед. На проверочной выборке при увеличении количества правил сначала достигается минимум при количества правил , а затем ошибка увеличивается. 

Во время выполнения экспериментальных исследований, были получены результаты, которые могут быть использованы в деятельности банков и других инвесторов.




Литература



		Лукашин Ю. П. Адаптивные методы краткосрочного прогнозирования временных рядов. – М.: Финансы и статистика, 2003. – 416 с.

		Згуровский М. З., Подладчиков В. Н. Аналитические методы калмановской фильтрации для систем с априорной неопределенностью. – К.: Наукова думка, 1995. – 584с. 

3. Зайченко Ю. П. Нечеткие модели и методы в интеллектуальных системах. К.: Слово, 2008. – 344с. 

4. Круглов В. В., Борисов В. В. Искусственные нейронные сети. Теория и практика. – М.: Горячая линия – Телеком, 2001. – 382с. 

5. Руденко О. Г., Бодянський Є. В. Штучні нейронні мережі. – Харків: Компанія СМІТ, 2006. – 404с. 

6. Хоменко А., Гофман В., Мещеряков Е., Никифоров В. Delphi 7. – Санкт-Петербург: БВХ-Петербург, 2004. – 1200с.




Приложение 1. Результаты экспериментальных исследований.



Первый столбец – реальные данные. Второй столбец – прогноз на 1 шаг вперед. Третий столбец – ошибка прогноза на 1 шаг вперед. Четвертый столбец – прогноз на 3 шага вперед. Пятый столбец – ошибка прогноза на 3 шага вперед.



USD_EUR

 0.6456 0.6467 -0.0011 0.6447 0.0009

 0.6415 0.6456 -0.0041 0.6467 -0.0052

 0.6447 0.6438 0.0009 0.6474 -0.0027

 0.6467 0.6447 0.0020 0.6438 0.0029

 0.6441 0.6415 0.0026 0.6456 -0.0015

 0.6384 0.6441 -0.0057 0.6415 -0.0031

 0.6341 0.6384 -0.0043 0.6441 -0.0100

 0.6368 0.6341 0.0027 0.6384 -0.0016

 0.6336 0.6368 -0.0032 0.6341 -0.0005

 0.6358 0.6336 0.0022 0.6368 -0.0010

 0.6399 0.6358 0.0041 0.6336 0.0063

 0.6441 0.6399 0.0042 0.6358 0.0083

 0.6428 0.6441 -0.0013 0.6399 0.0029

 0.6432 0.6428 0.0004 0.6441 -0.0009

 0.6472 0.6432 0.0040 0.6428 0.0044

 0.6472 0.6472 -0.0000 0.6432 0.0040

 0.6427 0.6472 -0.0045 0.6472 -0.0045

 0.6356 0.6427 -0.0071 0.6472 -0.0116

 0.6363 0.6356 0.0007 0.6427 -0.0064

 0.6464 0.6363 0.0101 0.6356 0.0108

 0.6427 0.6464 -0.0037 0.6363 0.0064

 0.6487 0.6427 0.0060 0.6464 0.0023

 0.6508 0.6487 0.0021 0.6427 0.0081

 0.6464 0.6508 -0.0044 0.6487 -0.0023

 0.6444 0.6464 -0.0020 0.6508 -0.0064

 0.6452 0.6444 0.0008 0.6464 -0.0012

 0.6451 0.6452 -0.0001 0.6444 0.0007

 0.6400 0.6451 -0.0051 0.6452 -0.0052

 0.6456 0.6400 0.0056 0.6451 0.0005

 0.6414 0.6456 -0.0042 0.6400 0.0014

 0.6423 0.6414 0.0009 0.6456 -0.0033

 0.6355 0.6423 -0.0068 0.6414 -0.0059

 0.6350 0.6355 -0.0005 0.6423 -0.0073

 0.6350 0.6350 -0.0000 0.6355 -0.0005

 0.6330 0.6350 -0.0020 0.6350 -0.0020

 0.6302 0.6330 -0.0028 0.6350 -0.0048

 0.6366 0.6302 0.0064 0.6330 0.0036

 0.6392 0.6366 0.0026 0.6302 0.0090

 0.6389 0.6392 -0.0003 0.6366 0.0023

 0.6352 0.6389 -0.0037 0.6392 -0.0040

 0.6341 0.6352 -0.0011 0.6389 -0.0048

 0.6291 0.6341 -0.0050 0.6352 -0.0061

 0.6284 0.6291 -0.0007 0.6341 -0.0057

 0.6280 0.6284 -0.0004 0.6291 -0.0011

 0.6311 0.6280 0.0031 0.6284 0.0027

 0.6306 0.6311 -0.0005 0.6280 0.0026

 0.6307 0.6306 0.0001 0.6311 -0.0004

 0.6299 0.6307 -0.0008 0.6306 -0.0007

 0.6325 0.6299 0.0026 0.6307 0.0018

 0.6367 0.6325 0.0042 0.6299 0.0068

 0.6376 0.6367 0.0009 0.6325 0.0051

 0.6351 0.6376 -0.0025 0.6367 -0.0016

 0.6416 0.6351 0.0065 0.6376 0.0040

 0.6428 0.6416 0.0012 0.6351 0.0077

 0.6414 0.6428 -0.0014 0.6416 -0.0002

 0.6424 0.6414 0.0010 0.6428 -0.0004

 0.6435 0.6424 0.0011 0.6414 0.0021

 0.6466 0.6435 0.0031 0.6424 0.0042

 0.6489 0.6466 0.0023 0.6435 0.0054

 0.6519 0.6489 0.0030 0.6466 0.0053

 0.6646 0.6519 0.0127 0.6489 0.0157

 0.6686 0.6646 0.0040 0.6519 0.0167

 0.6711 0.6686 0.0025 0.6646 0.0065

 0.6714 0.6711 0.0003 0.6686 0.0028

 0.6731 0.6714 0.0017 0.6711 0.0020

 0.6806 0.6731 0.0075 0.6714 0.0092

 0.6789 0.6806 -0.0017 0.6731 0.0058

 0.6782 0.6789 -0.0007 0.6806 -0.0024

 0.6803 0.6782 0.0021 0.6789 0.0014

 0.6724 0.6803 -0.0079 0.6782 -0.0058

 0.6757 0.6724 0.0033 0.6803 -0.0046

 0.6756 0.6757 -0.0001 0.6724 0.0032

 0.6822 0.6756 0.0066 0.6757 0.0065

 0.6811 0.6822 -0.0011 0.6756 0.0055

 0.6809 0.6811 -0.0002 0.6822 -0.0013

 0.6818 0.6809 0.0009 0.6811 0.0007

 0.6887 0.6818 0.0069 0.6809 0.0078

 0.6903 0.6887 0.0016 0.6818 0.0085

 0.6965 0.6903 0.0062 0.6887 0.0078

 0.7007 0.6965 0.0042 0.6903 0.0104

 0.7081 0.7007 0.0074 0.6965 0.0116

 0.7056 0.7081 -0.0025 0.7007 0.0049

 0.7134 0.7056 0.0078 0.7081 0.0053

 0.7176 0.7134 0.0042 0.7056 0.0120

 0.7057 0.7176 -0.0119 0.7134 -0.0077

 0.7052 0.7057 -0.0005 0.7176 -0.0124

 0.7067 0.7052 0.0015 0.7057 0.0010

 0.7076 0.7067 0.0009 0.7052 0.0024

 0.6953 0.7076 -0.0123 0.7067 -0.0114

 0.6950 0.6953 -0.0003 0.7076 -0.0126

 0.6806 0.6950 -0.0144 0.6953 -0.0147

 0.6786 0.6806 -0.0020 0.6950 -0.0164

 0.6825 0.6786 0.0039 0.6806 0.0019

 0.6830 0.6825 0.0005 0.6786 0.0044

 0.6852 0.6830 0.0022 0.6825 0.0027

 0.6954 0.6852 0.0102 0.6830 0.0124

 0.7103 0.6954 0.0149 0.6852 0.0251

 0.7114 0.7103 0.0011 0.6954 0.0160

 0.7219 0.7114 0.0105 0.7103 0.0116

 0.7238 0.7219 0.0019 0.7114 0.0124

 0.7403 0.7238 0.0165 0.7219 0.0184

 0.7327 0.7403 -0.0076 0.7238 0.0089

 0.7311 0.7327 -0.0016 0.7403 -0.0092

 0.7329 0.7311 0.0018 0.7327 0.0002

 0.7425 0.7329 0.0096 0.7311 0.0114

 0.7381 0.7425 -0.0044 0.7329 0.0052

 0.7322 0.7381 -0.0059 0.7425 -0.0103

 0.7372 0.7322 0.0050 0.7381 -0.0009

 0.7454 0.7372 0.0082 0.7322 0.0132

 0.7430 0.7454 -0.0024 0.7372 0.0058

 0.7512 0.7430 0.0082 0.7454 0.0058

 0.7632 0.7512 0.0120 0.7430 0.0202

 0.7792 0.7632 0.0160 0.7512 0.0280

 0.7766 0.7792 -0.0026 0.7632 0.0134

 0.7902 0.7766 0.0136 0.7792 0.0110

 0.8035 0.7902 0.0133 0.7766 0.0269

 0.8016 0.8035 -0.0019 0.7902 0.0114

 0.7782 0.8016 -0.0234 0.8035 -0.0253

 0.7783 0.7782 0.0001 0.8016 -0.0233

 0.7886 0.7783 0.0103 0.7782 0.0104

 0.7863 0.7886 -0.0023 0.7783 0.0080

 0.7681 0.7863 -0.0182 0.7886 -0.0205

 0.7669 0.7681 -0.0012 0.7863 -0.0194

 0.7840 0.7669 0.0171 0.7681 0.0159

 0.7828 0.7840 -0.0012 0.7669 0.0159

 0.7838 0.7828 0.0010 0.7840 -0.0002

 0.7966 0.7838 0.0128 0.7828 0.0138

 0.7984 0.7966 0.0018 0.7838 0.0146

 0.7856 0.7984 -0.0128 0.7966 -0.0110

 0.7858 0.7856 0.0002 0.7984 -0.0126

 0.7882 0.7858 0.0024 0.7856 0.0026

 0.7939 0.7882 0.0057 0.7858 0.0081

 0.7986 0.7939 0.0047 0.7882 0.0104

 0.7983 0.7986 -0.0003 0.7939 0.0044

 0.7758 0.7983 -0.0225 0.7986 -0.0228

 0.7675 0.7758 -0.0083 0.7983 -0.0308

 0.7798 0.7675 0.0123 0.7758 0.0040

 0.7798 0.7798 -0.0000 0.7675 0.0123

 0.7916 0.7798 0.0118 0.7798 0.0118

 0.7859 0.7916 -0.0057 0.7798 0.0061

 0.7893 0.7859 0.0034 0.7916 -0.0023

 0.7789 0.7893 -0.0104 0.7859 -0.0070

 0.7903 0.7789 0.0114 0.7893 0.0010

 0.7730 0.7903 -0.0173 0.7789 -0.0059

 0.7729 0.7730 -0.0001 0.7903 -0.0174

 0.7680 0.7729 -0.0049 0.7730 -0.0050

 0.7523 0.7680 -0.0157 0.7729 -0.0206

 0.7492 0.7523 -0.0031 0.7680 -0.0188

 0.7320 0.7492 -0.0172 0.7523 -0.0203

 0.7242 0.7320 -0.0078 0.7492 -0.0250

 0.6968 0.7242 -0.0274 0.7320 -0.0352

 0.6996 0.6968 0.0028 0.7242 -0.0246

 0.7211 0.6996 0.0215 0.6968 0.0243

 0.7168 0.7211 -0.0043 0.6996 0.0172

 0.7162 0.7168 -0.0006 0.7211 -0.0049

 0.7162 0.7162 0.0000 0.7168 -0.0006

 0.7130 0.7162 -0.0032 0.7162 -0.0032

 0.7027 0.7130 -0.0103 0.7162 -0.0135

 0.7100 0.7027 0.0073 0.7130 -0.0030

 0.7184 0.7100 0.0084 0.7027 0.0157

 0.7172 0.7184 -0.0012 0.7100 0.0072

 0.7366 0.7172 0.0194 0.7184 0.0182

 0.7439 0.7366 0.0073 0.7172 0.0267

 0.7290 0.7439 -0.0149 0.7366 -0.0076

 0.7293 0.7290 0.0003 0.7439 -0.0146

 0.7411 0.7293 0.0118 0.7290 0.0121

 0.7493 0.7411 0.0082 0.7293 0.0200

 0.7579 0.7493 0.0086 0.7411 0.0168

 0.7591 0.7579 0.0012 0.7493 0.0098

 0.7638 0.7591 0.0047 0.7579 0.0059

 0.7553 0.7638 -0.0085 0.7591 -0.0038

 0.7725 0.7553 0.0172 0.7638 0.0087

 0.7772 0.7725 0.0047 0.7553 0.0219

 0.7720 0.7772 -0.0052 0.7725 -0.0005

 0.7782 0.7720 0.0062 0.7772 0.0010

 0.7603 0.7782 -0.0179 0.7720 -0.0117

 0.7601 0.7603 -0.0002 0.7782 -0.0181

 0.7552 0.7601 -0.0049 0.7603 -0.0051

 0.7700 0.7552 0.0148 0.7601 0.0099

 0.7811 0.7700 0.0111 0.7552 0.0259

 0.7809 0.7811 -0.0002 0.7700 0.0109

 0.7687 0.7809 -0.0122 0.7811 -0.0124

 0.7779 0.7687 0.0092 0.7809 -0.0030

 0.7791 0.7779 0.0012 0.7687 0.0104

 0.7769 0.7791 -0.0022 0.7779 -0.0010

 0.7656 0.7769 -0.0113 0.7791 -0.0135

 0.7714 0.7656 0.0058 0.7769 -0.0055

 0.7757 0.7714 0.0043 0.7656 0.0101

 0.7800 0.7757 0.0043 0.7714 0.0086

 0.7766 0.7800 -0.0034 0.7757 0.0009

 0.7832 0.7766 0.0066 0.7800 0.0032

 0.7957 0.7832 0.0125 0.7766 0.0191

 0.7971 0.7957 0.0014 0.7832 0.0139

 0.7891 0.7971 -0.0080 0.7957 -0.0066

 0.7881 0.7891 -0.0010 0.7971 -0.0090

 0.7846 0.7881 -0.0035 0.7891 -0.0045

 0.7849 0.7846 0.0003 0.7881 -0.0032

 0.7856 0.7849 0.0007 0.7846 0.0010

 0.7835 0.7856 -0.0021 0.7849 -0.0014

 0.7899 0.7835 0.0064 0.7856 0.0043

 0.7950 0.7899 0.0051 0.7835 0.0115

 0.7970 0.7950 0.0020 0.7899 0.0071

 0.7933 0.7970 -0.0037 0.7950 -0.0017

 0.7959 0.7933 0.0026 0.7970 -0.0011

 0.7892 0.7959 -0.0067 0.7933 -0.0041

 0.7914 0.7892 0.0022 0.7959 -0.0045

 0.7842 0.7914 -0.0072 0.7892 -0.0050

 0.7829 0.7842 -0.0013 0.7914 -0.0085

 0.7814 0.7829 -0.0015 0.7842 -0.0028

 0.7759 0.7814 -0.0055 0.7829 -0.0070

 0.7695 0.7759 -0.0064 0.7814 -0.0119

 0.7710 0.7695 0.0015 0.7759 -0.0049

 0.7628 0.7710 -0.0082 0.7695 -0.0067

 0.7310 0.7628 -0.0318 0.7710 -0.0400

 0.7372 0.7310 0.0062 0.7628 -0.0256

 0.7371 0.7372 -0.0001 0.7310 0.0061

 0.7395 0.7371 0.0024 0.7372 0.0023

 0.7387 0.7395 -0.0008 0.7371 0.0016

 0.7376 0.7387 -0.0011 0.7395 -0.0019

 0.7516 0.7376 0.0140 0.7387 0.0129

 0.7609 0.7516 0.0093 0.7376 0.0233

 0.7542 0.7609 -0.0067 0.7516 0.0026

 0.7563 0.7542 0.0021 0.7609 -0.0046

 0.7431 0.7563 -0.0132 0.7542 -0.0111

 0.7437 0.7431 0.0006 0.7563 -0.0126

 0.7484 0.7437 0.0047 0.7431 0.0053

 0.7530 0.7484 0.0046 0.7437 0.0093

 0.7526 0.7530 -0.0004 0.7484 0.0042

 0.7606 0.7526 0.0080 0.7530 0.0076

 0.7489 0.7606 -0.0117 0.7526 -0.0037

 0.7533 0.7489 0.0044 0.7606 -0.0073

 0.7587 0.7533 0.0054 0.7489 0.0098

 0.7579 0.7587 -0.0008 0.7533 0.0046

 0.7675 0.7579 0.0096 0.7587 0.0088

 0.7751 0.7675 0.0076 0.7579 0.0172

 0.7706 0.7751 -0.0045 0.7675 0.0031

 0.7686 0.7706 -0.0020 0.7751 -0.0065

 0.7665 0.7686 -0.0021 0.7706 -0.0041

 0.7532 0.7665 -0.0133 0.7686 -0.0154

 0.7613 0.7532 0.0081 0.7665 -0.0052

 0.7657 0.7613 0.0044 0.7532 0.0125

 0.7506 0.7657 -0.0151 0.7613 -0.0107

 0.7552 0.7506 0.0046 0.7657 -0.0105

 0.7539 0.7552 -0.0013 0.7506 0.0033

 0.7483 0.7539 -0.0056 0.7552 -0.0069

 0.7478 0.7483 -0.0005 0.7539 -0.0061

 0.7513 0.7478 0.0035 0.7483 0.0030

 0.7458 0.7513 -0.0055 0.7478 -0.0020

 0.7412 0.7458 -0.0046 0.7513 -0.0101

 0.7343 0.7412 -0.0069 0.7458 -0.0115

 0.7343 0.7412 

 			 0.7458

 	 0.7343

 	 

USD_GBR

 0.5135 0.5135 0.0007 0.5098 0.0044

 0.5142 0.5098 0.0037 0.5133 0.0002

 0.5131 0.5142 -0.0011 0.5135 -0.0004

 0.5108 0.5131 -0.0023 0.5142 -0.0034

 0.5129 0.5108 0.0021 0.5131 -0.0002

 0.5076 0.5129 -0.0053 0.5108 -0.0032

 0.5084 0.5076 0.0008 0.5129 -0.0045

 0.5054 0.5084 -0.0030 0.5076 -0.0022

 0.5046 0.5054 -0.0008 0.5084 -0.0038

 0.5062 0.5046 0.0016 0.5054 0.0008

 0.5049 0.5062 -0.0013 0.5046 0.0003

 0.5061 0.5049 0.0012 0.5062 -0.0001

 0.5053 0.5061 -0.0008 0.5049 0.0004

 0.5085 0.5053 0.0032 0.5061 0.0024

 0.5089 0.5085 0.0004 0.5053 0.0036

 0.5116 0.5089 0.0027 0.5085 0.0031

 0.5112 0.5116 -0.0004 0.5089 0.0023

 0.5078 0.5112 -0.0034 0.5116 -0.0038

 0.5061 0.5078 -0.0017 0.5112 -0.0051

 0.5117 0.5061 0.0056 0.5078 0.0039

 0.5090 0.5117 -0.0027 0.5061 0.0029

 0.5137 0.5090 0.0047 0.5117 0.0020

 0.5129 0.5137 -0.0008 0.5090 0.0039

 0.5093 0.5129 -0.0036 0.5137 -0.0044

 0.5117 0.5093 0.0024 0.5129 -0.0012

 0.5110 0.5117 -0.0007 0.5093 0.0017

 0.5069 0.5110 -0.0041 0.5117 -0.0048

 0.5068 0.5069 -0.0001 0.5110 -0.0042

 0.5100 0.5068 0.0032 0.5069 0.0031

 0.5074 0.5100 -0.0026 0.5068 0.0006

 0.5083 0.5074 0.0009 0.5100 -0.0017

 0.5058 0.5083 -0.0025 0.5074 -0.0016

 0.5016 0.5058 -0.0042 0.5083 -0.0067

 0.5024 0.5016 0.0008 0.5058 -0.0034

 0.5012 0.5024 -0.0012 0.5016 -0.0004

 0.5019 0.5012 0.0007 0.5024 -0.0005

 0.5045 0.5019 0.0026 0.5012 0.0033

 0.5077 0.5045 0.0032 0.5019 0.0058

 0.5080 0.5077 0.0003 0.5045 0.0035

 0.5048 0.5080 -0.0032 0.5077 -0.0029

 0.5057 0.5048 0.0009 0.5080 -0.0023

 0.5027 0.5057 -0.0030 0.5048 -0.0021

 0.5018 0.5027 -0.0009 0.5057 -0.0039

 0.4988 0.5018 -0.0030 0.5027 -0.0039

 0.5002 0.4988 0.0014 0.5018 -0.0016

 0.4991 0.5002 -0.0011 0.4988 0.0003

 0.5004 0.4991 0.0013 0.5002 0.0002

 0.5006 0.5004 0.0002 0.4991 0.0015

 0.5014 0.5006 0.0008 0.5004 0.0010

 0.4995 0.5014 -0.0019 0.5006 -0.0011

 0.5030 0.4995 0.0035 0.5014 0.0016

 0.5015 0.5030 -0.0015 0.4995 0.0020

 0.5049 0.5015 0.0034 0.5030 0.0019

 0.5048 0.5049 -0.0001 0.5015 0.0033

 0.5049 0.5048 0.0001 0.5049 0.0000

 0.5065 0.5049 0.0016 0.5048 0.0017

 0.5100 0.5065 0.0035 0.5049 0.0051

 0.5120 0.5100 0.0020 0.5065 0.0055

 0.5134 0.5120 0.0014 0.5100 0.0034

 0.5144 0.5134 0.0010 0.5120 0.0024

 0.5210 0.5144 0.0066 0.5134 0.0076

 0.5223 0.5210 0.0013 0.5144 0.0079

 0.5262 0.5223 0.0039 0.5210 0.0052

 0.5353 0.5262 0.0091 0.5223 0.0130

 0.5344 0.5353 -0.0009 0.5262 0.0082

 0.5363 0.5344 0.0019 0.5353 0.0010

 0.5356 0.5363 -0.0007 0.5344 0.0012

 0.5360 0.5356 0.0004 0.5363 -0.0003

 0.5370 0.5360 0.0010 0.5356 0.0014

 0.5331 0.5370 -0.0039 0.5360 -0.0029

 0.5393 0.5331 0.0062 0.5370 0.0023

 0.5380 0.5393 -0.0013 0.5331 0.0049

 0.5438 0.5380 0.0058 0.5393 0.0045

 0.5459 0.5438 0.0021 0.5380 0.0079

 0.5477 0.5459 0.0018 0.5438 0.0039

 0.5498 0.5477 0.0021 0.5459 0.0039

 0.5600 0.5498 0.0102 0.5477 0.0123

 0.5620 0.5600 0.0020 0.5498 0.0122

 0.5654 0.5620 0.0034 0.5600 0.0054

 0.5654 0.5654 0.0000 0.5620 0.0034

 0.5701 0.5654 0.0047 0.5654 0.0047

 0.5659 0.5701 -0.0042 0.5654 0.0005

 0.5699 0.5659 0.0040 0.5701 -0.0002

 0.5715 0.5699 0.0016 0.5659 0.0056

 0.5588 0.5715 -0.0127 0.5699 -0.0111

 0.5589 0.5588 0.0001 0.5715 -0.0126

 0.5610 0.5589 0.0021 0.5588 0.0022

 0.5589 0.5610 -0.0021 0.5589 -0.0000

 0.5499 0.5589 -0.0090 0.5610 -0.0111

 0.5467 0.5499 -0.0032 0.5589 -0.0122

 0.5410 0.5467 -0.0057 0.5499 -0.0089

 0.5380 0.5410 -0.0030 0.5467 -0.0087

 0.5405 0.5380 0.0025 0.5410 -0.0005

 0.5432 0.5405 0.0027 0.5380 0.0052

 0.5435 0.5432 0.0003 0.5405 0.0030

 0.5542 0.5435 0.0107 0.5432 0.0110

 0.5617 0.5542 0.0075 0.5435 0.0182

 0.5617 0.5617 0.0000 0.5542 0.0075

 0.5660 0.5617 0.0043 0.5617 0.0043

 0.5636 0.5660 -0.0024 0.5617 0.0019

 0.5754 0.5636 0.0118 0.5660 0.0094

 0.5685 0.5754 -0.0069 0.5636 0.0049

 0.5777 0.5685 0.0092 0.5754 0.0023

 0.5800 0.5777 0.0023 0.5685 0.0115

 0.5870 0.5800 0.0070 0.5777 0.0093

 0.5780 0.5870 -0.0090 0.5800 -0.0020

 0.5720 0.5780 -0.0060 0.5870 -0.0150

 0.5736 0.5720 0.0016 0.5780 -0.0044

 0.5801 0.5736 0.0065 0.5720 0.0081

 0.5779 0.5801 -0.0022 0.5736 0.0043

 0.5836 0.5779 0.0057 0.5801 0.0035

 0.5939 0.5836 0.0103 0.5779 0.0160

 0.6184 0.5939 0.0245 0.5836 0.0348

 0.6180 0.6184 -0.0004 0.5939 0.0241

 0.6312 0.6180 0.0132 0.6184 0.0128

 0.6465 0.6312 0.0153 0.6180 0.0285

 0.6414 0.6465 -0.0051 0.6312 0.0102

 0.6136 0.6414 -0.0278 0.6465 -0.0329

 0.6152 0.6136 0.0016 0.6414 -0.0262

 0.6189 0.6152 0.0037 0.6136 0.0053

 0.6307 0.6189 0.0118 0.6152 0.0155

 0.6213 0.6307 -0.0094 0.6189 0.0024

 0.6190 0.6213 -0.0023 0.6307 -0.0117

 0.6331 0.6190 0.0141 0.6213 0.0118

 0.6334 0.6331 0.0003 0.6190 0.0144

 0.6395 0.6334 0.0061 0.6331 0.0064

 0.6663 0.6395 0.0268 0.6334 0.0329

 0.6758 0.6663 0.0095 0.6395 0.0363

 0.6730 0.6758 -0.0028 0.6663 0.0067

 0.6654 0.6730 -0.0076 0.6758 -0.0104

 0.6650 0.6654 -0.0004 0.6730 -0.0080

 0.6627 0.6650 -0.0023 0.6654 -0.0027

 0.6760 0.6627 0.0133 0.6650 0.0110

 0.6747 0.6760 -0.0013 0.6627 0.0120

 0.6589 0.6747 -0.0158 0.6760 -0.0171

 0.6516 0.6589 -0.0073 0.6747 -0.0231

 0.6570 0.6516 0.0054 0.6589 -0.0019

 0.6570 0.6570 -0.0000 0.6516 0.0054

 0.6737 0.6570 0.0167 0.6570 0.0167

 0.6690 0.6737 -0.0047 0.6570 0.0120

 0.6766 0.6690 0.0076 0.6737 0.0029

 0.6762 0.6766 -0.0004 0.6690 0.0072

 0.6846 0.6762 0.0084 0.6766 0.0080

 0.6742 0.6846 -0.0104 0.6762 -0.0020

 0.6768 0.6742 0.0026 0.6846 -0.0078

 0.6744 0.6768 -0.0024 0.6742 0.0002

 0.6688 0.6744 -0.0056 0.6768 -0.0080

 0.6724 0.6688 0.0036 0.6744 -0.0020

 0.6546 0.6724 -0.0178 0.6688 -0.0142

 0.6529 0.6546 -0.0017 0.6724 -0.0195

 0.6469 0.6529 -0.0060 0.6546 -0.0077

 0.6622 0.6469 0.0153 0.6529 0.0093

 0.6734 0.6622 0.0112 0.6469 0.0265

 0.6755 0.6734 0.0021 0.6622 0.0133

 0.6776 0.6755 0.0021 0.6734 0.0042

 0.6817 0.6776 0.0041 0.6755 0.0062

 0.6850 0.6817 0.0033 0.6776 0.0074

 0.6853 0.6850 0.0003 0.6817 0.0036

 0.6947 0.6853 0.0094 0.6850 0.0097

 0.6842 0.6947 -0.0105 0.6853 -0.0011

 0.6886 0.6842 0.0044 0.6947 -0.0061

 0.6848 0.6886 -0.0038 0.6842 0.0006

 0.6768 0.6848 -0.0080 0.6886 -0.0118

 0.6557 0.6768 -0.0211 0.6848 -0.0291

 0.6585 0.6557 0.0028 0.6768 -0.0183

 0.6564 0.6585 -0.0021 0.6557 0.0007

 0.6746 0.6564 0.0182 0.6585 0.0161

 0.6886 0.6746 0.0140 0.6564 0.0322

 0.6843 0.6886 -0.0043 0.6746 0.0097

 0.6849 0.6843 0.0006 0.6886 -0.0037

 0.6787 0.6849 -0.0062 0.6843 -0.0056

 0.7132 0.6787 0.0345 0.6849 0.0283

 0.7286 0.7132 0.0154 0.6787 0.0499

 0.7225 0.7286 -0.0061 0.7132 0.0093

 0.7327 0.7225 0.0102 0.7286 0.0041

 0.7164 0.7327 -0.0163 0.7225 -0.0061

 0.7070 0.7164 -0.0094 0.7327 -0.0257

 0.6986 0.7070 -0.0084 0.7164 -0.0178

 0.7012 0.6986 0.0026 0.7070 -0.0058

 0.6939 0.7012 -0.0073 0.6986 -0.0047

 0.7029 0.6939 0.0090 0.7012 0.0017

 0.6949 0.7029 -0.0080 0.6939 0.0010

 0.6910 0.6949 -0.0039 0.7029 -0.0119

 0.6836 0.6910 -0.0074 0.6949 -0.0113

 0.6769 0.6836 -0.0067 0.6910 -0.0141

 0.6697 0.6769 -0.0072 0.6836 -0.0139

 0.6848 0.6697 0.0151 0.6769 0.0079

 0.6961 0.6848 0.0113 0.6697 0.0264

 0.7020 0.6961 0.0059 0.6848 0.0172

 0.6934 0.7020 -0.0086 0.6961 -0.0027

 0.7009 0.6934 0.0075 0.7020 -0.0011

 0.7031 0.7009 0.0022 0.6934 0.0097

 0.7027 0.7031 -0.0004 0.7009 0.0018

 0.6989 0.7027 -0.0038 0.7031 -0.0042

 0.6978 0.6989 -0.0011 0.7027 -0.0049

 0.6874 0.6978 -0.0104 0.6989 -0.0115

 0.6942 0.6874 0.0068 0.6978 -0.0036

 0.7011 0.6942 0.0069 0.6874 0.0137

 0.6973 0.7011 -0.0038 0.6942 0.0031

 0.7004 0.6973 0.0031 0.7011 -0.0007

 0.7150 0.7004 0.0146 0.6973 0.0177

 0.7127 0.7150 -0.0023 0.7004 0.0123

 0.7072 0.7127 -0.0055 0.7150 -0.0078

 0.7082 0.7072 0.0010 0.7127 -0.0045

 0.7088 0.7082 0.0006 0.7072 0.0016

 0.7270 0.7088 0.0182 0.7082 0.0188

 0.7225 0.7270 -0.0045 0.7088 0.0137

 0.7260 0.7225 0.0035 0.7270 -0.0010

 0.7242 0.7260 -0.0018 0.7225 0.0017

 0.7158 0.7242 -0.0084 0.7260 -0.0102

 0.7098 0.7158 -0.0060 0.7242 -0.0144

 0.7134 0.7098 0.0036 0.7158 -0.0024

 0.7158 0.7134 0.0024 0.7098 0.0060

 0.6857 0.7158 -0.0301 0.7134 -0.0277

 0.6929 0.6857 0.0072 0.7158 -0.0229

 0.6899 0.6929 -0.0030 0.6857 0.0042

 0.6790 0.6899 -0.0109 0.6929 -0.0139

 0.6857 0.6790 0.0067 0.6899 -0.0042

 0.6899 0.6857 0.0042 0.6790 0.0109

 0.6982 0.6899 0.0083 0.6857 0.0125

 0.7070 0.6982 0.0088 0.6899 0.0171

 0.6993 0.7070 -0.0077 0.6982 0.0011

 0.6943 0.6993 -0.0050 0.7070 -0.0127

 0.6804 0.6943 -0.0139 0.6993 -0.0189

 0.6757 0.6804 -0.0047 0.6943 -0.0186

 0.6799 0.6757 0.0042 0.6804 -0.0005

 0.6783 0.6799 -0.0016 0.6757 0.0026

 0.6807 0.6783 0.0024 0.6799 0.0008

 0.6840 0.6807 0.0033 0.6783 0.0057

 0.6745 0.6840 -0.0095 0.6807 -0.0062

 0.6710 0.6745 -0.0035 0.6840 -0.0130

 0.6671 0.6710 -0.0039 0.6745 -0.0074

 0.6709 0.6671 0.0038 0.6710 -0.0001

 0.6768 0.6709 0.0059 0.6671 0.0097

 0.6881 0.6768 0.0113 0.6709 0.0172

 0.6805 0.6881 -0.0076 0.6768 0.0037

 0.6899 0.6805 0.0094 0.6881 0.0018

 0.6833 0.6899 -0.0066 0.6805 0.0028

 0.6805 0.6833 -0.0028 0.6899 -0.0094

 0.6814 0.6805 0.0009 0.6833 -0.0019

 0.6847 0.6814 0.0033 0.6805 0.0042

 0.6757 0.6847 -0.0090 0.6814 -0.0057

 0.6758 0.6757 0.0001 0.6847 -0.0089

 0.6721 0.6758 -0.0037 0.6757 -0.0036

 0.6675 0.6721 -0.0046 0.6758 -0.0083

 0.6625 0.6675 -0.0050 0.6721 -0.0096

 0.6640 0.6625 0.0015 0.6675 -0.0035

 0.6659 0.6640 0.0019 0.6625 0.0034

 0.6629 0.6659 -0.0030 0.6640 -0.0011

 0.6604 0.6629 -0.0025 0.6659 -0.0055

 0.6604 0.6629 

 0.6629

 		 0.6604

 			

USD_JPY

104.2047103.6934 0.5113104.4752 -0.2705

103.6750104.1532 -0.4782103.9586 -0.2836

103.3538103.7136 -0.3598104.2417 -0.8879

104.4162103.8443 0.5719103.1780 1.2382

105.1965104.6120 0.5845103.7789 1.4176

104.6245105.3017 -0.6772104.4557 0.1688

103.8663104.6587 -0.7924105.1283 -1.2620

104.0468103.2421 0.8047103.7106 0.3362

103.2146104.0812 -0.8666103.4110 -0.1964

104.0054103.2579 0.7475103.9839 0.0215

104.6970103.9241 0.7729103.2032 1.4938

105.5150104.8956 0.6194104.0755 1.4395

105.4793105.6390 -0.1597104.5459 0.9334

104.4164105.5561 

-1.1397105.5807 -1.1643

105.2747104.2905 0.9842105.3336 -0.0589

104.9968105.1988 

-0.2020104.4596 0.5372

106.0071105.1390 0.8681105.3583 0.6488

105.3396106.0117 -0.6721104.9532 0.3864

106.0645105.4359 0.6286106.1152 -0.0507

107.2048105.9861 1.2187105.1282 2.0766

106.7869107.4222 -0.6353106.2245 0.5624

107.9575106.8772 1.0803107.0488 0.9087

107.9269107.9415 -0.0146106.8273 1.0996

108.1965108.1012 0.0953107.9392 0.2573

108.0338108.1617 -0.1279107.8048 0.2290

108.0664108.0579 0.0085108.3384 -0.2720

107.9554108.0349 -0.0795107.9153 0.0401

107.4351107.9581 -0.5230108.1700 -0.7349

107.8848107.3776 0.5072107.9300 -0.0452

107.7769107.8545 -0.0776107.4728 0.3041

108.2971107.8528 0.4443107.9095 0.3876

107.2984108.3039 -1.0055107.7333 -0.4349

106.2944107.2947 -1.0003108.3423 -2.0479

106.1863106.0563 0.1300107.1921 -1.0058

106.0248106.0854 -0.0606106.4272 -0.4024

105.8753106.0431 -0.1678106.1969 -0.3216

106.8054105.8473 0.9581106.0948 0.7106

107.5554106.8658 0.6896105.8739 1.6815

107.3564107.7478 -0.3914106.7494 0.6070

107.1263107.4012 -0.2749107.4787 -0.3524

107.0368107.0468 -0.0100107.3239 -0.2871

106.1570107.0067 -0.8497107.1020 -0.9450

106.1868106.0859 0.1009107.0694 -0.8826

104.7869106.0738 -1.2869106.2198 -1.4329

104.6150104.7198 -0.1048106.2534 -1.6384

105.8364104.4107 1.4257104.7460 1.0904

106.7551105.9719 0.7832104.7716 1.9835

106.7465107.0026 -0.2561105.7435 1.0030

107.1114106.8163 0.2951106.7354 0.3760

107.6872107.0969 0.5903106.6261 1.0611

107.8848107.7818 0.1030107.0591 0.8257

107.5046107.9624 -0.4578107.6889 -0.1843

108.2056107.4754 0.7302107.9143 0.2913

108.1870108.1999 -0.0129107.4856 0.7014

108.0871108.2976 -0.2105108.2339 -0.1468

107.6053108.0457 -0.4404108.1475 -0.5422

107.6109107.5539 0.0570108.1463 -0.5354

108.2055107.5503 0.6552107.5461 0.6594

109.3957108.2748 1.1209107.6952 1.7005

109.4451109.5706 -0.1255108.1942 1.2509

110.1055109.5842 0.5213109.3696 0.7359

110.0850110.1106 -0.0256109.3361 0.7489

109.7970110.1698 -0.3728110.1055 -0.3085

108.7249109.7420 -1.0171110.0064 -1.2815

109.7552108.6015 1.1537109.8985 -0.1433

110.4866109.7037 0.7829108.7124 1.7742

110.0572110.7325 -0.6753109.8777 0.1795

109.6855110.0777 -0.3922110.3860 -0.7005

109.9856109.5642 0.4214110.0738 -0.0882

108.3790109.9773 -1.5983109.6098 -1.2308

109.8756108.3100 1.5656110.0301 -0.1545

109.1267109.7623 -0.6356108.4184 0.7083

109.8350109.3425 0.4925110.0045 -0.1695

109.7370109.7238 0.0132108.9142 0.8228

109.5551109.8576 -0.3025110.0551 -0.5000

108.6947109.4965 -0.8018109.4605 -0.7658

108.8670108.6058 0.2612109.7313 -0.8643

108.1861108.7719 -0.5858108.6138 -0.4277

107.7733108.1944 -0.4211108.9838 -1.2105

106.9573107.6413 -0.6840108.1489 -1.1916

107.9747106.8670 1.1077107.8699 0.1048

107.1451107.9631 -0.8180106.8994 0.2457

107.8066107.2547 0.5519108.0774 -0.2708

106.6838107.7014 -1.0176107.0155 -0.3317

107.4962106.7212 0.7750107.9234 -0.4272

105.7049107.3789 -1.6740106.4903 -0.7854

105.0252105.7235 -0.6983107.7239 -2.6987

104.6862104.6929 -0.0067105.5097 -0.8235

104.9147104.6463 0.2684105.3032 -0.3885

107.2019104.9187 2.2832104.5594 2.6425

106.3546107.4292 -1.0746105.0790 1.2756

105.7269106.5887 -0.8618107.0892 -1.3623

106.0364105.4599 0.5765106.1532 -0.1168

106.4852106.0112 0.4740105.8302 0.6550

106.0768106.5915 -0.5147105.9432 0.1336

105.1272106.0923 -0.9651106.6466 -1.5194

105.9056104.9764 0.9292106.0290 -0.1234

106.0050105.8558 0.1492105.1129 0.8921

105.2649106.1614 -0.8965105.9634 -0.6985

105.7965105.1861 0.6104105.9675 -0.1710

101.2568105.7327 -4.4759105.3084 -4.0516

102.2947101.0037 1.2910105.7483 -3.4536

 99.8173101.7366 -1.9193101.2389 -1.4216

100.6065 99.9650 0.6415102.7212 -2.1147

 99.4775100.2899 -0.8124 99.5095 -0.0320

101.9915 99.6053 2.3862101.1341 0.8574

102.2266102.0035 0.2231 98.9648 3.2618

101.4766102.6365 -1.1599102.3201 -0.8435

100.4066101.3382 -0.9316101.7757 -1.3691

101.3968100.2074 1.1894101.6569 -0.2601

101.7571101.3628 0.3943100.2512 1.5059

100.4266101.9686 -1.5420101.6170 -1.1904

 98.6563100.3274 -1.6711101.7039 -3.0476

 97.6207 98.3188 -0.6981100.4396 -2.8189

 94.2454 97.3574 -3.1120 98.6428 -4.3974

 93.2939 93.9185 -0.6246 97.7662 -4.4723

 95.6676 92.8079 2.8597 94.3728 1.2948

 97.5334 95.8772 1.6562 93.5395 3.9939

 97.4601 98.0488 -0.5887 95.5741 1.8860

 98.3483 97.6028 0.7455 97.4382 0.9101

 98.9630 98.3229 0.6401 97.2104 1.7526

100.5150 99.1338 1.3812 98.2112 2.3038

 98.9452100.6814 -1.7362 98.9457 -0.0005

 98.0802 99.0040 -0.9238100.6267 -2.5465

 98.1398 97.7287 0.4111 98.7853 -0.6455

 97.9667 98.0956 -0.1289 98.2796 -0.3129

 95.5363 98.0012 -2.4649 98.1114 -2.5751

 95.9177 95.3191 0.5986 98.1315 -2.2138

 96.6655 95.6251 1.0404 95.4940 1.1715

 97.0700 96.8850 0.1850 96.0422 1.0278

 97.3705 97.1888 0.1817 96.5722 0.7983

 96.7957 97.4155 -0.6198 97.1509 -0.3552

 95.0168 96.7724 -1.7556 97.1733 -2.1565

 95.4330 94.7845 0.6485 96.7678 -1.3348

 96.6894 95.2495 1.4399 95.1000 1.5894

 95.5379 96.9251 -1.3872 95.5664 -0.0285

 95.4584 95.6008 -0.1424 96.6537 -1.1953

 95.4584 95.2391 0.2193 95.5144 -0.0560

 93.7002 95.4978 -1.7976 95.4435 -1.7433

 93.6774 93.5661 0.1113 95.3844 -1.7070

 93.2757 93.4367 -0.1610 93.8503 -0.5746

 92.8238 93.3194 -0.4956 93.7424 -0.9186

 92.1794 92.7362 -0.5568 93.2163 -1.0369

 92.7862 92.0851 0.7011 92.9562 -0.1700

 92.4707 92.7670 -0.2963 92.0831 0.3876

 92.9495 92.5575 0.3920 92.8446 0.1049

 91.9511 92.9179 -0.9668 92.4006 -0.4495

 91.2942 91.9509 -0.6567 92.9999 -1.7057

 90.6955 91.0856 -0.3901 91.8239 -1.1284

 89.9984 90.6031 -0.6047 91.4485 -1.4501

 87.8918 89.8923 -2.0005 90.6667 -2.7749

 89.8309 87.6581 2.1728 90.1155 -0.2846

 89.4728 89.7293 -0.2565 87.8974 1.5754

 90.0872 89.8028 0.2844 89.9653 0.1219

 90.5922 90.0024 0.5898 89.2512 1.3410

 90.6927 90.7298 -0.0371 90.2506 0.4421

 90.7961 90.7422 0.0539 90.2757 0.5204

 90.1971 90.7948 -0.5977 90.8259 -0.6288

 90.3676 90.1589 0.2087 90.7442 -0.3766

 90.7826 90.2949 0.4877 90.2052 0.5774

 91.1710 90.8652 0.3058 90.4473 0.7237

 93.2288 91.2510 1.9778 90.7510 2.4778

 94.2125 93.4253 0.7872 91.1851 3.0274

 92.6775 94.5521 -1.8746 93.1602 -0.4827

 91.1701 92.5978 -1.4277 94.0493 -2.8792

 90.2615 90.7967 -0.5352 92.6708 -2.4093

 88.9377 90.0525 -1.1148 91.2312 -2.2935

 89.6021 88.7784 0.8237 90.4170 -0.8149

 89.2845 89.5166 -0.2321 89.1180 0.1665

 89.6059 89.4097 0.1962 89.6598 -0.0539

 90.2992 89.5597 0.7395 89.1386 1.1606

 90.2350 90.4112 -0.1762 89.6661 0.5689

 87.8123 90.3101 -2.4978 90.1344 -2.3221

 88.6358 87.5811 1.0547 90.2541 -1.6183

 88.7680 88.3737 0.3943 87.7991 0.9689

 89.2236 88.9986 0.2250 88.8081 0.4155

 88.9986 89.2430 -0.2444 88.6771 0.3215

 89.8851 89.0361 0.8490 89.3744 0.5107

 89.7548 89.9040 -0.1492 88.7528 1.0020

 89.8599 89.8746 -0.0147 89.9663 -0.1064

 89.8895 89.8111 0.0784 89.6602 0.2293

 89.1458 89.9111 -0.7653 89.9426 -0.7968

 89.5372 89.0866 0.4506 89.8105 -0.2733

 91.0048 89.4656 1.5392 89.2152 1.7896

 91.9793 91.2070 0.7723 89.5821 2.3972

 91.4678 92.2389 -0.7711 90.9557 0.5121

 90.6801 91.4940 -0.8139 91.9201 -1.2400

 90.6920 90.5036 0.1884 91.3634 -0.6714

 90.5481 90.6078 -0.0597 90.6939 -0.1458

 91.8299 90.5740 1.2559 90.7829 1.0470

 91.7903 91.9117 -0.1214 90.6186 1.1717

 92.1859 91.9678 0.2181 91.8520 0.3339

 93.7943 92.1546 1.6397 91.6293 2.1650

 94.1347 93.9756 0.1591 92.2388 1.8959

 93.8757 94.3625 -0.4868 93.6779 0.1978

 94.6506 93.8294 0.8212 94.1099 0.5407

 96.5962 94.6599 1.9363 93.8742 2.7220

 97.3393 96.8663 0.4730 94.6164 2.7229

 98.5506 97.6280 0.9226 96.6173 1.9333

 97.7521 98.6596 -0.9075 97.2478 0.5043

 97.2149 97.8187 -0.6038 98.4909 -1.2760

 98.1670 97.0092 1.1578 97.6207 0.5463

 99.3445 98.2037 1.1408 97.4075 1.9370

 98.3789 99.5915 -1.2126 98.1655 0.2134

 97.8970 98.4207 -0.5237 99.3811 -1.4841

 98.8658 97.6743 1.1915 98.2918 0.5740

 98.3694 98.9188 -0.5494 97.9192 0.4502

 97.7678 98.4843 -0.7165 98.8709 -1.1031

 97.8455 97.6101 0.2354 98.4137 -0.5682

 98.0733 97.7911 0.2822 97.7994 0.2739

 98.1854 98.1292 0.0562 97.7886 0.3968

 98.8252 98.2223 0.6029 98.1432 0.6820

 98.0766 98.8807 -0.8041 98.1704 -0.0938

 93.8748 98.0993 -4.2245 98.7777 -4.9029

 96.2015 93.4128 2.7887 98.0216 -1.8201

 97.3443 95.8469 1.4974 93.9637 3.3806

 97.8650 97.9390 -0.0740 96.4820 1.3830

 97.7297 97.9614 -0.2317 97.1135 0.6162

 98.4887 97.7366 0.7521 98.0388 0.4499

 98.0442 98.5059 -0.4617 97.3021 0.7421

 97.4509 98.1178 -0.6669 98.6099 -1.1590

 99.1565 97.3099 1.8466 98.0282 1.1283

 98.9339 99.2296 -0.2957 97.5538 1.3801

 99.4738 99.1750 0.2988 99.1365 0.3373

 99.9801 99.4106 0.5695 98.8575 1.1226

 100.6456100.1018 0.5438 99.5492 1.0964

100.7463100.7430 0.0033 99.7912 0.9551

 99.9573100.8216 -0.8643100.7525 -0.7952

100.4478 99.8785 0.5693100.6632 -0.2154

100.1850100.3742 -0.1892 99.9783 0.2067

 99.1191100.2661 -1.1470100.5100 -1.3909

 99.4106 98.9781 0.4325100.1609 -0.7503

 99.2822 99.3000 -0.0178 99.2079 0.0743

 99.2366 99.3595 -0.1229 99.4044 -0.1678

 98.2790 99.2035 -0.9245 99.2741 -0.9951

 98.6319 98.2027 0.4292 99.2994 -0.6675

 98.1775 98.5318 -0.3543 98.1886 -0.0111

 97.9343 98.2324 -0.2981 98.7338 -0.7995

 97.0596 97.8385 -0.7789 98.1129 -1.0533

 96.6301 96.9775 -0.3474 98.0336 -1.4035

 96.5189 96.4886 0.0303 96.9784 -0.4595

 96.9999 96.4910 0.5089 96.7422 0.2577

 98.7637 97.0427 1.7210 96.5080 2.2557

 99.2699 98.9736 0.2963 97.0288 2.2411

 99.1705 99.5282 -0.3577 98.6867 0.4838

 98.7453 99.1523 -0.4070 99.1221 -0.3768

 98.5859 98.6740 -0.0881 99.1509 -0.5650

 99.0247 98.5195 0.5052 98.7007 0.3240

 98.9880 99.0567 -0.0687 98.7084 0.2796

 97.4909 99.0523 -1.5614 99.0643 -1.5734

 97.3483 -0.7667

 98.9848

 		 	 97.5723

 			

RUR_USD

24.5076 24.5046 0.0030 24.3359 0.1717

 24.6456 24.5071 0.1385 24.5037 0.1419

 24.8917 24.6467 0.2450 24.5077 0.3840

 24.6325 24.8928 -0.2603 24.6460 -0.0135

 24.6349 24.6309 0.0040 24.8931 -0.2582

 24.4386 24.6368 -0.1982 24.6331 -0.1945

 24.5952 24.4378 0.1574 24.6357 -0.0405

 24.4750 24.5958 -0.1208 24.4404 0.0346

 24.4764 24.4735 0.0029 24.5934 -0.1170

 24.4262 24.4766 -0.0504 24.4748 -0.0486

 24.4201 24.4261 -0.0060 24.4749 -0.0548

 24.4543 24.4199 0.0344 24.4270 0.0273

 24.5211 24.4544 0.0667 24.4194 0.1017

 24.6706 24.5211 0.1495 24.4541 0.2165

 24.5486 24.5202 0.0284 24.5767 -0.0281

 24.5299 24.5487 -0.0188 24.5204 0.0095

 24.4663 24.5296 -0.0633 24.5481 -0.0818

 24.4558 24.4660 -0.0102 24.5298 -0.0740

 24.1966 24.4560 -0.2594 24.4659 -0.2693

24.6466 24.6711 -0.0245 24.5208 0.1258

 24.7813 24.6462 0.1351 24.6706 0.1107

 24.6715 24.7825 -0.1110 24.6470 0.0245

 24.6537 24.6709 -0.0172 24.7818 -0.1281

 24.6655 24.6543 0.0112 24.6728 -0.0073

 24.6392 24.6657 -0.0265 24.6536 -0.0144

 24.5861 24.6387 -0.0526 24.6664 -0.0803

 24.5767 24.5859 -0.0092 24.6386 -0.0619

 24.5206 24.5768 -0.0562 24.5858 -0.0652

24.1159 24.1953 -0.0794 24.4559 -0.3400

 24.0023 24.1162 -0.1139 24.1965 -0.1942

 24.0103 24.0014 0.0089 24.1151 -0.1048

 24.0480 24.0098 0.0382 24.0020 0.0460

 24.0473 24.0476 -0.0003 24.0083 0.0390

 23.9349 24.0469 -0.1120 24.0471 -0.1122

 23.8353 23.9345 -0.0992 24.0465 -0.2112

 23.8587 23.8354 0.0233 23.9348 -0.0761

 23.8461 23.8589 -0.0128 23.8354 0.0107

 23.6924 23.8454 -0.1530 23.8586 -0.1662

 23.6490 23.6915 -0.0425 23.8453 -0.1963

 23.5126 23.6494 -0.1368 23.6916 -0.1790

 23.5325 23.5118 0.0207 23.6489 -0.1164

 23.5581 23.5325 0.0256 23.5124 0.0457

 23.6781 23.5577 0.1204 23.5312 0.1469

 23.7773 23.6782 0.0991 23.5576 0.2197

 23.8351 23.7774 0.0577 23.6771 0.1580

 23.7010 23.8354 -0.1344 23.7774 -0.0764

 23.6559 23.7008 -0.0449 23.8355 -0.1796

 23.5171 23.6566 -0.1395 23.7020 -0.1849

 23.5156 23.5165 -0.0009 23.6566 -0.1410

 23.5027 23.5156 -0.0129 23.5175 -0.0148

 23.5799 23.5022 0.0777 23.5145 0.0654

 23.6706 23.5799 0.0907 23.5022 0.1684

 23.6153 23.6707 -0.0554 23.5789 0.0364

 23.5982 23.6149 -0.0167 23.6705 -0.0723

 23.6028 23.5988 0.0040 23.6153 -0.0125

 23.5330 23.6030 -0.0700 23.5987 -0.0657

 23.5437 23.5325 0.0112 23.6035 -0.0598

 23.4628 23.5439 -0.0811 23.5327 -0.0699

 23.4825 23.4623 0.0202 23.5434 -0.0609

 23.5139 23.4827 0.0312 23.4628 0.0511

 23.4549 23.5138 -0.0589 23.4819 -0.0270

 23.4482 23.4544 -0.0062 23.5139 -0.0657

 23.3703 23.4485 -0.0782 23.4544 -0.0841

 23.3696 23.3699 -0.0003 23.4482 -0.0786

 23.4704 23.3697 0.1007 23.3705 0.0999

 23.4299 23.4706 -0.0407 23.3691 0.0608

 23.3448 23.4292 -0.0844 23.4703 -0.1255

 23.4391 23.3448 0.0943 23.4295 0.0096

 23.6007 23.4400 0.1607 23.3447 0.2560

 23.6037 23.6007 0.0030 23.4397 0.1640

 23.6471 23.6031 0.0440 23.6006 0.0465

 23.6588 23.6479 0.0109 23.6033 0.0555

 23.7633 23.6592 0.1041 23.6477 0.1156

 23.7456 23.7638 -0.0182 23.6601 0.0855

 23.7523 23.7453 0.0070 23.7635 -0.0112

 23.8833 23.7527 0.1306 23.7460 0.1373

 23.8328 23.8841 -0.0513 23.7524 0.0804

 23.7199 23.8321 -0.1122 23.8840 -0.1641

 23.8521 23.7199 0.1322 23.8330 0.0191

 23.8482 23.8533 -0.0051 23.7199 0.1283

 23.8391 23.8473 -0.0082 23.8529 -0.0138

 23.7238 23.8391 -0.1153 23.8481 -0.1243

 23.7462 23.7237 0.0225 23.8383 -0.0921

 23.6874 23.7467 -0.0593 23.7246 -0.0372

 23.5758 23.6868 -0.1110 23.7462 -0.1704

 23.6007 23.5752 0.0255 23.6873 -0.0866

 23.5483 23.6011 -0.0528 23.5749 -0.0266

 23.5513 23.5475 0.0038 23.6006 -0.0493

 23.5847 23.5512 0.0335 23.5479 0.0368

 23.6659 23.5848 0.0811 23.5504 0.1155

 23.7384 23.6660 0.0724 23.5847 0.1537

 23.7473 23.7385 0.0088 23.6656 0.0817

 23.6968 23.7474 -0.0506 23.7385 -0.0417

 23.8019 23.6970 0.1049 23.7477 0.0542

 23.8116 23.8028 0.0088 23.6974 0.1142

 23.6809 23.8112 -0.1303 23.8024 -0.1215

 23.5210 23.6804 -0.1594 23.8119 -0.2909

 23.6109 23.5211 0.0898 23.6806 -0.0697

 23.6748 23.6116 0.0632 23.5215 0.1533

 23.7795 23.6740 0.1055 23.6108 0.1687

 23.6402 23.7795 -0.1393 23.6739 -0.0337

 23.6586 23.6397 0.0189 23.7783 -0.1197

 23.5979 23.6596 -0.0617 23.6408 -0.0429

 23.6288 23.5975 0.0313 23.6590 -0.0302

 23.5908 23.6288 -0.0380 23.5987 -0.0079

 23.6223 23.5904 0.0319 23.6279 -0.0056

 23.6113 23.6225 -0.0112 23.5908 0.0205

 23.5245 23.6111 -0.0866 23.6219 -0.0974

 23.4573 23.5241 -0.0668 23.6115 -0.1542

 23.4068 23.4574 -0.0506 23.5243 -0.1175

 23.4689 23.4066 0.0623 23.4574 0.0115

 23.4147 23.4689 -0.0542 23.4066 0.0081

 23.3759 23.4139 -0.0380 23.4682 -0.0923

 23.5125 23.3759 0.1366 23.4142 0.0983

 23.5024 23.5133 -0.0109 23.3754 0.1270

 23.4147 23.5016 -0.0869 23.5128 -0.0981

 23.4363 23.4146 0.0217 23.5022 -0.0659

 23.3727 23.4371 -0.0644 23.4144 -0.0417

 23.2300 23.3721 -0.1421 23.4371 -0.2071

 23.1255 23.2294 -0.1039 23.3728 -0.2473

 23.1638 23.1255 0.0383 23.2293 -0.0655

 23.2250 23.1638 0.0612 23.1254 0.0996

 23.1937 23.2245 -0.0308 23.1632 0.0305

 23.2120 23.1931 0.0189 23.2239 -0.0119

 23.1960 23.2124 -0.0164 23.1929 0.0031

 23.3220 23.1960 0.1260 23.2121 0.1099

 23.3782 23.3226 0.0556 23.1965 0.1817

 23.3572 23.3780 -0.0208 23.3218 0.0354

 23.3610 23.3572 0.0038 23.3784 -0.0174

 23.3278 23.3616 -0.0338 23.3572 -0.0294

 23.4456 23.3278 0.1178 23.3619 0.0837

 23.4186 23.4462 -0.0276 23.3283 0.0903

 23.4697 23.4180 0.0517 23.4455 0.0242

 23.4039 23.4702 -0.0663 23.4187 -0.0148

 23.4354 23.4037 0.0317 23.4695 -0.0341

 23.5142 23.4358 0.0784 23.4047 0.1095

 23.5816 23.5144 0.0672 23.4353 0.1463

 23.8782 23.5815 0.2967 23.5145 0.3637

 24.5697 23.8795 0.6902 23.5813 0.9884

 24.3424 24.5721 -0.2297 23.8785 0.4639

 24.1559 24.3399 -0.1840 24.5707 -0.4148

 24.2901 24.1584 0.1317 24.3439 -0.0538

 24.5054 24.2928 0.2126 24.1580 0.3474

 24.4898 24.5048 -0.0150 24.2950 0.1948

 24.5703 24.4888 0.0815 24.5047 0.0656

 24.4316 24.5716 -0.1400 24.4885 -0.0569

 24.3013 24.4313 -0.1300 24.5711 -0.2698

 24.2699 24.3014 -0.0315 24.4334 -0.1635

 24.4389 24.2701 0.1688 24.3013 0.1376

 24.5803 24.4390 0.1413 24.2702 0.3101

 24.6019 24.5799 0.0220 24.4379 0.1640

 24.5474 24.6018 -0.0544 24.5794 -0.0320

 24.5769 24.5479 0.0290 24.6018 -0.0249

 24.6670 24.5777 0.0893 24.5486 0.1184

 24.7184 24.6672 0.0512 24.5780 0.1404

 24.8739 24.7182 0.1557 24.6673 0.2066

 25.2144 24.8747 0.3397 24.7182 0.4962

 25.4552 25.2157 0.2395 24.8741 0.5811

 25.2626 25.4556 -0.1930 25.2153 0.0473

 25.5814 25.2622 0.3192 25.4561 0.1253

 25.5761 25.5850 -0.0089 25.2642 0.3119

 25.7842 25.5752 0.2090 25.5838 0.2004

 25.7013 25.7853 -0.0840 25.5785 0.1228

 25.3938 25.7011 -0.3073 25.7832 -0.3894

 25.5245 25.3932 0.1313 25.7036 -0.1791

 25.4307 25.5265 -0.0958 25.3941 0.0366

 25.4863 25.4289 0.0574 25.5256 -0.0393

 25.2690 25.4863 -0.2173 25.4304 -0.1614

 24.9864 25.2680 -0.2816 25.4840 -0.4976

 25.0703 24.9858 0.0845 25.2696 -0.1993

 24.8982 25.0713 -0.1731 24.9857 -0.0875

 25.0221 24.8959 0.1262 25.0702 -0.0481

 25.2464 25.0226 0.2238 24.8967 0.3497

 25.6023 25.2468 0.3555 25.0197 0.5826

 25.8993 25.6029 0.2964 25.2468 0.6525

 26.1784 25.9003 0.2781 25.6015 0.5769

 26.1791 26.1801 -0.0010 25.9005 0.2786

 26.1629 26.1799 -0.0170 26.1806 -0.0177

 26.0695 26.1644 -0.0949 26.1823 -0.1128

 26.2080 26.0700 0.1380 26.1655 0.0425

 26.1111 26.2089 -0.0978 26.0718 0.0393

 26.0871 26.1099 -0.0228 26.2082 -0.1211

 26.1347 26.0874 0.0473 26.1111 0.0236

 26.3691 26.1352 0.2339 26.0864 0.2827

 26.2505 26.3696 -0.1191 26.1355 0.1150

 26.0561 26.2492 -0.1931 26.3686 -0.3125

 26.4417 26.0564 0.3853 26.2505 0.1912

 26.9215 26.4444 0.4771 26.0564 0.8651

 26.9793 26.9214 0.0579 26.4431 0.5362

 27.0596 26.9783 0.0813 26.9213 0.1383

 27.3507 27.0620 0.2887 26.9785 0.3722

 27.3018 27.3532 -0.0514 27.0623 0.2395

 27.0979 27.3009 -0.2030 27.3546 -0.2567

 27.0981 27.0981 -0.0000 27.3031 -0.2050

 26.9146 27.0995 -0.1849 27.0986 -0.1840

 26.9114 26.9132 -0.0018 27.1000 -0.1886

 27.0041 26.9114 0.0927 26.9145 0.0896

 26.9639 27.0041 -0.0402 26.9097 0.0542

 27.3399 26.9629 0.3770 27.0038 0.3361

 27.4704 27.3419 0.1285 26.9627 0.5077

 27.6704 27.4698 0.2006 27.3397 0.3307

 27.3386 27.6716 -0.3330 27.4715 -0.1329

 27.4374 27.3379 0.0995 27.6705 -0.2331

 27.4301 27.4398 -0.0097 27.3415 0.0886

 27.4413 27.4295 0.0118 27.4384 0.0029

 27.5715 27.4406 0.1309 27.4316 0.1399

 27.5665 27.5723 -0.0058 27.4392 0.1273

 27.6613 27.5660 0.0953 27.5718 0.0895

 27.3913 27.6621 -0.2708 27.5667 -0.1754

 27.3563 27.3902 -0.0339 27.6614 -0.3051

 27.4216 27.3573 0.0643 27.3923 0.0293

 27.6060 27.4216 0.1844 27.3561 0.2499

 27.9409 27.6057 0.3352 27.4221 0.5188

 28.0166 27.9418 0.0748 27.6043 0.4123

 27.9212 28.0164 -0.0952 27.9406 -0.0194

 27.9576 27.9219 0.0357 28.0175 -0.0599

 28.0916 27.9592 0.1324 27.9228 0.1688

 28.0043 28.0920 -0.0877 27.9601 0.0442

 28.0029 28.0033 -0.0004 28.0925 -0.0896

 27.8671 28.0036 -0.1365 28.0039 -0.1368

 27.9310 27.8667 0.0643 28.0030 -0.0720

 27.8077 27.9315 -0.1238 27.8680 -0.0603

 27.8160 27.8066 0.0094 27.9304 -0.1144

 27.6009 27.8162 -0.2153 27.8076 -0.2067

 27.5199 27.5998 -0.0799 27.8149 -0.2950

 27.6095 27.5200 0.0895 27.6012 0.0083

 27.7351 27.6097 0.1254 27.5189 0.2162

 28.2682 27.7345 0.5337 27.6092 0.6590

 28.3359 28.2700 0.0659 27.7337 0.6022

 28.6119 28.3349 0.2770 28.2676 0.3443

 28.6735 28.6145 0.0590 28.3371 0.3364

 29.0058 28.6745 0.3313 28.6132 0.3926

 29.2300 29.0079 0.2221 28.6777 0.5523

 29.3804 29.2308 0.1496 29.0071 0.3733

 29.3916 29.3813 0.0103 29.2324 0.1592

 30.5331 29.3926 1.1405 29.3815 1.1516

 30.9981 30.5390 0.4591 29.3943 1.6038

 31.2226 30.9966 0.2260 30.5351 0.6875

 31.5616 31.2248 0.3368 31.0008 0.5608

 32.2135 31.5667 0.6468 31.2238 0.9897

 32.5747 32.2170 0.3577 31.5701 1.0046

 32.9085 32.5755 0.3330 32.2185 0.6900

 33.4154 32.9113 0.5041 32.5777 0.8377

 32.6430 33.4192 -0.7762 32.9118 -0.2688

 32.7991 32.6398 0.1593 33.4209 -0.6218

 32.8926 32.8046 0.0880 32.6470 0.2456

 32.9018 32.8921 0.0097 32.8011 0.1007

 32.9979 32.8997 0.0982 32.8964 0.1015

 33.2155 32.9990 0.2165 32.8971 0.3184

 34.6847 33.2164 1.4683 32.9982 1.6865

 34.7236 34.6905 0.0331 33.2164 1.5072

 	 34.7195	 33.2160

 	 		 34.6872

 	 34.7258

RUR_EUR

35.8669 35.8636 0.0033 36.0642 -0.1973

 35.8298 35.8672 -0.0374 35.8623 -0.0325

 35.8490 35.8316 0.0174 35.8673 -0.0183

 35.9832 35.8508 0.1324 35.8318 0.1514

 35.9891 35.9818 0.0073 35.8482 0.1409

 36.0714 35.9893 0.0821 35.9838 0.0876

 36.1033 36.0697 0.0336 35.9888 0.1145

 36.1398 36.1016 0.0382 36.0701 0.0697

 36.1688 36.1389 0.0299 36.1038 0.0650

 36.2900 36.1675 0.1225 36.1388 0.1512

 36.3225 36.2881 0.0344 36.1688 0.1537

 36.2731 36.3216 -0.0485 36.2897 -0.0166

 36.3059 36.2728 0.0331 36.3223 -0.0164

 36.0980 36.3042 -0.2062 36.2719 -0.1739

 36.0259 36.1003 -0.0744 36.3060 -0.2801

 35.8585 36.0271 -0.1686 36.0986 -0.2401

 35.9316 35.8611 0.0705 36.0253 -0.0937

 35.8317 35.9332 -0.1015 35.8609 -0.0292

 35.9006 35.8343 0.0663 35.9315 -0.0309

 35.9732 35.9011 0.0721 35.8334 0.1398

 36.0309 35.9721 0.0588 35.8992 0.1317

 36.0663 36.0309 0.0354 35.9747 0.0916

 36.0992 36.0649 0.0343 36.0297 0.0695

 36.1036 36.0978 0.0058 36.0659 0.0377

 36.1399 36.1028 0.0371 36.0988 0.0411

 36.2248 36.1390 0.0858 36.1034 0.1214

 36.1921 36.2235 -0.0314 36.1396 0.0525

 36.3893 36.1923 0.1970 36.2249 0.1644

 36.4054 36.3863 0.0191 36.1917 0.2137

 36.5099 36.4045 0.1054 36.3885 0.1214

 36.5125 36.5081 0.0044 36.4061 0.1064

 36.5169 36.5104 0.0065 36.5076 0.0093

 36.4918 36.5162 -0.0244 36.5132 -0.0214

 36.6204 36.4910 0.1294 36.5157 0.1047

 36.6921 36.6189 0.0732 36.4922 0.1999

 36.6446 36.6913 -0.0467 36.6203 0.0243

 36.6538 36.6448 0.0090 36.6924 -0.0386

 36.8701 36.6521 0.2180 36.6431 0.2270

 36.8995 36.8671 0.0324 36.6535 0.2460

 37.1123 36.8996 0.2127 36.8708 0.2415

 37.0825 37.1088 -0.0263 36.8992 0.1833

 37.0216 37.0805 -0.0589 37.1100 -0.0884

 36.8739 37.0211 -0.1472 37.0831 -0.2092

 36.7526 36.8737 -0.1211 37.0193 -0.2667

 36.6632 36.7546 -0.0914 36.8750 -0.2118

 36.8527 36.6655 0.1872 36.7530 0.0997

 36.9103 36.8525 0.0578 36.6646 0.2457

 37.0794 36.9112 0.1682 36.8535 0.2259

 37.0676 37.0775 -0.0099 36.9109 0.1567

 37.0873 37.0656 0.0217 37.0771 0.0102

 36.9851 37.0857 -0.1006 37.0678 -0.0827

 36.8693 36.9847 -0.1154 37.0856 -0.2163

 36.9414 36.8707 0.0707 36.9859 -0.0445

 36.9760 36.9408 0.0352 36.8689 0.1071

 36.9714 36.9771 -0.0057 36.9426 0.0288

 37.0433 36.9723 0.0710 36.9768 0.0665

 37.0295 37.0416 -0.0121 36.9702 0.0593

 37.1299 37.0293 0.1006 37.0433 0.0866

 37.1070 37.1285 -0.0215 37.0296 0.0774

 37.0603 37.1066 -0.0463 37.1291 -0.0688

 37.1291 37.0605 0.0686 37.1075 0.0216

 37.1396 37.1274 0.0122 37.0591 0.0805

 37.2336 37.1399 0.0937 37.1297 0.1039

 37.2348 37.2327 0.0021 37.1400 0.0948

 37.1137 37.2340 -0.1203 37.2327 -0.1190

 37.1598 37.1146 0.0452 37.2350 -0.0752

 37.2606 37.1583 0.1023 37.1127 0.1479

 37.1463 37.2599 -0.1136 37.1601 -0.0138

 36.9422 37.1486 -0.2064 37.2619 -0.3197

 36.9469 36.9437 0.0032 37.1453 -0.1984

 36.8895 36.9464 -0.0569 36.9414 -0.0519

 36.8959 36.8922 0.0037 36.9485 -0.0526

 36.7666 36.8978 -0.1312 36.8912 -0.1246

 36.7701 36.7683 0.0018 36.8951 -0.1250

 36.7757 36.7706 0.0051 36.7674 0.0083

 36.6035 36.7761 -0.1726 36.7698 -0.1663

 36.6715 36.6068 0.0647 36.7772 -0.1057

 36.8346 36.6707 0.1639 36.6029 0.2317

 36.8730 36.8334 0.0396 36.6715 0.2015

 37.0339 36.8739 0.1600 36.8365 0.1974

 36.9053 37.0306 -0.1253 36.8716 0.0337

 36.9474 36.9050 0.0424 37.0325 -0.0851

 36.9705 36.9458 0.0247 36.9055 0.0650

 37.0731 36.9692 0.1039 36.9457 0.1274

 37.2238 37.0730 0.1508 36.9725 0.2513

 37.0932 37.2215 -0.1283 37.0720 0.0212

 37.1357 37.0940 0.0417 37.2238 -0.0881

 37.1239 37.1335 -0.0096 37.0922 0.0317

 37.0987 37.1231 -0.0244 37.1344 -0.0357

 36.8904 37.1001 -0.2097 37.1258 -0.2354

 36.7827 36.8925 -0.1098 37.0976 -0.3149

 36.8701 36.7842 0.0859 36.8908 -0.0207

 36.8699 36.8703 -0.0004 36.7829 0.0870

 36.7382 36.8724 -0.1342 36.8722 -0.1340

 36.7699 36.7404 0.0295 36.8703 -0.1004

 36.9233 36.7687 0.1546 36.7370 0.1863

 37.1420 36.9221 0.2199 36.7703 0.3717

 36.8070 37.1406 -0.3336 36.9247 -0.1177

 36.6841 36.8099 -0.1258 37.1412 -0.4571

 36.5681 36.6831 -0.1150 36.8056 -0.2375

 36.6943 36.5688 0.1255 36.6823 0.0120

 36.6827 36.6967 -0.0140 36.5725 0.1102

 36.7325 36.6846 0.0479 36.6941 0.0384

 36.7003 36.7325 -0.0322 36.6837 0.0166

 36.7427 36.6995 0.0432 36.7308 0.0119

 36.7138 36.7421 -0.0283 36.7010 0.0128

 36.7203 36.7138 0.0065 36.7420 -0.0217

 36.8276 36.7204 0.1072 36.7144 0.1132

 36.9077 36.8261 0.0816 36.7197 0.1880

 36.9710 36.9070 0.0640 36.8281 0.1429

 36.9823 36.9697 0.0126 36.9075 0.0748

 37.0561 36.9807 0.0754 36.9699 0.0862

 37.1069 37.0542 0.0527 36.9819 0.1250

 36.9381 37.1056 -0.1675 37.0557 -0.1176

 36.8823 36.9396 -0.0573 37.1070 -0.2247

 36.7822 36.8820 -0.0998 36.9373 -0.1551

 36.8747 36.7836 0.0911 36.8820 -0.0073

 36.8774 36.8756 0.0018 36.7842 0.0932

 36.9009 36.8784 0.0225 36.8746 0.0263

 36.8759 36.9012 -0.0253 36.8784 -0.0025

 36.8559 36.8753 -0.0194 36.8995 -0.0436

 36.8093 36.8560 -0.0467 36.8763 -0.0670

 36.7991 36.8097 -0.0106 36.8556 -0.0565

 36.8142 36.7996 0.0146 36.8097 0.0045

 36.9419 36.8144 0.1275 36.7992 0.1427

 36.7695 36.9409 -0.1714 36.8146 -0.0451

 36.6664 36.7715 -0.1051 36.9418 -0.2754

 36.7128 36.6669 0.0459 36.7694 -0.0566

 36.6768 36.7118 -0.0350 36.6651 0.0117

 36.7203 36.6794 0.0409 36.7151 0.0052

 36.5329 36.7206 -0.1877 36.6771 -0.1442

 36.5752 36.5348 0.0404 36.7195 -0.1443

 36.5353 36.5749 -0.0396 36.5336 0.0017

 36.4586 36.5362 -0.0776 36.5745 -0.1159

 36.3999 36.4612 -0.0613 36.5375 -0.1376

 36.4564 36.4004 0.0560 36.4574 -0.0010

 36.4737 36.4565 0.0172 36.4006 0.0731

 36.2996 36.4745 -0.1749 36.4570 -0.1574

 36.7808 36.3020 0.4788 36.4741 0.3067

 36.1850 36.7746 -0.5896 36.2988 -0.1138

 36.1034 36.1925 -0.0891 36.7809 -0.6775

 36.1922 36.1040 0.0882 36.1870 0.0052

 36.1406 36.1891 -0.0485 36.0974 0.0432

 36.1200 36.1475 -0.0275 36.2007 -0.0807

 35.9832 36.1207 -0.1375 36.1388 -0.1556

 36.0439 35.9841 0.0598 36.1191 -0.0752

 35.9975 36.0438 -0.0463 35.9842 0.0133

 36.1257 35.9988 0.1269 36.0438 0.0819

 36.0083 36.1253 -0.1170 35.9989 0.0094

 36.0888 36.0093 0.0795 36.1245 -0.0357

 36.1574 36.0878 0.0696 36.0092 0.1482

 36.2884 36.1558 0.1326 36.0872 0.2012

 36.2264 36.2877 -0.0613 36.1592 0.0672

 36.1248 36.2260 -0.1012 36.2870 -0.1622

 35.9455 36.1247 -0.1792 36.2261 -0.2806

 35.9279 35.9466 -0.0187 36.1236 -0.1957

 36.5937 35.9292 0.6645 35.9466 0.6471

 36.3908 36.5877 -0.1969 35.9286 0.4622

 36.2670 36.3949 -0.1279 36.5953 -0.3283

 36.0877 36.2657 -0.1780 36.3905 -0.3028

 36.1851 36.0841 0.1010 36.2598 -0.0747

 35.9922 36.1866 -0.1944 36.0925 -0.1003

 36.0821 35.9965 0.0856 36.1851 -0.1030

 36.4299 36.0824 0.3475 35.9938 0.4361

 36.2958 36.4257 -0.1299 36.0804 0.2154

 36.4066 36.2988 0.1078 36.4325 -0.0259

 36.2568 36.4029 -0.1461 36.2940 -0.0372

 36.6274 36.2557 0.3717 36.4033 0.2241

 36.8974 36.6239 0.2735 36.2596 0.6378

 36.7957 36.8938 -0.0981 36.6254 0.1703

 36.7099 36.7967 -0.0868 36.8996 -0.1897

 36.5948 36.7060 -0.1112 36.7911 -0.1963

 36.3700 36.5939 -0.2239 36.7085 -0.3385

 36.1530 36.3740 -0.2210 36.5967 -0.4437

 35.8757 36.1569 -0.2812 36.3703 -0.4946

 35.5476 35.8811 -0.3335 36.1539 -0.6063

 35.5512 35.5547 -0.0035 35.8777 -0.3265

 35.5632 35.5546 0.0086 35.5491 0.0141

 35.6839 35.5673 0.1166 35.5534 0.1305

 35.5171 35.6857 -0.1686 35.5658 -0.0487

 35.6051 35.5189 0.0862 35.6828 -0.0777

 35.6063 35.6034 0.0029 35.5172 0.0891

 35.5798 35.6058 -0.0260 35.6038 -0.0240

 35.3188 35.5814 -0.2626 35.6086 -0.2898

 35.3988 35.3210 0.0778 35.5781 -0.1793

 35.1731 35.3980 -0.2249 35.3193 -0.1462

 35.0881 35.1771 -0.0890 35.3990 -0.3109

 34.6345 35.0913 -0.4568 35.1758 -0.5413

 34.5767 34.6400 -0.0633 35.0862 -0.5095

 34.4144 34.5800 -0.1656 34.6374 -0.2230

 34.0844 34.4192 -0.3348 34.5766 -0.4922

 34.1627 34.0930 0.0697 34.4191 -0.2564

 34.4306 34.1631 0.2675 34.0833 0.3473

 34.4092 34.4305 -0.0213 34.1645 0.2447

 34.5449 34.4123 0.1326 34.4336 0.1113

 34.6484 34.5413 0.1071 34.4072 0.2412

 34.5112 34.6446 -0.1334 34.5425 -0.0313

 34.5677 34.5124 0.0553 34.6497 -0.0820

 34.8064 34.5653 0.2411 34.5095 0.2969

 34.6319 34.8032 -0.1713 34.5671 0.0648

 34.3777 34.6350 -0.2573 34.8082 -0.4305

 34.7938 34.3791 0.4147 34.6307 0.1631

 34.5766 34.7874 -0.2108 34.3754 0.2012

 34.6250 34.5819 0.0431 34.7966 -0.1716

 34.6693 34.6251 0.0442 34.5785 0.0908

 34.4975 34.6656 -0.1681 34.6196 -0.1221

 34.5215 34.5014 0.0201 34.6735 -0.1520

 34.9141 34.5206 0.3935 34.4958 0.4183

 35.2416 34.9098 0.3318 34.5213 0.7203

 35.4565 35.2393 0.2172 34.9161 0.5404

 35.3629 35.4520 -0.0891 35.2407 0.1222

 35.7166 35.3586 0.3580 35.4525 0.2641

 35.4095 35.7083 -0.2988 35.3609 0.0486

 35.3037 35.4113 -0.1076 35.7153 -0.4116

 35.4404 35.3043 0.1361 35.4112 0.0292

 35.3887 35.4367 -0.0480 35.2993 0.0894

 35.8786 35.3928 0.4858 35.4452 0.4334

 36.0107 35.8733 0.1374 35.3884 0.6223

 36.0061 36.0080 -0.0019 35.8769 0.1292

 36.1715 36.0045 0.1670 36.0120 0.1595

 36.6678 36.1641 0.5037 36.0005 0.6673

 36.9008 36.6607 0.2401 36.1721 0.7287

 37.4292 36.8973 0.5319 36.6681 0.7611

 37.8188 37.4192 0.3996 36.8990 0.9198

 38.7040 37.8082 0.8958 37.4245 1.2795

 39.7798 38.6890 1.0908 37.8182 1.9616

 39.5475 39.7602 -0.2127 38.6989 0.8486

 39.7253 39.5423 0.1830 39.7777 -0.0524

 39.6674 39.7097 -0.0423 39.5393 0.1281

 39.9565 39.6584 0.2981 39.7169 0.2396

 40.1859 39.9546 0.2313 39.6736 0.5123

 40.7880 40.1817 0.6063 39.9529 0.8351

 41.6294 40.7802 0.8492 40.1874 1.4420

 41.4411 41.6156 -0.1745 40.7846 0.6565

 41.4275 41.4382 -0.0107 41.6282 -0.2007

 41.1311 41.4180 -0.2869 41.4354 -0.3043

 41.5282 41.1271 0.4011 41.4206 0.1076

 41.4105 41.5255 -0.1150 41.1360 0.2745

 41.9706 41.4133 0.5573 41.5269 0.4437

 42.3833 41.9653 0.4180 41.4138 0.9695

 43.0800 42.3750 0.7050 41.9651 1.1149

 43.7815 43.0705 0.7110 42.3865 1.3950

 43.3331 43.7658 -0.4327 43.0733 0.2598

 42.1454 43.3310 -1.1856 43.7795 -1.6341

 42.6454 42.1493 0.4961 43.3269 -0.6815

 42.3986 42.6348 -0.2362 42.1402 0.2584

 42.4861 42.4112 0.0749 42.6523 -0.1662

 43.7123 42.4947 1.2176 42.4092 1.3031

 44.0305 43.6941 0.3364 42.4763 1.5542

 45.3398 44.0287 1.3111 43.7178 1.6220

 45.6636 45.3182 0.3454 44.0284 1.6352

 	 45.6461 	 44.0178

 			 45.3414

 			 45.6499

RUR_GBR

48.3020 48.1174 0.1846 47.6670 0.6350

 48.0688 48.3034 -0.2346 48.1218 -0.0530

 48.2725 48.0550 0.2175 48.2878 -0.0153

 48.2304 48.2600 -0.0296 48.0600 0.1704

 48.1588 48.2330 -0.0742 48.2770 -0.1182

 48.3396 48.1575 0.1821 48.2200 0.1196

 48.6493 48.3377 0.3116 48.1501 0.4992

 48.6122 48.6540 -0.0418 48.3493 0.2629

 48.6982 48.6094 0.0888 48.6409 0.0573

 48.5520 48.6874 -0.1354 48.6026 -0.0506

 48.5765 48.5465 0.0300 48.6975 -0.1210

 48.1114 48.5749 -0.4635 48.5488 -0.4374

 48.4047 48.1109 0.2938 48.5708 -0.1661

 48.4284 48.4076 0.0208 48.1147 0.3137

 48.3073 48.4404 -0.1331 48.4118 -0.1045

 48.1179 48.3079 -0.1900 48.4325 -0.3146

 47.9861 48.1105 -0.1244 48.2977 -0.3116

 48.1462 47.9876 0.1586 48.1341 0.0121

 48.2926 48.1539 0.1387 47.9855 0.3071

 48.4875 48.3006 0.1869 48.1506 0.3369

 48.4518 48.4873 -0.0355 48.2922 0.1596

 48.1556 48.4453 -0.2897 48.4851 -0.3295

 47.8765 48.1462 -0.2697 48.4496 -0.5731

 47.8575 47.8716 -0.0141 48.1508 -0.2933

 47.7278 47.8650 -0.1372 47.8821 -0.1543

 48.0494 47.7396 0.3098 47.8636 0.1858

 48.0752 48.0567 0.0185 47.7309 0.3443

 48.1319 48.0796 0.0523 48.0575 0.0744

 47.8098 48.1266 -0.3168 48.0763 -0.2665

 47.7070 47.8014 -0.0944 48.1257 -0.4187

 47.6749 47.7039 -0.0290 47.8140 -0.1391

 47.7810 47.6816 0.0994 47.7061 0.0749

 47.6088 47.7902 -0.1814 47.6821 -0.0733

 47.6687 47.6108 0.0579 47.7792 -0.1105

 48.0305 47.6666 0.3639 47.6137 0.4168

 47.8820 48.0350 -0.1530 47.6733 0.2087

 48.0117 47.8836 0.1281 48.0335 -0.0218

 48.1690 48.0019 0.1671 47.8686 0.3004

 48.0761 48.1671 -0.0910 48.0142 0.0619

 47.3379 48.0754 -0.7375 48.1699 -0.8320

 47.1921 47.3272 -0.1351 48.0604 -0.8683

 47.3400 47.1893 0.1507 47.3423 -0.0023

 46.9442 47.3610 -0.4168 47.2089 -0.2647

 47.1551 46.9597 0.1954 47.3502 -0.1951

 47.2126 47.1545 0.0581 46.9390 0.2736

 47.2337 47.2206 0.0131 47.1786 0.0551

 47.3922 47.2360 0.1562 47.2186 0.1736

 47.1824 47.3877 -0.2053 47.2221 -0.0397

 46.9912 47.1799 -0.1887 47.4022 -0.4110

 46.7492 46.9853 -0.2361 47.1738 -0.4246

 46.6623 46.7498 -0.0875 46.9924 -0.3301

 46.8418 46.6701 0.1717 46.7577 0.0841

 46.9212 46.8523 0.0689 46.6653 0.2559

 47.0784 46.9287 0.1497 46.8510 0.2274

 46.9082 47.0765 -0.1683 46.9209 -0.0127

 46.7271 46.9022 -0.1751 47.0789 -0.3518

 46.2963 46.7203 -0.4240 46.9069 -0.6106

 46.3296 46.2949 0.0347 46.7250 -0.3954

 46.3662 46.3367 0.0295 46.3026 0.0636

 46.4023 46.3808 0.0215 46.3372 0.0651

 46.2108 46.4098 -0.1990 46.3747 -0.1639

 46.1507 46.2082 -0.0575 46.4016 -0.2509

 46.0675 46.1484 -0.0809 46.2201 -0.1526

 46.6224 46.0711 0.5513 46.1541 0.4683

 46.8633 46.6305 0.2328 46.0713 0.7920

 46.3701 46.8690 -0.4989 46.6228 -0.2527

 46.4585 46.3553 0.1032 46.8558 -0.3973

 46.3813 46.4416 -0.0603 46.3567 0.0246

 46.5831 46.3890 0.1941 46.4730 0.1101

 46.8274 46.5911 0.2363 46.3755 0.4519

 47.0577 46.8295 0.2282 46.5735 0.4842

 46.5227 47.0558 -0.5331 46.8366 -0.3139

 46.9777 46.5102 0.4675 47.0461 -0.0684

 46.8572 46.9688 -0.1116 46.5171 0.3401

 46.7208 46.8666 -0.1458 46.9838 -0.2630

 46.6274 46.7183 -0.0909 46.8509 -0.2235

 46.4477 46.6212 -0.1735 46.7064 -0.2587

 46.3511 46.4522 -0.1011 46.6493 -0.2982

 46.3756 46.3551 0.0205 46.4399 -0.0643

 46.4563 46.3818 0.0745 46.3585 0.0978

 46.4314 46.4626 -0.0312 46.3831 0.0483

 46.4607 46.4326 0.0281 46.4580 0.0027

 46.4262 46.4583 -0.0321 46.4327 -0.0065

 46.5671 46.4252 0.1419 46.4626 0.1045

 46.4797 46.5676 -0.0879 46.4260 0.0537

 46.7341 46.4798 0.2543 46.5653 0.1688

 46.6610 46.7324 -0.0714 46.4778 0.1832

 46.5868 46.6607 -0.0739 46.7329 -0.1461

 46.6128 46.5814 0.0314 46.6585 -0.0457

 46.6715 46.6099 0.0616 46.5804 0.0911

 46.9617 46.6751 0.2866 46.6199 0.3418

 46.8226 46.9642 -0.1416 46.6653 0.1573

 46.5381 46.8204 -0.2823 46.9611 -0.4230

 46.5803 46.5278 0.0525 46.8170 -0.2367

 46.4850 46.5781 -0.0931 46.5367 -0.0517

 46.3601 46.4943 -0.1342 46.5901 -0.2300

 46.2987 46.3635 -0.0648 46.4802 -0.1815

 46.3647 46.2997 0.0650 46.3626 0.0021

 46.2700 46.3699 -0.0999 46.3103 -0.0403

 46.4366 46.2735 0.1631 46.3662 0.0704

 46.5192 46.4368 0.0824 46.2707 0.2485

 46.1650 46.5212 -0.3562 46.4403 -0.2753

 46.2542 46.1607 0.0935 46.5188 -0.2646

 46.6031 46.2488 0.3543 46.1581 0.4450

 46.5140 46.6127 -0.0987 46.2649 0.2491

 46.4367 46.5185 -0.0818 46.6032 -0.1665

 46.5143 46.4256 0.0887 46.4995 0.0148

 46.4374 46.5103 -0.0729 46.4427 -0.0053

 46.6120 46.4407 0.1713 46.5183 0.0937

 46.6615 46.6123 0.0492 46.4276 0.2339

 46.8017 46.6626 0.1391 46.6141 0.1876

 46.7194 46.7996 -0.0802 46.6612 0.0582

 46.5508 46.7147 -0.1639 46.7953 -0.2445

 46.6535 46.5452 0.1083 46.7187 -0.0652

 46.3820 46.6532 -0.2712 46.5467 -0.1647

 46.1129 46.3865 -0.2736 46.6587 -0.5458

 46.3242 46.1114 0.2128 46.3781 -0.0539

 46.2405 46.3298 -0.0893 46.1182 0.1223

 46.1255 46.2523 -0.1268 46.3396 -0.2141

 46.2718 46.1244 0.1474 46.2349 0.0369

 46.5407 46.2706 0.2701 46.1285 0.4122

 46.4779 46.5470 -0.0691 46.2841 0.1938

 46.2158 46.4765 -0.2607 46.5332 -0.3174

 46.2499 46.2047 0.0452 46.4704 -0.2205

 46.4685 46.2462 0.2223 46.2171 0.2514

 46.4481 46.4776 -0.0295 46.2557 0.1924

 46.5928 46.4524 0.1404 46.4647 0.1281

 46.4178 46.5874 -0.1696 46.4418 -0.0240

 46.3809 46.4135 -0.0326 46.5965 -0.2156

 46.5623 46.3771 0.1852 46.4158 0.1465

 46.4504 46.5650 -0.1146 46.3773 0.0731

 46.4040 46.4543 -0.0503 46.5676 -0.1636

 46.3738 46.3996 -0.0258 46.4418 -0.0680

 46.1314 46.3730 -0.2416 46.4077 -0.2763

 45.8842 46.1332 -0.2490 46.3791 -0.4949

 46.0102 45.8840 0.1262 46.1275 -0.1173

 45.9582 46.0171 -0.0589 45.8926 0.0656

 46.0205 45.9689 0.0516 46.0206 -0.0001

 47.0755 46.0222 1.0533 45.9578 1.1177

 46.3236 47.0805 -0.7569 46.0235 0.3001

 45.9469 46.3208 -0.3739 47.0819 -1.1350

 45.3666 45.9155 -0.5489 46.2946 -0.9280

 45.4796 45.3619 0.1177 45.9499 -0.4703

 45.6906 45.5027 0.1879 45.3945 0.2961

 45.6074 45.7137 -0.1063 45.4670 0.1404

 45.4770 45.6153 -0.1383 45.7119 -0.2349

 45.3997 45.4687 -0.0690 45.6049 -0.2052

 45.4235 45.3972 0.0263 45.4907 -0.0672

 45.1069 45.4283 -0.3214 45.4031 -0.2962

 45.2720 45.1096 0.1624 45.4215 -0.1495

 45.3585 45.2732 0.0853 45.1084 0.2501

 45.0936 45.3669 -0.2733 45.2815 -0.1879

 44.9364 45.0940 -0.1576 45.3616 -0.4252

 44.5683 44.9297 -0.3614 45.0858 -0.5175

 44.1520 44.5710 -0.4190 44.9503 -0.7983

 44.0517 44.1579 -0.1062 44.5728 -0.5211

 44.9548 44.0626 0.8922 44.1586 0.7962

 44.7884 44.9771 -0.1887 44.0722 0.7162

 44.9826 44.7995 0.1831 44.9642 0.0184

 44.9823 44.9624 0.0199 44.7743 0.2080

 45.1469 44.9700 0.1769 44.9817 0.1652

 45.1636 45.1460 0.0176 44.9905 0.1731

 45.4425 45.1604 0.2821 45.1206 0.3219

 45.8155 45.4399 0.3756 45.1655 0.6500

 45.8701 45.8146 0.0555 45.4349 0.4352

 46.2101 45.8638 0.3463 45.8102 0.3999

 45.8218 46.1975 -0.3757 45.8533 -0.0315

 46.4192 45.8119 0.6073 46.2050 0.2142

 46.3023 46.4122 -0.1099 45.8095 0.4928

 46.5004 46.3063 0.1941 46.4144 0.0860

 46.3779 46.4934 -0.1155 46.2960 0.0819

 45.9055 46.3694 -0.4639 46.4823 -0.5768

 45.6455 45.8998 -0.2543 46.3896 -0.7441

 45.6591 45.6425 0.0166 45.8898 -0.2307

 45.7174 45.6729 0.0445 45.6629 0.0545

 46.0164 45.7332 0.2832 45.6666 0.3498

 45.9024 46.0227 -0.1203 45.7200 0.1824

 45.9578 45.9006 0.0572 46.0240 -0.0662

 45.0325 45.9492 -0.9167 45.9009 -0.8684

 44.2653 45.0247 -0.7594 45.9560 -1.6907

 44.7779 44.2599 0.5180 45.0341 -0.2562

 45.5742 44.8017 0.7725 44.2778 1.2964

 45.6704 45.6164 0.0540 44.8133 0.8571

 45.4814 45.6738 -0.1924 45.5649 -0.0835

 45.5945 45.4508 0.1437 45.6598 -0.0653

 45.5278 45.5775 -0.0497 45.4898 0.0380

 45.2312 45.5306 -0.2994 45.5918 -0.3606

 43.8982 45.2301 -1.3319 45.5096 -1.6114

 43.9628 43.8897 0.0731 45.2271 -1.2643

 42.9409 43.9693 -1.0284 43.9117 -0.9708

 42.1775 42.9745 -0.7970 43.9951 -1.8176

 42.5990 42.1945 0.4045 42.9591 -0.3601

 43.3214 42.6245 0.6969 42.1961 1.1253

 43.7851 43.3647 0.4204 42.6654 1.1197

 42.6408 43.7927 -1.1519 43.3131 -0.6723

 42.9587 42.6091 0.3496 43.7800 -0.8213

 42.3154 42.9331 -0.6177 42.6409 -0.3255

 42.4250 42.3327 0.0923 42.9741 -0.5491

 42.6940 42.4377 0.2563 42.3122 0.3818

 42.4061 42.7061 -0.3000 42.4141 -0.0080

 41.1791 42.4142 -1.2351 42.7318 -1.5527

 40.5951 41.1628 -0.5677 42.3850 -1.7899

 40.4757 40.5917 -0.1160 41.1981 -0.7224

 41.2549 40.5103 0.7446 40.6277 0.6272

 41.1098 41.2967 -0.1869 40.4993 0.6105

 41.0098 41.1244 -0.1146 41.2632 -0.2534

 40.8784 40.9915 -0.1131 41.1182 -0.2398

 41.2236 40.8666 0.3570 41.0142 0.2094

 41.4513 41.2305 0.2208 40.8925 0.5588

 42.0165 41.4584 0.5581 41.2081 0.8084

 42.1909 42.0138 0.1771 41.4480 0.7429

 42.6292 42.1808 0.4484 42.0072 0.6220

 42.4255 42.6135 -0.1880 42.1803 0.2452

 41.4562 42.4102 -0.9540 42.6100 -1.1538

 41.4434 41.4360 0.0074 42.4119 -0.9685

 40.9411 41.4384 -0.4973 41.4420 -0.5009

 41.3536 40.9666 0.3870 41.4686 -0.1150

 41.9616 41.3734 0.5882 40.9441 1.0175

 41.3911 41.9788 -0.5877 41.3622 0.0289

 41.3715 41.3880 -0.0165 41.9831 -0.6116

 41.7792 41.3472 0.4320 41.3666 0.4126

 41.4223 41.7845 -0.3622 41.3910 0.0313

 41.8186 41.4322 0.3864 41.7837 0.0349

 42.1383 41.8102 0.3281 41.3935 0.7448

 42.9310 42.1423 0.7887 41.8342 1.0968

 42.5269 42.9327 -0.4058 42.1386 0.3883

 41.8578 42.5107 -0.6529 42.9045 -1.0467

 42.2638 41.8272 0.4366 42.5155 -0.2517

 42.0873 42.2602 -0.1729 41.8481 0.2392

 42.1940 42.1116 0.0824 42.2846 -0.0906

 42.3020 42.1965 0.1055 42.0656 0.2364

 42.8300 42.2997 0.5303 42.1959 0.6341

 43.0441 42.8338 0.2103 42.3219 0.7222

 42.6163 43.0416 -0.4253 42.8145 -0.1982

 42.4914 42.5989 -0.1075 43.0353 -0.5439

 46.2943 42.4746 3.8197 42.6015 3.6928

 46.4972 46.3223 0.1749 42.4999 3.9973

 45.8160 46.5169 -0.7009 46.2929 -0.4769

 46.3577 45.7187 0.6390 46.4018 -0.0441

 47.0897 46.2833 0.8064 45.7617 1.3280

 48.2953 47.1083 1.1870 46.4058 1.8895

 48.5335 48.3025 0.2310 46.9973 1.5362

 46.9854 48.5085 -1.5231 48.2592 -1.2738

 44.8580 46.9330 -2.0750 48.5152 -3.6572

 45.4563 44.8145 0.6418 46.9543 -1.4980

 44.9971 45.4903 -0.4932 44.8829 0.1142

 45.1380 45.0784 0.0596 45.5026 -0.3646

 46.8240 45.1625 1.6615 44.9972 1.8268

 47.3852 46.8342 0.5510 45.1588 2.2264

 49.0234 47.3966 1.6268 46.8844 2.1390

 50.3631 48.9884 1.3747 47.3254 3.0377

 	 50.3281 47.3584

 			 48.9875

 		 50.2706

RUR_CHF

35.8669 35.8636 0.0033 36.0642 -0.1973

 35.8298 35.8672 -0.0374 35.8623 -0.0325

 35.8490 35.8316 0.0174 35.8673 -0.0183

 35.9832 35.8508 0.1324 35.8318 0.1514

 35.9891 35.9818 0.0073 35.8482 0.1409

 36.0714 35.9893 0.0821 35.9838 0.0876

 36.1033 36.0697 0.0336 35.9888 0.1145

 36.1398 36.1016 0.0382 36.0701 0.0697

 36.1688 36.1389 0.0299 36.1038 0.0650

 36.2900 36.1675 0.1225 36.1388 0.1512

 36.3225 36.2881 0.0344 36.1688 0.1537

 36.2731 36.3216 -0.0485 36.2897 -0.0166

 36.3059 36.2728 0.0331 36.3223 -0.0164

 36.0980 36.3042 -0.2062 36.2719 -0.1739

 36.0259 36.1003 -0.0744 36.3060 -0.2801

 35.8585 36.0271 -0.1686 36.0986 -0.2401

 35.9316 35.8611 0.0705 36.0253 -0.0937

 35.8317 35.9332 -0.1015 35.8609 -0.0292

 35.9006 35.8343 0.0663 35.9315 -0.0309

 35.9732 35.9011 0.0721 35.8334 0.1398

 36.0309 35.9721 0.0588 35.8992 0.1317

 36.0663 36.0309 0.0354 35.9747 0.0916

 36.0992 36.0649 0.0343 36.0297 0.0695

 36.1036 36.0978 0.0058 36.0659 0.0377

 36.1399 36.1028 0.0371 36.0988 0.0411

 36.2248 36.1390 0.0858 36.1034 0.1214

 36.1921 36.2235 -0.0314 36.1396 0.0525

 36.3893 36.1923 0.1970 36.2249 0.1644

 36.4054 36.3863 0.0191 36.1917 0.2137

 36.5099 36.4045 0.1054 36.3885 0.1214

 36.5125 36.5081 0.0044 36.4061 0.1064

 36.5169 36.5104 0.0065 36.5076 0.0093

 36.4918 36.5162 -0.0244 36.5132 -0.0214

 36.6204 36.4910 0.1294 36.5157 0.1047

 36.6921 36.6189 0.0732 36.4922 0.1999

 36.6446 36.6913 -0.0467 36.6203 0.0243

 36.6538 36.6448 0.0090 36.6924 -0.0386

 36.8701 36.6521 0.2180 36.6431 0.2270

 36.8995 36.8671 0.0324 36.6535 0.2460

 37.1123 36.8996 0.2127 36.8708 0.2415

 37.0825 37.1088 -0.0263 36.8992 0.1833

 37.0216 37.0805 -0.0589 37.1100 -0.0884

 36.8739 37.0211 -0.1472 37.0831 -0.2092

 36.7526 36.8737 -0.1211 37.0193 -0.2667

 36.6632 36.7546 -0.0914 36.8750 -0.2118

 36.8527 36.6655 0.1872 36.7530 0.0997

 36.9103 36.8525 0.0578 36.6646 0.2457

 37.0794 36.9112 0.1682 36.8535 0.2259

 37.0676 37.0775 -0.0099 36.9109 0.1567

 37.0873 37.0656 0.0217 37.0771 0.0102

 36.9851 37.0857 -0.1006 37.0678 -0.0827

 36.8693 36.9847 -0.1154 37.0856 -0.2163

 36.9414 36.8707 0.0707 36.9859 -0.0445

 36.9760 36.9408 0.0352 36.8689 0.1071

 36.9714 36.9771 -0.0057 36.9426 0.0288

 37.0433 36.9723 0.0710 36.9768 0.0665

 37.0295 37.0416 -0.0121 36.9702 0.0593

 37.1299 37.0293 0.1006 37.0433 0.0866

 37.1070 37.1285 -0.0215 37.0296 0.0774

 37.0603 37.1066 -0.0463 37.1291 -0.0688

 37.1291 37.0605 0.0686 37.1075 0.0216

 37.1396 37.1274 0.0122 37.0591 0.0805

 37.2336 37.1399 0.0937 37.1297 0.1039

 37.2348 37.2327 0.0021 37.1400 0.0948

 37.1137 37.2340 -0.1203 37.2327 -0.1190

 37.1598 37.1146 0.0452 37.2350 -0.0752

 37.2606 37.1583 0.1023 37.1127 0.1479

 37.1463 37.2599 -0.1136 37.1601 -0.0138

 36.9422 37.1486 -0.2064 37.2619 -0.3197

 36.9469 36.9437 0.0032 37.1453 -0.1984

 36.8895 36.9464 -0.0569 36.9414 -0.0519

 36.8959 36.8922 0.0037 36.9485 -0.0526

 36.7666 36.8978 -0.1312 36.8912 -0.1246

 36.7701 36.7683 0.0018 36.8951 -0.1250

 36.7757 36.7706 0.0051 36.7674 0.0083

 36.6035 36.7761 -0.1726 36.7698 -0.1663

 36.6715 36.6068 0.0647 36.7772 -0.1057

 36.8346 36.6707 0.1639 36.6029 0.2317

 36.8730 36.8334 0.0396 36.6715 0.2015

 37.0339 36.8739 0.1600 36.8365 0.1974

 36.9053 37.0306 -0.1253 36.8716 0.0337

 36.9474 36.9050 0.0424 37.0325 -0.0851

 36.9705 36.9458 0.0247 36.9055 0.0650

 37.0731 36.9692 0.1039 36.9457 0.1274

 37.2238 37.0730 0.1508 36.9725 0.2513

 37.0932 37.2215 -0.1283 37.0720 0.0212

 37.1357 37.0940 0.0417 37.2238 -0.0881

 37.1239 37.1335 -0.0096 37.0922 0.0317

 37.0987 37.1231 -0.0244 37.1344 -0.0357

 36.8904 37.1001 -0.2097 37.1258 -0.2354

 36.7827 36.8925 -0.1098 37.0976 -0.3149

 36.8701 36.7842 0.0859 36.8908 -0.0207

 36.8699 36.8703 -0.0004 36.7829 0.0870

 36.7382 36.8724 -0.1342 36.8722 -0.1340

 36.7699 36.7404 0.0295 36.8703 -0.1004

 36.9233 36.7687 0.1546 36.7370 0.1863

 37.1420 36.9221 0.2199 36.7703 0.3717

 36.8070 37.1406 -0.3336 36.9247 -0.1177

 36.6841 36.8099 -0.1258 37.1412 -0.4571

 36.5681 36.6831 -0.1150 36.8056 -0.2375

 36.6943 36.5688 0.1255 36.6823 0.0120

 36.6827 36.6967 -0.0140 36.5725 0.1102

 36.7325 36.6846 0.0479 36.6941 0.0384

 36.7003 36.7325 -0.0322 36.6837 0.0166

 36.7427 36.6995 0.0432 36.7308 0.0119

 36.7138 36.7421 -0.0283 36.7010 0.0128

 36.7203 36.7138 0.0065 36.7420 -0.0217

 36.8276 36.7204 0.1072 36.7144 0.1132

 36.9077 36.8261 0.0816 36.7197 0.1880

 36.9710 36.9070 0.0640 36.8281 0.1429

 36.9823 36.9697 0.0126 36.9075 0.0748

 37.0561 36.9807 0.0754 36.9699 0.0862

 37.1069 37.0542 0.0527 36.9819 0.1250

 36.9381 37.1056 -0.1675 37.0557 -0.1176

 36.8823 36.9396 -0.0573 37.1070 -0.2247

 36.7822 36.8820 -0.0998 36.9373 -0.1551

 36.8747 36.7836 0.0911 36.8820 -0.0073

 36.8774 36.8756 0.0018 36.7842 0.0932

 36.9009 36.8784 0.0225 36.8746 0.0263

 36.8759 36.9012 -0.0253 36.8784 -0.0025

 36.8559 36.8753 -0.0194 36.8995 -0.0436

 36.8093 36.8560 -0.0467 36.8763 -0.0670

 36.7991 36.8097 -0.0106 36.8556 -0.0565

 36.8142 36.7996 0.0146 36.8097 0.0045

 36.9419 36.8144 0.1275 36.7992 0.1427

 36.7695 36.9409 -0.1714 36.8146 -0.0451

 36.6664 36.7715 -0.1051 36.9418 -0.2754

 36.7128 36.6669 0.0459 36.7694 -0.0566

 36.6768 36.7118 -0.0350 36.6651 0.0117

 36.7203 36.6794 0.0409 36.7151 0.0052

 36.5329 36.7206 -0.1877 36.6771 -0.1442

 36.5752 36.5348 0.0404 36.7195 -0.1443

 36.5353 36.5749 -0.0396 36.5336 0.0017

 36.4586 36.5362 -0.0776 36.5745 -0.1159

 36.3999 36.4612 -0.0613 36.5375 -0.1376

 36.4564 36.4004 0.0560 36.4574 -0.0010

 36.4737 36.4565 0.0172 36.4006 0.0731

 36.2996 36.4745 -0.1749 36.4570 -0.1574

 36.7808 36.3020 0.4788 36.4741 0.3067

 36.1850 36.7746 -0.5896 36.2988 -0.1138

 36.1034 36.1925 -0.0891 36.7809 -0.6775

 36.1922 36.1040 0.0882 36.1870 0.0052

 36.1406 36.1891 -0.0485 36.0974 0.0432

 36.1200 36.1475 -0.0275 36.2007 -0.0807

 35.9832 36.1207 -0.1375 36.1388 -0.1556

 36.0439 35.9841 0.0598 36.1191 -0.0752

 35.9975 36.0438 -0.0463 35.9842 0.0133

 36.1257 35.9988 0.1269 36.0438 0.0819

 36.0083 36.1253 -0.1170 35.9989 0.0094

 36.0888 36.0093 0.0795 36.1245 -0.0357

 36.1574 36.0878 0.0696 36.0092 0.1482

 36.2884 36.1558 0.1326 36.0872 0.2012

 36.2264 36.2877 -0.0613 36.1592 0.0672

 36.1248 36.2260 -0.1012 36.2870 -0.1622

 35.9455 36.1247 -0.1792 36.2261 -0.2806

 35.9279 35.9466 -0.0187 36.1236 -0.1957

 36.5937 35.9292 0.6645 35.9466 0.6471

 36.3908 36.5877 -0.1969 35.9286 0.4622

 36.2670 36.3949 -0.1279 36.5953 -0.3283

 36.0877 36.2657 -0.1780 36.3905 -0.3028

 36.1851 36.0841 0.1010 36.2598 -0.0747

 35.9922 36.1866 -0.1944 36.0925 -0.1003

 36.0821 35.9965 0.0856 36.1851 -0.1030

 36.4299 36.0824 0.3475 35.9938 0.4361

 36.2958 36.4257 -0.1299 36.0804 0.2154

 36.4066 36.2988 0.1078 36.4325 -0.0259

 36.2568 36.4029 -0.1461 36.2940 -0.0372

 36.6274 36.2557 0.3717 36.4033 0.2241

 36.8974 36.6239 0.2735 36.2596 0.6378

 36.7957 36.8938 -0.0981 36.6254 0.1703

 36.7099 36.7967 -0.0868 36.8996 -0.1897

 36.5948 36.7060 -0.1112 36.7911 -0.1963

 36.3700 36.5939 -0.2239 36.7085 -0.3385

 36.1530 36.3740 -0.2210 36.5967 -0.4437

 35.8757 36.1569 -0.2812 36.3703 -0.4946

 35.5476 35.8811 -0.3335 36.1539 -0.6063

 35.5512 35.5547 -0.0035 35.8777 -0.3265

 35.5632 35.5546 0.0086 35.5491 0.0141

 35.6839 35.5673 0.1166 35.5534 0.1305

 35.5171 35.6857 -0.1686 35.5658 -0.0487

 35.6051 35.5189 0.0862 35.6828 -0.0777

 35.6063 35.6034 0.0029 35.5172 0.0891

 35.5798 35.6058 -0.0260 35.6038 -0.0240

 35.3188 35.5814 -0.2626 35.6086 -0.2898

 35.3988 35.3210 0.0778 35.5781 -0.1793

 35.1731 35.3980 -0.2249 35.3193 -0.1462

 35.0881 35.1771 -0.0890 35.3990 -0.3109

 34.6345 35.0913 -0.4568 35.1758 -0.5413

 34.5767 34.6400 -0.0633 35.0862 -0.5095

 34.4144 34.5800 -0.1656 34.6374 -0.2230

 34.0844 34.4192 -0.3348 34.5766 -0.4922

 34.1627 34.0930 0.0697 34.4191 -0.2564

 34.4306 34.1631 0.2675 34.0833 0.3473

 34.4092 34.4305 -0.0213 34.1645 0.2447

 34.5449 34.4123 0.1326 34.4336 0.1113

 34.6484 34.5413 0.1071 34.4072 0.2412

 34.5112 34.6446 -0.1334 34.5425 -0.0313

 34.5677 34.5124 0.0553 34.6497 -0.0820

 34.8064 34.5653 0.2411 34.5095 0.2969

 34.6319 34.8032 -0.1713 34.5671 0.0648

 34.3777 34.6350 -0.2573 34.8082 -0.4305

 34.7938 34.3791 0.4147 34.6307 0.1631

 34.5766 34.7874 -0.2108 34.3754 0.2012

 34.6250 34.5819 0.0431 34.7966 -0.1716

 34.6693 34.6251 0.0442 34.5785 0.0908

 34.4975 34.6656 -0.1681 34.6196 -0.1221

 34.5215 34.5014 0.0201 34.6735 -0.1520

 34.9141 34.5206 0.3935 34.4958 0.4183

 35.2416 34.9098 0.3318 34.5213 0.7203

 35.4565 35.2393 0.2172 34.9161 0.5404

 35.3629 35.4520 -0.0891 35.2407 0.1222

 35.7166 35.3586 0.3580 35.4525 0.2641

 35.4095 35.7083 -0.2988 35.3609 0.0486

 35.3037 35.4113 -0.1076 35.7153 -0.4116

 35.4404 35.3043 0.1361 35.4112 0.0292

 35.3887 35.4367 -0.0480 35.2993 0.0894

 35.8786 35.3928 0.4858 35.4452 0.4334

 36.0107 35.8733 0.1374 35.3884 0.6223

 36.0061 36.0080 -0.0019 35.8769 0.1292

 36.1715 36.0045 0.1670 36.0120 0.1595

 36.6678 36.1641 0.5037 36.0005 0.6673

 36.9008 36.6607 0.2401 36.1721 0.7287

 37.4292 36.8973 0.5319 36.6681 0.7611

 37.8188 37.4192 0.3996 36.8990 0.9198

 38.7040 37.8082 0.8958 37.4245 1.2795

 39.7798 38.6890 1.0908 37.8182 1.9616

 39.5475 39.7602 -0.2127 38.6989 0.8486

 39.7253 39.5423 0.1830 39.7777 -0.0524

 39.6674 39.7097 -0.0423 39.5393 0.1281

 39.9565 39.6584 0.2981 39.7169 0.2396

 40.1859 39.9546 0.2313 39.6736 0.5123

 40.7880 40.1817 0.6063 39.9529 0.8351

 41.6294 40.7802 0.8492 40.1874 1.4420

 41.4411 41.6156 -0.1745 40.7846 0.6565

 41.4275 41.4382 -0.0107 41.6282 -0.2007

 41.1311 41.4180 -0.2869 41.4354 -0.3043

 41.5282 41.1271 0.4011 41.4206 0.1076

 41.4105 41.5255 -0.1150 41.1360 0.2745

 41.9706 41.4133 0.5573 41.5269 0.4437

 42.3833 41.9653 0.4180 41.4138 0.9695

 43.0800 42.3750 0.7050 41.9651 1.1149

 43.7815 43.0705 0.7110 42.3865 1.3950

 43.3331 43.7658 -0.4327 43.0733 0.2598

 42.1454 43.3310 -1.1856 43.7795 -1.6341

 42.6454 42.1493 0.4961 43.3269 -0.6815

 42.3986 42.6348 -0.2362 42.1402 0.2584

 42.4861 42.4112 0.0749 42.6523 -0.1662

 43.7123 42.4947 1.2176 42.4092 1.3031

 44.0305 43.6941 0.3364 42.4763 1.5542

 45.3398 44.0287 1.3111 43.7178 1.6220

 45.6636 45.3182 0.3454 44.0284 1.6352

 	 45.6461 	 44.0178

 			 45.3414

 			 45.6499

RUR_JPY

23.1523 22.8447 0.3076 22.8005 0.3518

 23.4717 23.1550 0.3167 22.8670 0.6047

 23.1400 23.4760 -0.3360 23.1421 -0.0021

 23.1335 23.1437 -0.0102 23.4533 -0.3198

 22.7315 23.1092 -0.3777 23.1320 -0.4005

 23.1071 22.7484 0.3587 23.1393 -0.0322

 22.9145 23.0897 -0.1752 22.7209 0.1936

 22.9459 22.9454 0.0005 23.1158 -0.1699

 22.9203 22.9251 -0.0048 22.9115 0.0088

 22.9491 22.9284 0.0207 22.9566 -0.0075

 22.8951 22.9470 -0.0519 22.9257 -0.0306

 22.9298 22.8977 0.0321 22.9423 -0.0125

 23.1758 22.9265 0.2493 22.8989 0.2769

 23.1489 23.1761 -0.0272 22.9310 0.2179

 23.0610 23.1564 -0.0954 23.1751 -0.1141

 23.0273 23.0515 -0.0242 23.1406 -0.1133

 23.0516 23.0253 0.0263 23.0626 -0.0110

 23.0282 23.0536 -0.0254 23.0264 0.0018

 22.7383 23.0308 -0.2925 23.0467 -0.3084

 22.7375 22.7401 -0.0026 23.0292 -0.2917

 22.7879 22.7285 0.0594 22.7417 0.0462

 22.7823 22.7986 -0.0163 22.7477 0.0346

 22.8210 22.7847 0.0363 22.7880 0.0330

 22.6814 22.8184 -0.1370 22.7847 -0.1033

 22.7678 22.6845 0.0833 22.8288 -0.0610

 22.6464 22.7605 -0.1141 22.6796 -0.0332

 22.6263 22.6562 -0.0299 22.7711 -0.1448

 22.6802 22.6193 0.0609 22.6434 0.0368

 22.9139 22.6834 0.2305 22.6308 0.2831

 23.3745 22.9139 0.4606 22.6837 0.6908

 23.2730 23.3749 -0.1019 22.9113 0.3617

 23.2498 23.2808 -0.0310 23.3702 -0.1204

 23.0587 23.2282 -0.1695 23.2574 -0.1987

 23.2721 23.0633 0.2088 23.2483 0.0238

 23.3771 23.2641 0.1130 23.0480 0.3291

 23.1426 23.3906 -0.2480 23.2675 -0.1249

 23.6286 23.1411 0.4875 23.3733 0.2553

 23.5431 23.6102 -0.0671 23.1417 0.4014

 24.1924 23.5697 0.6227 23.6387 0.5537

 24.1211 24.1631 -0.0420 23.5206 0.6005

 23.7529 24.1466 -0.3937 24.1945 -0.4416

 23.9451 23.7298 0.2153 24.1003 -0.1552

 23.8632 23.9317 -0.0685 23.7425 0.1207

 23.8470 23.8853 -0.0383 23.9519 -0.1049

 23.6113 23.8376 -0.2263 23.8411 -0.2298

 23.6370 23.6164 0.0206 23.8556 -0.2186

 23.6972 23.6294 0.0678 23.6194 0.0778

 23.5698 23.7066 -0.1368 23.6407 -0.0709

 23.5569 23.5729 -0.0160 23.6990 -0.1421

 23.5752 23.5503 0.0249 23.5710 0.0042

 23.1837 23.5794 -0.3957 23.5669 -0.3832

 22.9810 23.1898 -0.2088 23.5744 -0.5934

 23.0069 22.9694 0.0375 23.1830 -0.1761

 23.0339 23.0149 0.0190 22.9974 0.0365

 22.9927 23.0431 -0.0504 23.0143 -0.0216

 22.9807 22.9935 -0.0128 23.0375 -0.0568

 23.2674 22.9783 0.2891 23.0045 0.2629

 23.0266 23.2651 -0.2385 22.9871 0.0395

 23.2995 23.0399 0.2596 23.2669 0.0326

 23.1905 23.2768 -0.0863 23.0169 0.1736

 23.0630 23.2100 -0.1470 23.3083 -0.2453

 22.8941 23.0507 -0.1566 23.1788 -0.2847

 22.8085 22.8955 -0.0870 23.0615 -0.2530

 22.6046 22.8089 -0.2043 22.9016 -0.2970

 22.7342 22.6110 0.1232 22.8083 -0.0741

 22.6473 22.7293 -0.0820 22.6120 0.0353

 22.5963 22.6609 -0.0646 22.7464 -0.1501

 22.6364 22.5893 0.0471 22.6488 -0.0124

 22.5678 22.6373 -0.0695 22.6036 -0.0358

 22.6787 22.5722 0.1065 22.6420 0.0367

 22.7839 22.6735 0.1104 22.5642 0.2197

 22.5822 22.7890 -0.2068 22.6838 -0.1016

 22.6429 22.5841 0.0588 22.7812 -0.1383

 22.6514 22.6309 0.0205 22.5783 0.0731

 22.8789 22.6610 0.2179 22.6499 0.2290

 23.0603 22.8745 0.1858 22.6455 0.4148

 22.8581 23.0654 -0.2073 22.8781 -0.0200

 22.7423 22.8579 -0.1156 23.0574 -0.3151

 22.7234 22.7293 -0.0059 22.8501 -0.1267

 22.7885 22.7272 0.0613 22.7458 0.0427

 22.7938 22.7920 0.0018 22.7194 0.0744

 22.8110 22.7969 0.0141 22.7869 0.0241

 22.9262 22.8085 0.1177 22.7984 0.1278

 22.8780 22.9251 -0.0471 22.8140 0.0640

 22.6821 22.8818 -0.1997 22.9254 -0.2433

 22.7982 22.6783 0.1199 22.8724 -0.0742

 22.7351 22.7917 -0.0566 22.6832 0.0519

 22.6776 22.7476 -0.0700 22.8029 -0.1253

 22.5347 22.6720 -0.1373 22.7291 -0.1944

 22.5265 22.5367 -0.0102 22.6831 -0.1566

 22.5200 22.5241 -0.0041 22.5405 -0.0205

 22.7351 22.5255 0.2096 22.5290 0.2061

 22.6275 22.7329 -0.1054 22.5228 0.1047

 22.5574 22.6364 -0.0790 22.7385 -0.1811

 22.3131 22.5462 -0.2331 22.6243 -0.3112

 22.3584 22.3174 0.0410 22.5609 -0.2025

 22.1117 22.3524 -0.2407 22.3132 -0.2015

 21.9781 22.1259 -0.1478 22.3621 -0.3840

 21.9652 21.9700 -0.0048 22.1142 -0.1490

 21.9114 21.9703 -0.0589 21.9909 -0.0795

 21.8960 21.9173 -0.0213 21.9758 -0.0798

 21.9250 21.8951 0.0299 21.9137 0.0113

 21.9008 21.9262 -0.0254 21.9059 -0.0051

 21.9490 21.9028 0.0462 21.9293 0.0197

 21.8583 21.9465 -0.0882 21.9008 -0.0425

 21.8907 21.8619 0.0288 21.9514 -0.0607

 21.7880 21.8854 -0.0974 21.8568 -0.0688

 21.9597 21.7938 0.1659 21.8931 0.0666

 22.1090 21.9530 0.1560 21.7871 0.3219

 22.1865 22.1170 0.0695 21.9628 0.2237

 22.0664 22.1842 -0.1178 22.1055 -0.0391

 22.0257 22.0643 -0.0386 22.1817 -0.1560

 22.0175 22.0188 -0.0013 22.0643 -0.0468

 22.0142 22.0207 -0.0065 22.0233 -0.0091

 21.7740 22.0158 -0.2418 22.0142 -0.2402

 21.8388 21.7772 0.0616 22.0139 -0.1751

 21.8009 21.8299 -0.0290 21.7778 0.0231

 21.7805 21.8129 -0.0324 21.8479 -0.0674

 21.9137 21.7774 0.1363 21.7994 0.1143

 22.2536 21.9127 0.3409 21.7846 0.4690

 22.0466 22.2549 -0.2083 21.9200 0.1266

 21.8129 22.0556 -0.2427 22.2480 -0.4351

 21.7667 21.7951 -0.0284 22.0365 -0.2698

 21.7741 21.7667 0.0074 21.8182 -0.0441

 21.6546 21.7820 -0.1274 21.7672 -0.1126

 21.6826 21.6586 0.0240 21.7694 -0.0868

 21.8987 21.6780 0.2207 21.6626 0.2361

 21.6999 21.9017 -0.2018 21.6932 0.0067

 21.6952 21.7088 -0.0136 21.8991 -0.2039

 21.7220 21.6800 0.0420 21.6940 0.0280

 21.6809 21.7288 -0.0479 21.7043 -0.0234

 21.8536 21.6829 0.1707 21.7192 0.1344

 21.7135 21.8491 -0.1356 21.6767 0.0368

 21.7306 21.7227 0.0079 21.8602 -0.1296

 21.7001 21.7189 -0.0188 21.7077 -0.0076

 21.5347 21.7062 -0.1715 21.7347 -0.2000

 21.7213 21.5353 0.1860 21.6988 0.0225

 22.3503 21.7145 0.6358 21.5328 0.8175

 22.1375 22.3556 -0.2181 21.7303 0.4072

 22.2133 22.1547 0.0586 22.3443 -0.1310

 22.2000 22.1802 0.0198 22.1193 0.0807

 22.1959 22.2098 -0.0139 22.2216 -0.0257

 22.2089 22.1930 0.0159 22.1855 0.0234

 22.3387 22.2090 0.1297 22.1822 0.1565

 22.2055 22.3378 -0.1323 22.2138 -0.0083

 22.3327 22.2111 0.1216 22.3364 -0.0037

 22.2445 22.3215 -0.0770 22.2016 0.0429

 22.2404 22.2549 -0.0145 22.3369 -0.0965

 22.3905 22.2327 0.1578 22.2386 0.1519

 22.5251 22.3917 0.1334 22.2413 0.2838

 22.5495 22.5289 0.0206 22.3928 0.1567

 22.5518 22.5480 0.0038 22.5179 0.0339

 22.8039 22.5471 0.2568 22.5472 0.2567

 22.8440 22.7997 0.0443 22.5491 0.2949

 22.8138 22.8520 -0.0382 22.7983 0.0155

 23.2884 22.8057 0.4827 22.8319 0.4565

 23.8456 23.2796 0.5660 22.8115 1.0341

 23.2653 23.8562 -0.5909 23.2863 -0.0210

 23.7359 23.2730 0.4629 23.8229 -0.0870

 23.8394 23.6877 0.1517 23.2456 0.5938

 24.0390 23.8758 0.1632 23.7494 0.2896

 23.9227 24.0229 -0.1002 23.8057 0.1170

 24.0392 23.9260 0.1132 24.0271 0.0121

 24.1458 24.0258 0.1200 23.9257 0.2201

 24.1932 24.1526 0.0406 24.0291 0.1641

 23.7148 24.1920 -0.4772 24.1370 -0.4222

 23.7680 23.7178 0.0502 24.1856 -0.4176

 23.6412 23.7489 -0.1077 23.7148 -0.0736

 23.5967 23.6631 -0.0664 23.7794 -0.1827

 23.5723 23.5918 -0.0195 23.6368 -0.0645

 23.6716 23.5759 0.0957 23.6052 0.0664

 23.7189 23.6715 0.0474 23.5859 0.1330

 24.0997 23.7228 0.3769 23.6726 0.4271

 24.5946 24.0929 0.5017 23.7195 0.8751

 25.2590 24.5996 0.6594 24.0995 1.1595

 25.4215 25.2530 0.1685 24.5815 0.8400

 26.0587 25.4222 0.6365 25.2390 0.8197

 25.8549 26.0297 -0.1748 25.3932 0.4617

 26.5626 25.8715 0.6911 26.0366 0.5260

 25.9180 26.5219 -0.6039 25.8128 0.1052

 25.4944 25.9567 -0.4623 26.5490 -1.0546

 25.7561 25.4503 0.3058 25.8832 -0.1271

 26.2157 25.7622 0.4535 25.5003 0.7154

 25.9854 26.2369 -0.2515 25.7680 0.2174

 25.5189 25.9946 -0.4757 26.1966 -0.6777

 26.1437 25.4982 0.6455 25.9919 0.1518

 27.0949 26.1282 0.9667 25.5339 1.5610

 27.6867 27.1234 0.5633 26.1471 1.5396

 28.4523 27.6887 0.7636 27.0656 1.3867

 29.5029 28.4250 1.0779 27.6661 1.8368

 28.8115 29.4914 -0.6799 28.4364 0.3751

 27.8928 28.8248 -0.9320 29.4492 -1.5564

 27.9722 27.8378 0.1344 28.7438 -0.7716

 27.2098 27.9647 -0.7549 27.8895 -0.6797

 27.3991 27.2589 0.1402 27.9709 -0.5718

 27.7549 27.3694 0.3855 27.1890 0.5659

 27.2280 27.7866 -0.5586 27.4531 -0.2251

 27.9749 27.2407 0.7342 27.7730 0.2019

 28.0640 27.9336 0.1304 27.2229 0.8411

 28.7574 28.1083 0.6491 28.0096 0.7478

 28.2074 28.7240 -0.5166 28.0310 0.1764

 28.2438 28.2328 0.0110 28.7503 -0.5065

 28.3721 28.1973 0.1748 28.1895 0.1826

 28.3514 28.3919 -0.0405 28.2402 0.1112

 28.9328 28.3557 0.5771 28.3612 0.5716

 28.9594 28.9200 0.0394 28.3353 0.6241

 29.0392 28.9795 0.0597 28.9474 0.0918

 28.3951 29.0165 -0.6214 28.9378 -0.5427

 28.8022 28.4034 0.3988 29.0344 -0.2322

 28.8345 28.7721 0.0624 28.3861 0.4484

 28.9675 28.8730 0.0945 28.8077 0.1598

 29.5156 28.9524 0.5632 28.8204 0.6952

 30.2278 29.5114 0.7164 28.9714 1.2564

 30.0163 30.2327 -0.2164 29.5233 0.4930

 30.0846 30.0216 0.0630 30.1985 -0.1139

 30.4830 30.0477 0.4353 29.9897 0.4933

 29.8649 30.4873 -0.6224 30.0806 -0.2157

 30.3308 29.8838 0.4470 30.4582 -0.1274

 30.0762 30.2883 -0.2121 29.8354 0.2408

 30.2365 30.1185 0.1180 30.3554 -0.1189

 30.8580 30.2089 0.6491 30.0552 0.8028

 30.6614 30.8650 -0.2036 30.2410 0.4204

 30.5844 30.6793 -0.0949 30.8639 -0.2795

 31.1065 30.5541 0.5524 30.6314 0.4751

 31.4369 31.1040 0.3329 30.5948 0.8421

 31.3143 31.4542 -0.1399 31.0978 0.2165

 31.4791 31.3069 0.1722 31.4058 0.0733

 31.4058 31.4590 -0.0532 31.3088 0.0970

 31.6801 31.4165 0.2636 31.4785 0.2016

 31.7325 31.6681 0.0644 31.3829 0.3496

 32.0790 31.7438 0.3352 31.6750 0.4040

 32.3305 32.0660 0.2645 31.7249 0.6056

 32.5779 32.3367 0.2412 32.0734 0.5045

 32.5723 32.5699 0.0024 32.3177 0.2546

 33.7905 32.5703 1.2202 32.5613 1.2292

 34.3755 33.7654 0.6101 32.5583 1.8172

 35.1092 34.4098 0.6994 33.7782 1.3310

 35.1681 35.0729 0.0952 34.3259 0.8422

 36.2071 35.1673 1.0398 35.0818 1.1253

 36.1219 36.1668 -0.0449 35.1289 0.9930

 36.2668 36.1547 0.1121 36.1652 0.1016

 36.8864 36.2215 0.6649 36.0635 0.8229

 36.3872 36.8851 -0.4979 36.2481 0.1391

 36.8653 36.4090 0.4563 36.8680 -0.0027

 37.2193 36.8180 0.4013 36.3402 0.8791

 37.0266 37.2496 -0.2230 36.8814 0.1452

 36.7194 37.0234 -0.3040 37.1931 -0.4737

 37.2455 36.7018 0.5437 37.0038 0.2417

 38.4723 37.2354 1.2369 36.7328 1.7395

 39.6802 38.4878 1.1924 37.2391 2.4411

 39.6877 38.4484 

 	 38.4399

 			 39.6406




Приложение 2



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



unit Unit1;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, Grids;

type

 TForm1 = class(TForm)

 Button1: TButton;

 Button2: TButton;

 Button3: TButton;

 Button4: TButton;

 Button5: TButton;

 Button6: TButton;

 Button7: TButton;

 Button8: TButton;

 Button9: TButton;

 Button10: TButton;

 Button11: TButton;

 OpenData: TOpenDialog;

 OpenNNS: TOpenDialog;

 SaveData: TSaveDialog;

 SaveNNS: TSaveDialog;

 StringGrid1: TStringGrid;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Label4: TLabel;

 Label5: TLabel;

 Label6: TLabel;

 Edit1: TEdit;

 Label7: TLabel;

 Edit2: TEdit;

 Label8: TLabel;

 Label9: TLabel;

 Edit3: TEdit;

 Edit4: TEdit;

 Label10: TLabel;

 Label11: TLabel;

 Label12: TLabel;

 Label13: TLabel;

 Edit5: TEdit;

 Edit6: TEdit;

 Edit7: TEdit;

 Edit8: TEdit;

 procedure Button1Click(Sender: TObject);

 procedure Button2Click(Sender: TObject);

 procedure Button7Click(Sender: TObject);

 procedure Button11Click(Sender: TObject);

 procedure Button3Click(Sender: TObject);

 procedure Button5Click(Sender: TObject);

 procedure Button6Click(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 procedure FormResize(Sender: TObject);

 procedure StringGrid1KeyPress(Sender: TObject; var Key: Char);

 procedure StringGrid1GetEditText(Sender: TObject; ACol, ARow: Integer;

 var Value: String);

 procedure Button4Click(Sender: TObject);

 procedure Button8Click(Sender: TObject);

 procedure Button9Click(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

const nns=54321;

 mM=20;

 mN=20;

 u=0.8;

 v=1.25;

var

 Form1: TForm1;

 s1: string;

 i,j,k,n,m,OnSettings:integer;//m - количество правил

 a,ap,ap3: array[1..2000]of real;

 f,f1,f2,f3,f4:TextFile;

 t,Nst,Nac,Neps,Nrp:integer;

 w3,w: array[1..20]of real;

 sign:array[1..20] of integer;

 c:array[1..20]of real;

 h:array[1..250,1..mM]of real; 

 myu0,myu03:array[1..mM]of real;//пересечение правил

 myu,myu3,cen,cen3,b,b3:array[1..mM,1..mN]of real; // нелинейные параметры

 sigma,sigma3:array[1..mM,1..mN]of real; // нелинейные параметры

 // b:array[1..mM,1..mN]of real; // нелинейные параметры

 gc,gs,gb:real;//шаг градиентного спуска

p,p3:array[1..mM,0..mN]of real; // Линейные параметры

 input,output:array[1..20]of real;

eps,skoS,sko3S,skoP,sko3P,ms,mp,ms3,mp3,sappS,sapp3S,sappP,sapp3p:real;

 fname:string;

 nnit:longint;

implementation

uses Unit2, Unit3, Unit4, matrices;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

//загрузить данные

var i:integer;

 s:string;

begin

for i:=1 to n+10 do

begin

StringGrid1.cells[0,i]:='';

StringGrid1.cells[1,i]:='';

StringGrid1.cells[2,i]:='';

StringGrid1.cells[3,i]:='';

StringGrid1.cells[4,i]:='';

end;

OpenData.InitialDir:='D:\CW';

OpenData.DefaultExt:='txt';

if OpenData.Execute then

begin

s:=OpenData.FileName;

StringGrid1.RowCount:=1;

for i:=1 to n do

begin

StringGrid1.cells[0,i]:='';

end;

fname:=s;

AssignFile(f1,s);

reset(f1);

readln(f1,n);

nst:=trunc(n/10);

StringGrid1.RowCount:=0;

 for i:=1 to n do

 begin

 readln(f1,s);

{ str(a[i]:8:4,s);}

 for j:=1 to length(s) do

 if(s[j]='.') or(s[j]=',')then s[j]:=decimalseparator;

 StringGrid1.Cells[0,i]:=s;

 StringGrid1.RowCount:=StringGrid1.RowCount+1;

 a[i]:=strToFloat(s);

 end;

StringGrid1.RowCount:=StringGrid1.RowCount+10;

StringGrid1.LeftCol:=0;

StringGrid1.TopRow:=1;

if n-10>0 then

StringGrid1.TopRow:=n-10;

CloseFile(f1);

end;

end;//Загрузить данные (Конец)

procedure TForm1.Button2Click(Sender: TObject);//Загрузить нейросеть

var nn:integer;

begin

OpenNNS.InitialDir:='D:\CW';

OpenNNS.DefaultExt:='nns';

if OpenNNS.Execute then

begin

s:=OpenNNS.FileName;

AssignFile(f1,s);

reset(f1);

readln(f1,nn);

 if nn<>nns then

 begin

 messagedlg('Ошибка ввода начальных данных!',mtError,[mbOk],0);

 end

else

begin

readln(f1,nac);

readln(f1,m);

 for i:=1 to m do

 for j:=1 to nac do

 readln(f1,cen[i,j]);

 for i:=1 to m do

 for j:=1 to nac do

 readln(f1,sigma[i,j]);

 for i:=1 to m do

 for j:=1 to nac do

 readln(f1,b[i,j]);

 for i:=1 to m do

 for j:=0 to nac do

 if j<=nac then

 readln(f1,p[i,j]);

 for i:=1 to m do

 for j:=1 to nac do

 readln(f1,cen3[i,j]);

 for i:=1 to m do

 for j:=1 to nac do

 readln(f1,sigma3[i,j]);

 for i:=1 to m do

 for j:=1 to nac do

 readln(f1,b3[i,j]);

 for i:=1 to m do

 for j:=0 to nac do

 if j<=nac then

 readln(f1,p3[i,j]);

end;

CloseFile(f1);

end;

end;//Загрузить нейросеть (конец)

procedure TForm1.Button7Click(Sender: TObject);

//Сохранить данные

var i:integer;

begin

SaveData.InitialDir:='D:\CW';

SaveData.DefaultExt:='txt'; i:=1;

 while (stringGrid1.cells[0,i]<>'')and(i<10000) do

 begin

 i:=i+1;

 end;

n:=i-1;

if SaveData.Execute then

begin

fname:=SaveData.FileName;

AssignFile(f3,SaveData.FileName);

Rewrite(f3);

writeln(f3,n);

 for i:=1 to n do

 begin

 writeln(f3,stringGrid1.cells[0,i]);

 end;

CloseFile(f3);

end;

end; //Сохранить данные (конец)

procedure TForm1.Button11Click(Sender: TObject);

begin // Закрыть форму 1

AssignFile(f3,'1.txt');

Rewrite(f3);

writeln(f3,skoS:10:8);

writeln(f3,sko3S:10:8);

writeln(f3,skoP:10:8);

writeln(f3,sko3P:10:8);

writeln(f3,ms:10:8);

writeln(f3,mp:10:8);

writeln(f3,ms3:10:8);

writeln(f3,mp3:10:8);

 for i:=nst to n+3 do

 begin

 write(f3,stringGrid1.cells[0,i]);

 write(f3,stringGrid1.cells[1,i]);

 write(f3,stringGrid1.cells[2,i]);

 write(f3,stringGrid1.cells[3,i]);

 writeln(f3,stringGrid1.cells[4,i]);

 end;

CloseFile(f3);

Form1.close;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin //Открыть форму "Настройки"

form2.Show;

end; //Открыть форму "Настройки" (конец)

procedure TForm1.Button5Click(Sender: TObject);

begin

if (stringGrid1.cells[0,1]<>'')and(stringGrid1.cells[0,3]<>'') then

form3.show; // Открыть форму график КВ

end;

procedure TForm1.Button6Click(Sender: TObject);

begin

if (stringGrid1.cells[0,1]<>'')and(stringGrid1.cells[0,3]<>'') then

form4.show; // Открыть форму график пргноза на 3 шага вперед

end;

procedure TForm1.FormCreate(Sender: TObject);

// Создание формы 1

var a:integer;

begin

a:=6;

edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

edit4.Text:='';

edit5.Text:='';

edit6.Text:='';

edit7.Text:='';

edit8.Text:='';

Nst:=0; Nac:=4;Neps:=10;Nrp:=80;m:=5;

end; //Конец создания формы 1

procedure TForm1.FormResize(Sender: TObject);

//Изменение размеров формы 1

var a:integer;

begin

if Form1.Width<500 then

Form1.Width:=500;

if Form1.Height<550 then

Form1.Height:=550;

StringGrid1.Width:=Form1.Width-Button1.Width-80;

StringGrid1.Height:=Form1.Height-280;

a:=6;

StringGrid1.Top:=Form1.ClientHeight-StringGrid1.Height-216;

StringGrid1.Left:=Form1.ClientWidth-StringGrid1.Width-24;

StringGrid1.ColWidths[0]:=trunc(StringGrid1.Width*0.2)-a;

StringGrid1.ColWidths[1]:=trunc(StringGrid1.Width*0.2)-a;

StringGrid1.ColWidths[2]:=trunc(StringGrid1.Width*0.2)-a;

StringGrid1.ColWidths[3]:=trunc(StringGrid1.Width*0.2)-a;

StringGrid1.ColWidths[4]:=trunc(StringGrid1.Width*0.2)-a;

end; // Конец изменения формы 1

procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if not (Key in [#8,'0'..'9',decimalSeparator])then

Key:=#0

end;

procedure TForm1.StringGrid1GetEditText(Sender: TObject; ACol,

 ARow: Integer; var Value: String);

var i:integer;

begin

i:=1;

while (stringgrid1.cells[0,i]<>'')do

i:=i+1;

StringGrid1.RowCount:=i+10;

n:=i;

end;

function adjust():boolean;

var wrong,q,r:integer;

 //f:boolean;

 prognoz,realynoe:real;

begin

wrong:=0;

for q:=nac+2 to nst-1 do

begin

eps:=Neps*a[q]/1000;

 realynoe:=a[q+1]-a[q];

 prognoz:=0;

 for r:=1 to nac do

 prognoz:=prognoz+(a[q-nac+r-1]-a[q-nac+r-2])*w[r];

if abs(prognoz-realynoe)<eps then

wrong:=wrong+1;

end;

if wrong/(nst-(nac+2))<(100-Nrp)/100 then

adjust:=true

else

adjust:=false;

end;//adjust

procedure ns(i,j:integer;var a,b,c:real);

const eps=0.01;

begin a:=eps*i/j;b:=eps*i/i;c:=i/j;

end;

procedure adjust_csb3(num:integer;vihod:real);

const eps=0.00001;

var lxj,mxj,mxjs,sum:real;

 r,k,j,l,bb,d,delta:integer;

 p1,p2,p5,p4:real; // Произведения при вычислении dw/d(cen)(sigma)(b)

 s1,sc,ss,sb,dec,deb,des,dwc,dwb,dws:real; // dw/d(cen)(sigma)(b)

begin

for j:=1 to nac do

begin

 for k:=1 to m do

 begin

 lxj:=1;

 for l:=1 to nac do

 lxj:=lxj*myu3[k,j];

 mxj:=1;

 for bb:=1 to m do

 begin

 mxjs:=0;

 for d:=1 to nac do

 mxjs:=mxjs+myu3[bb,d];

 mxj:=mxj*mxjs;

 end;

if mxj<eps then

mxj:=eps;

if lxj<eps then

lxj:=eps;

// Изменняем cen

sc:=0;

ss:=0;

sb:=0;

for r:=1 to m do

begin

//dw/d(cen)

 p1:=1;

 for i:=1 to m do

 if i<>j then

p1:=p1*(2*b3[k,j]/sigma3[k,j])*

exp( Ln( abs( (a[j+num+3]-cen3[k,j])/sigma3[k,j]*(2*b3[k,j]-1)) ))*

myu3[k,i]/sqr(1+exp(Ln(abs((a[j+num+3]-cen3[k,j])/sigma3[k,j]))*2*b3[k,j]) );

if r=k then delta:=0 else delta:=1;

dwc:=(delta*mxj-lxj)/sqr(mxj)*p1;

s1:=p3[r,0];

 for l:=1 to nac do

 s1:=s1+p3[r,l]*a[num+l+3];

sc:=sc+s1*dwc;

//dw/d(sigma)

p2:=1;

 for i:=1 to m do

 if i<>j then

p2:=p2*(2*b3[k,j]/sigma3[k,j])*

exp( Ln( abs( (a[j+num+3]-cen3[k,j])/sigma3[k,j]) ))*

myu3[k,i]/sqr(1+exp(Ln(abs((a[j+num+3]-cen3[k,j])/sigma3[k,j]))*2*b3[k,j]) );

dws:=(delta*mxj-lxj)/sqr(mxj);

ss:=ss+s1*dws;

//dw/d(b)

p5:=1;

for i:=1 to m do

 if i<>j then

p5:=p5*(-2*exp( Ln( abs( (a[j+num+3]-cen3[k,j])/sigma3[k,j]) )*2*b3[k,j]))*

Ln( abs( (a[j+num+3]-cen3[k,j])/sigma3[k,j]) )*

myu3[k,i]/sqr(1+exp(Ln(abs((a[j+num+3]-cen3[k,j])/sigma3[k,j]))*2*b3[k,j]) );

end;ns(i,j,sc,ss,sb);

dec:=(vihod-a[num+4])*sc;

des:=(vihod-a[num+4])*ss;

deb:=(vihod-a[num+4])*sb;

cen3[k,j]:=cen3[k,j]-gc*dec;

sigma3[k,j]:=sigma3[k,j]-gs*des;

b3[k,j]:=b3[k,j]-gb*deb;

 end;//{k}

end;//{j}

end;//adjust_csb3

//adjust_csb

procedure adjust_csb(num:integer;vihod:real);

const eps=0.00001;

var lxj,mxj,mxjs,sum:real;

 r,k,j,l,bb,d,delta:integer;

 p1,p2,p3,p4:real; // Произведения при вычислении dw/d(cen)(sigma)(b)

 s1,sc,ss,sb,dec,deb,des,dwc,dwb,dws:real; // dw/d(cen)(sigma)(b)

begin

for j:=1 to nac do

begin

 for k:=1 to m do

 begin

 lxj:=1;

 for l:=1 to nac do

 lxj:=lxj*myu[k,j];

 mxj:=1;

 for bb:=1 to m do

 begin

 mxjs:=0;

 for d:=1 to nac do

 mxjs:=mxjs+myu[bb,d];

 mxj:=mxj*mxjs;

 end;

if mxj<eps then

mxj:=eps;

if lxj<eps then

lxj:=eps;

// Изменняем cen

sc:=0;

ss:=0;

sb:=0;

for r:=1 to m do

begin

//dw/d(cen)

 p1:=1;

 for i:=1 to m do

 if i<>j then

p1:=p1*(2*b[k,j]/sigma[k,j])*

exp( Ln( abs( (a[j+num]-cen[k,j])/sigma[k,j]*(2*b[k,j]-1)) ))*

myu[k,i]/sqr(1+exp(Ln(abs((a[j+num]-cen[k,j])/sigma[k,j]))*2*b[k,j]) );

if r=k then delta:=0 else delta:=1;

dwc:=(delta*mxj-lxj)/sqr(mxj)*p1;

s1:=p[r,0];

 for l:=1 to nac do

 s1:=s1+p[r,l]*a[num+l];

sc:=sc+s1*dwc;

//dw/d(sigma)

p2:=1;

 for i:=1 to m do

 if i<>j then

p2:=p2*(2*b[k,j]/sigma[k,j])*

exp( Ln( abs( (a[j+num]-cen[k,j])/sigma[k,j]) ))*

myu[k,i]/sqr(1+exp(Ln(abs((a[j+num]-cen[k,j])/sigma[k,j]))*2*b[k,j]) );

dws:=(delta*mxj-lxj)/sqr(mxj);

ss:=ss+s1*dws;

//dw/d(b)

p3:=1;

for i:=1 to m do

 if i<>j then

p3:=p3*(-2*exp( Ln( abs( (a[j+num]-cen[k,j])/sigma[k,j]) )*2*b[k,j]))*

Ln( abs( (a[j+num]-cen[k,j])/sigma[k,j]) )*

myu[k,i]/sqr(1+exp(Ln(abs((a[j+num]-cen[k,j])/sigma[k,j]))*2*b[k,j]) );

end;ns(k,j,sc,ss,sb);

dec:=(vihod-a[num+1])*sc;

des:=(vihod-a[num+1])*ss;

deb:=(vihod-a[num+1])*sb;

cen[k,j]:=cen[k,j]-gc*dec;

sigma[k,j]:=sigma[k,j]-gs*des;

b[k,j]:=b[k,j]-gb*deb;

 end;//{k}

end;//{j}

end;//adjust_csb

procedure a_p;

var j:integer;norm:real;

begin

for j:=1 to m do norm:=norm+j;

norm:=1/norm;

for i:=1 to m do

for j:=1 to (nac+1) do

begin

p[i,j]:=j*norm;

p3[i,j]:=j*(norm+0.0001*i);

end;

end;

// adjust_p();

procedure adjust_p();

var l_s,l_d,i,j,k,l,r,k1,k2,k3:integer;

 dob,sum,dt,w,norm:real;

 hth,h,h3,hp:array[1..250,1..100]of real;

 dl:array[1..250]of real;

 pp,pp3:array[1..200]of real;

 htn:matrix;

begin

l:=nst;

norm:=0; for j:=1 to m do norm:=norm+j;

norm:=1/norm;

setsize(htn,l,(nac+1)*m);

// Формируем матрицу h

 for r:=1 to l do

 begin

 for i:=1 to m do

 begin

 h[r,(i-1)*(nac+1)+1]:=i*norm;

 w:=i*norm;

 for j:=1 to nac do

 begin

 dob:=1;sum:=0;

 for l_s:=1 to m do

 begin

 for l_d:=1 to nac do

 dob:=dob*1/(1+exp(Ln(abs((a[l_d]-cen[l_s,l_d])/sigma[l_s,l_d]))*2*b[l_s,l_d]) );

 sum:=sum+dob;

 end;

 h[r,(i-1)*(nac+1)+j+1]:=dob/sum;

 end;

 end;

 end;

for r:=1 to l do

for j:=1 to nac do

for i:=1 to m do

h[r,(j-1)*(nac+1)+i+1]:=h[r,(j-1)*(nac+1)+i+1]*a[r+(j-1)*nac+i];

for i:=1 to nst do

dl[i]:=a[nac+i];

for k1:=1 to m*(nac+1) do

for k2:=1 to m*(nac+1)do

begin

hth[k1,k2]:=0;

 for k3:=1 to l do

 hth[k1,k2]:=hth[k1,k2]+h[k1,k3]*h[k3,k1];

end;

setsize(htn,m*(nac+1),m*(nac+1));

for i:=1 to m*(nac+1) do

for j:=1 to m*(nac+1) do

htn.data[i-1,j-1]:=hth[i,j];

invers(htn);

for i:=1 to m*(nac+1) do

for j:=1 to m*(nac+1) do

hth[i,j]:=htn.data[i-1,j-1];

for i:=1 to m*(nac+1)do

for j:=1 to l do

begin

hp[i,j]:=0;

 for r:=1 to m do

 hp[i,j]:=hp[i,j]+hth[i,r]*h[r,j];

end;

for i:=1 to m*(nac+1) do

pp[i]:=0;

for i:=1 to m*(nac+1) do

begin

 for j:=1 to l do

 pp[i]:=pp[i]+hp[i,j]*dl[j];

end;

for i:=1 to m do

for j:=0 to (nac)do

p[i,j]:=pp[j+1+(i-1)*m];

end;//adjust_p();

// adjust_p3();

procedure adjust_p3();

var l_d,l_s,i,j,k,l,r,k1,k2,k3:integer;

 dob,sum,dt,w,norm:real;

 hth,h,h3,hp:array[1..250,1..100]of real;

 dl:array[1..250]of real;

 pp:array[1..200]of real;

 htn:matrix;

begin

l:=nst;

norm:=0; for j:=1 to m do norm:=norm+j;

norm:=1/norm;

setsize(htn,l,(nac+1)*m);

// Формируем матрицу h

 for r:=1 to l do

 begin

 for i:=1 to m do

 begin

 h[r,(i-1)*(nac+1)+1]:=i*norm;

 w:=i*norm;

 for j:=1 to nac do

 begin

 dob:=1;sum:=0;

 for l_s:=1 to m do

 begin

 for l_d:=1 to nac do

 dob:=dob*1/(1+exp(Ln(abs((a[l_d] cen[l_s,l_d])/sigma[l_s,l_d]))*2*b[l_s,l_d]) );

 sum:=sum+dob;

 end;

 h[r,(i-1)*(nac+1)+j+1]:=dob/sum;

 end;

 end;

 end;

for r:=1 to l do

for j:=1 to nac do

for i:=1 to m do

h[r,(j-1)*(nac+1)+i+1]:=h[r,(j-1)*(nac+1)+i+1]*a[r+(j-1)*nac+i];

for i:=1 to nst do

dl[i]:=a[nac+i+3];

for k1:=1 to m*(nac+1) do

for k2:=1 to m*(nac+1)do

begin

hth[k1,k2]:=0;

 for k3:=1 to l do

 hth[k1,k2]:=hth[k1,k2]+h[k1,k3]*h[k3,k1];

end;

setsize(htn,m*(nac+1),m*(nac+1));

for i:=1 to m*(nac+1) do

for j:=1 to m*(nac+1) do

htn.data[i-1,j-1]:=hth[i,j];

invers(htn);

for i:=1 to m*(nac+1) do

for j:=1 to m*(nac+1) do

hth[i,j]:=htn.data[i-1,j-1];

for i:=1 to m*(nac+1)do

for j:=1 to l do

begin

hp[i,j]:=0;

 for r:=1 to m do

 hp[i,j]:=hp[i,j]+hth[i,r]*h[r,j];

end;

for i:=1 to m*(nac+1) do

pp[i]:=0;

for i:=1 to m*(nac+1) do

begin

 for j:=1 to l do

 pp[i]:=pp[i]+hp[i,j]*dl[j];

end;

for i:=1 to m do

for j:=0 to (nac)do

p3[i,j]:=pp[j+1+(i-1)*m];

end;//adjust_p3();

// обучить нейросеть (START)

procedure TForm1.Button4Click(Sender: TObject);

const maxNit=1000;//Максимальное количество итераций

 eps=0.000000001;

var l,nc:integer;//l - номер центра; nc - количество центров;

 num,q:integer;//Количество итераций

 nIt:longint;

 sum,gama,pz,pz1,d,yP,x,sk:real; //y прогнозированное

 tsk_w,tsk_w3,tsk,tsk3:array[1..mM]of real;//отвечает за третий слой

 sm,fprov,f1,f2,s_sign,s_w,s_sign3,s_w3:real;// взвешенная сумма сигналов и весов

begin// обучить нейросеть

if stringGrid1.cells[0,1]<>''then

begin

//Проверка на введные вручную значения

i:=1;

 while (stringGrid1.cells[0,i]<>'')and(i<10000) do

 begin

 i:=i+1;

 s:=stringGrid1.cells[0,i];

 end;

n:=i-1;

// Проверка на знак десятичного разделителя -

// меняем "." или "," на decimalSeparator

while stringGrid1.cells[0,n]='' do

n:=n-1;

n:=i-1;

s:='';

 for q:=1 to n do

 begin

 s:=StringGrid1.Cells[0,q];

 for k:=1 to Length(s) do

 if (s[k]='.')or(s[k]=',') then s[k]:=decimalSeparator;

 a[q]:=strToFloat(s);

 end;

//---------------------------------------

// нелинейные параметры

gc:=u;

gs:=u;

gb:=u;

//линейные параметры

for j:=1 to m do

begin

 p[j,0]:=0;

p3[j,0]:=0;

end;

for i:=1 to m do

for j:=1 to nac do

begin

 p[i,j]:=1/nac;

p3[i,j]:=1/nac;

end;

//Задаем начальные условия (Начало)

for i:=1 to m do // по количеству входов

for j:=1 to nac do // по количеству правил

begin

cen[i,j]:=0.5*(a[j]+a[i]);

sigma[i,j]:=abs((a[j+1]-a[j])*(a[i+1]-a[i]));

b[i,j]:=1+0.01*a[i]/a[j];

cen3[i,j]:=0.5*(a[j]+a[i]);

sigma3[i,j]:=abs((a[j+1]-a[j])*(a[i+1]-a[i]));

b3[i,j]:=1+0.01*a[i]/a[j];

end;

//Задаем начальные условия (Конец)

nIt:=maxNit-10; // Отвечает за количество итераций

//--------------------------------------------------------------

//--------------------------------------------------------------

while(not(adjust))and(nIt<maxNit)do

begin

gama:=gama*0.9;

nIt:=nIt+1;

nnit:=i;

for num:=nac to nst-nac do //цикл по обучающей выборке

begin

// Первый слой

// прогноз на 1 шаг

 for i:=1 to nac do //цикл по входным переменным

 for j:=1 to m do //цикл по правилам

 myu[i,j]:=1/( 1+exp(Ln(abs((a[i+num]-cen[j,i])/sigma[j,i]))*2*b[j,i]) );

// Второй слой

// прогноз на 1 шаг

 for j:=1 to m do

 begin

 myu0[j]:=1;

 for i:=1 to nac do

 myu0[j]:=myu0[j]*myu[j,i]; //Пересечение правил

 end;

// Третий слой

// прогноз на 1 шаг

for j:=1 to m do

begin

tsk[j]:=p[j,0];

tsk3[j]:=p3[j,0]; // для прогноза на 3 шага

end;

for j:=1 to m do

for i:=1 to nac do

tsk[j]:=tsk[j]+p[j,i]*a[num+i-1];

for j:=1 to m do

tsk_w[j]:=tsk[j]*myu0[j];// y[k](x)*w[k]

// прогноз на 3 шагa

//tsk3:=p3[0];

//пятый слой

 f1:=0;

 for j:=1 to m do

 f1:=f1+tsk_w[j];

f2:=0;

for j:=1 to m do

f2:=f2+myu0[j];

gc:=gc*u;

gs:=gs*u;

gb:=gb*u;

fprov:=f1;

if f2>0 then fprov:=f1/f2;

adjust_csb(num,fprov); // Настройка нелинейных параметров

if f2>0 then

ap[num+1]:=f1/f2 else

ap[num+1]:=ap[num];

str(ap[num+1]:8:4,s);

stringGrid1.Cells[1,num+1]:=s;

str(a[num+1]-ap[num+1]:8:4,s);

stringGrid1.Cells[2,num+1]:=s;

end;//цикл по обучающей выборке

for num:=nac+3 to nst-nac-3 do //цикл по обучающей выборке (НА 3 ШАГА ВПЕРЕД)

begin

// Первый слой

 for i:=1 to nac do //цикл по входным переменным

 for j:=1 to m do //цикл по правилам

 myu3[i,j]:=1/( 1+exp(Ln(abs((a[i+num+3]-cen3[j,i])/sigma3[j,i]))*2*b3[j,i]) );

// Второй слой

 for j:=1 to m do

 begin

 myu03[j]:=1;

 for i:=1 to nac do

 myu03[j]:=myu03[j]*myu3[j,i]; //Пересечение правил

 end;

// Третий слой

for j:=1 to m do

tsk3[j]:=p3[j,0]; // для прогноза на 3 шага

for j:=1 to m do

for i:=1 to nac do

tsk3[j]:=tsk3[j]+p3[j,i]*a[num+i-1+3];

for j:=1 to m do

tsk_w3[j]:=tsk3[j]*myu03[j];// y[k](x)*w[k]

//пятый слой

 f1:=0;

 for j:=1 to m do

 f1:=f1+tsk_w3[j];

f2:=0;

for j:=1 to m do

f2:=f2+myu03[j];

gc:=gc*u;

gs:=gs*u;

gb:=gb*u;

if f2>0 then

begin

adjust_csb3(num,f1/f2); // Настройка нелинейных параметров

ap3[num+4]:=f1/f2;

end

else

ap3[num+4]:=ap3[num+3];

str(ap3[num+4]:8:4,s);

stringGrid1.Cells[3,num+1]:=s;

str(a[num+4]-ap3[num+4]:8:4,s);

stringGrid1.Cells[4,num+1]:=s;

end;//цикл по обучающей выборке (НА 3 ШАГА ВПЕРЕД)

adjust_p();// Настройка линейных параметров

adjust_p3();

end; // while not adjust

// ДЕЛАЕМ ПРОГНОЗ

//делаем прогноз на 1 шаг

for num:=nac+2 to n do

begin

// Первый слой

// прогноз на 1 шаг

 for i:=1 to nac do //цикл по входным переменным

 for j:=1 to m do //цикл по правилам

 myu[i,j]:=1/( 1+exp(Ln(abs((a[num-i]-cen[j,i])/sigma[j,i]))*2*b[j,i]) );

// Второй слой

// прогноз на 1 шаг

 for j:=1 to m do

 begin

 myu0[j]:=1;

 for i:=1 to nac do

 myu0[j]:=myu0[j]*myu[j,i]; //Пересечение правил

 end;

// Третий слой

// прогноз на 1 шаг

for j:=1 to m do

tsk[j]:=p[j,0];

for j:=1 to m do

for i:=1 to nac do

tsk[j]:=tsk[j]+p[j,i]*a[num-i];

for j:=1 to m do

tsk_w[j]:=tsk[j]*myu0[j];// y[k](x)*w[k]

//пятый слой

 f1:=0;

 for j:=1 to m do

 f1:=f1+tsk_w[j];

f2:=0;

for j:=1 to m do

f2:=f2+myu0[j];

if f2>0 then

ap[num+1]:=f1/f2

else ap[num+1]:=ap[num];

 ap[num+1]:=ap[num+1]+0.0001*(7-m);

str(ap[num+1]:8:4,s);

stringGrid1.Cells[1,num+1]:=s;

str(a[num+1]-ap[num+1]:8:4,s);

stringGrid1.Cells[2,num+1]:=s;

end;

stringGrid1.Cells[2,n+1]:='';

//Сделали прогноз на 1 шаг

//-------------------------------------------

//Делаем прогноз на 3 шага

for num:=nac+3 to n do //цикл по обучающей выборке (НА 3 ШАГА ВПЕРЕД)

begin

// Первый слой

 for i:=1 to nac do //цикл по входным переменным

 for j:=1 to m do //цикл по правилам

 myu3[i,j]:=1/( 1+exp(Ln(abs((a[num-nac+i]-cen3[j,i])/sigma3[j,i]))*2*b3[j,i]) );

// Второй слой

 for j:=1 to m do

 begin

 myu03[j]:=1;

 for i:=1 to nac do

 myu03[j]:=myu03[j]*myu3[j,i]; //Пересечение правил

 end;

// Третий слой

for j:=1 to m do

tsk3[j]:=p3[j,0]; // для прогноза на 3 шага

for j:=1 to m do

for i:=1 to nac do

tsk3[j]:=tsk3[j]+p3[j,i]*a[num+i-nac];

for j:=1 to m do

tsk_w3[j]:=tsk3[j]*myu03[j];// y[k](x)*w[k]

//пятый слой

 f1:=0;

 for j:=1 to m do

 f1:=f1+tsk_w3[j];

f2:=0;

for j:=1 to m do

f2:=f2+myu03[j];

if f2>0 then

ap3[num+3]:=f1/f2

 else ap3[num+3]:=ap3[num+2] ; ap3[num+1]:=ap3[num+1]+0.0001*(7-m);

str(ap3[num+3]:8:4,s);

stringGrid1.Cells[3,num+3]:=s;

str(a[num+3]-ap3[num+3]:8:4,s);

stringGrid1.Cells[4,num+3]:=s;

end;

stringGrid1.Cells[4,num+1]:='';

stringGrid1.Cells[4,num+2]:='';

stringGrid1.Cells[4,num]:='';sm:=9.5;

// Сделали прогноз на 3 шага

// вычисляем критерий СКО и САПП для прогноза на 1 и 3 шага

skoS:=0; skoP:=0;

skoP:=0; sko3P:=0;

ms:=0; mp:=0;

ms3:=0; mp3:=0;

sappS:=0;sappP:=0;sapp3s:=0;sapp3p:=0;

for i:=nac+3 to nst do

skoS:=skoS+sqr(a[i]-ap[i]);

skoS:=(skoS/(nst-nac-3));

Str(skoS:8:7,s);

edit3.Text:=s;

sappS:=0;

for i:=nac+1 to nst do

sappS:=sappS+abs(a[i]-ap[i])/a[i];

sappS:=sappS/(nst-nac-1);

str(sappS:8:7,s);

edit7.Text:=s;

 for i:=nst to n do

 skoP:=skoP+sqr(a[i]-ap[i]);

 skoP:=skoP/(n-nst);

 Str(skoP:8:7,s);

 edit4.Text:=s;

 for i:=nst to n do

 sappP:=sappP+abs(a[i]-ap[i])/a[i];

 sappP:=sappP/(n-nst);

 Str(sappP:8:7,s);

 edit8.Text:=s;

sko3S:=0;

for i:=nac+6 to nst do

sko3S:=sko3S+sqr(a[i]-ap3[i]);

sko3S:=sko3S/(nst-nac-6);

Str(sko3S:8:7,s);

edit1.Text:=s;

for i:=nac+6 to nst do

sapp3S:=sapp3S+abs(a[i]-ap3[i])/a[i];

sapp3S:=sapp3S/(nst-nac-6);

Str(sapp3S:8:7,s);

edit5.Text:=s;

 for i:=nst to n do

 sko3P:=sko3P+sqr(a[i]-ap3[i]);

 sko3P:=sko3P/(n-nst);

 Str(sko3P:8:7,s);

 edit2.Text:=s;

 for i:=nst to n do

 sapp3P:=sapp3P+abs(a[i]-ap3[i])/a[i];

 sapp3P:=sapp3P/(n-nst);

 Str(sapp3P:8:7,s);

 edit6.Text:=s;

end;//if sg1[0,1]<>''

end; // обучить нейросеть (конец)

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

begin

SaveNNS.InitialDir:='D:\CW';

SaveNNS.DefaultExt:='txt';

if SaveNNS.Execute then

begin

AssignFile(f4,SaveNNS.FileName);

Rewrite(f4);

writeln(f4,nns);

writeln(f4,nac);

writeln(f4,m);

 for i:=1 to m do

 for j:=1 to nac do

 writeln(f4,cen[i,j]:12:10);

for i:=1 to m do

 for j:=1 to nac do

 writeln(f4,sigma[i,j]:12:10);

 for i:=1 to m do

 for j:=1 to nac do

 writeln(f4,b[i,j]:12:10);

 for i:=1 to m do

 for j:=0 to nac do

 if j<=nac then

 writeln(f4,p[i,j])else begin

 end;

 for i:=1 to m do

 for j:=1 to nac do

 writeln(f4,cen3[i,j]:12:10);

 for i:=1 to m do

 for j:=1 to nac do

 writeln(f4,sigma3[i,j]:12:10);

 for i:=1 to m do

 for j:=1 to nac do

 writeln(f4,b3[i,j]:12:10);

 for i:=1 to m do

 for j:=0 to nac do

 if j<=nac then

 writeln(f4,p3[i,j])else begin end;

 CloseFile(f4);

end;//if

end;//Сохранить нейросеть (конец)

// RUN

procedure TForm1.Button9Click(Sender: TObject);

var s:string;

 l,nc:integer;//l - номер центра; nc - количество центров;

 num,q:integer;//Количество итераций

 nIt:longint;

 sum,gama,pz,pz1,d,yP,x,sk:real; //y прогнозированное

 tsk_w,tsk_w3,tsk,tsk3:array[1..mM]of real;//отвечает за третий слой

 f1,f2,s_sign,s_w,s_sign3,s_w3:real;// взвешенная сумма сигналов и весов

begin

 for q:=1 to n do

 begin

 s:=StringGrid1.Cells[0,q];

 for k:=1 to Length(s) do

 if (s[k]='.')or(s[k]=',') then s[k]:=decimalSeparator;

 a[q]:=strToFloat(s);

 end;

skoS:=0; skoP:=0;

skoP:=0; sko3P:=0;

ms:=0; mp:=0;

ms3:=0; mp3:=0;

sappS:=0;sappP:=0;sapp3s:=0;sapp3p:=0;

for num:=nac+2 to n do

begin

// Первый слой

// прогноз на 1 шаг

 for i:=1 to nac do //цикл по входным переменным

 for j:=1 to m do //цикл по правилам

 myu[i,j]:=1/( 1+exp(Ln(abs((a[num-i]-cen[j,i])/sigma[j,i]))*2*b[j,i]) );

// Второй слой

// прогноз на 1 шаг

 for j:=1 to m do

 begin

 myu0[j]:=1;

 for i:=1 to nac do

 myu0[j]:=myu0[j]*myu[j,i]; //Пересечение правил

 end;

// Третий слой

// прогноз на 1 шаг

for j:=1 to m do

tsk[j]:=p[j,0];



for j:=1 to m do

for i:=1 to nac do

tsk[j]:=tsk[j]+p[j,i]*a[num-i];

for j:=1 to m do

tsk_w[j]:=tsk[j]*myu0[j];// y[k](x)*w[k]

//пятый слой

 f1:=0;

 for j:=1 to m do

 f1:=f1+tsk_w[j];

f2:=0;

for j:=1 to m do

f2:=f2+myu0[j];

ap[num+1]:=f1/f2;

str(ap[num+1]:8:4,s);

stringGrid1.Cells[1,num+1]:=s;

str(a[num+1]-ap[num+1]:8:4,s);

stringGrid1.Cells[2,num+1]:=s;

end;

stringGrid1.Cells[2,n+1]:='';

//Сделали прогноз на 1 шаг

//-------------------------------------------

//Делаем прогноз на 3 шага

for num:=nac+3 to n do //цикл по обучающей выборке (НА 3 ШАГА ВПЕРЕД)

begin

// Первый слой

 for i:=1 to nac do //цикл по входным переменным

 for j:=1 to m do //цикл по правилам

 myu3[i,j]:=1/(1+exp(Ln(abs((a[num-nac+i]-cen3[j,i])/sigma3[j,i]))*2*b3[j,i]) );

// Второй слой

 for j:=1 to m do

 begin

 myu03[j]:=1;

 for i:=1 to nac do

 myu03[j]:=myu03[j]*myu3[j,i]; //Пересечение правил

 end;

// Третий слой

for j:=1 to m do

tsk3[j]:=p3[j,0]; // для прогноза на 3 шага

for j:=1 to m do

for i:=1 to nac do

tsk3[j]:=tsk3[j]+p3[j,i]*a[num+i-nac];

for j:=1 to m do

tsk_w3[j]:=tsk3[j]*myu03[j];// y[k](x)*w[k]

//пятый слой

 f1:=0;

 for j:=1 to m do

 f1:=f1+tsk_w3[j];

f2:=0;

for j:=1 to m do

f2:=f2+myu03[j];

ap3[num+3]:=f1/f2;

str(ap3[num+3]:8:4,s);

stringGrid1.Cells[3,num+3]:=s;

str(a[num+3]-ap3[num+3]:8:4,s);

stringGrid1.Cells[4,num+3]:=s;

end;

stringGrid1.Cells[4,num+1]:='';

stringGrid1.Cells[4,num+2]:='';

stringGrid1.Cells[4,num]:='';

// Сделали прогноз на 3 шага

// вычисляем критерий СКО и САПП для прогноза на 1 и 3 шага

skoS:=0; skoP:=0;

skoP:=0; sko3P:=0;

ms:=0; mp:=0;

ms3:=0; mp3:=0;

sappS:=0;sappP:=0;sapp3s:=0;sapp3p:=0;

for i:=nac+3 to nst do

skoS:=skoS+sqr(a[i]-ap[i]);

skoS:=(skoS/(nst-nac-3));

Str(skoS:8:7,s);

edit3.Text:=s;

sappS:=0;

for i:=nac+1 to nst do

sappS:=sappS+abs(a[i]-ap[i])/a[i];

sappS:=sappS/(nst-nac-1);

str(sappS:8:7,s);

edit7.Text:=s;

 for i:=nst to n do

 skoP:=skoP+sqr(a[i]-ap[i]);

 skoP:=skoP/(n-nst);

 Str(skoP:8:7,s);

 edit4.Text:=s;

 for i:=nst to n do

 sappP:=sappP+abs(a[i]-ap[i])/a[i];

 sappP:=sappP/(n-nst);

 Str(sappP:8:7,s);

 edit8.Text:=s;

sko3S:=0;

for i:=nac+6 to nst do

sko3S:=sko3S+sqr(a[i]-ap3[i]);

sko3S:=sko3S/(nst-nac-6);

Str(sko3S:8:7,s);

edit1.Text:=s;

for i:=nac+6 to nst do

sapp3S:=sapp3S+abs(a[i]-ap3[i])/a[i];

sapp3S:=sapp3S/(nst-nac-6);

Str(sapp3S:8:7,s);

edit5.Text:=s;

 for i:=nst to n do

 sko3P:=sko3P+sqr(a[i]-ap3[i]);

 sko3P:=sko3P/(n-nst);

 Str(sko3P:8:7,s);

 edit2.Text:=s;

 for i:=nst to n do

 sapp3P:=sapp3P+abs(a[i]-ap3[i])/a[i];

 sapp3P:=sapp3P/(n-nst);

 Str(sapp3P:8:7,s);

 edit6.Text:=s;

end;// RUN

end.

unit Unit2;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls, ExtCtrls, Mask,Grids;

type

 TForm2 = class(TForm)

 Button1: TButton;

 Button2: TButton;

 Splitter1: TSplitter;

 StaticText1: TStaticText;

 StaticText2: TStaticText;

 Bevel1: TBevel;

 Bevel2: TBevel;

 StaticText4: TStaticText;

 StaticText5: TStaticText;

 StaticText6: TStaticText;

 Edit1: TEdit;

 Edit2: TEdit;

 Edit3: TEdit;

 Edit4: TEdit;

 Memo1: TMemo;

 Label1: TLabel;

 Edit5: TEdit;

 Label2: TLabel;

 procedure Button2Click(Sender: TObject);

 procedure FormResize(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 procedure Button1Click(Sender: TObject);

 procedure Edit1KeyPress(Sender: TObject; var Key: Char);

 procedure Edit2KeyPress(Sender: TObject; var Key: Char);

 procedure Edit3KeyPress(Sender: TObject; var Key: Char);

 procedure Edit4KeyPress(Sender: TObject; var Key: Char);

 procedure FormPaint(Sender: TObject);

 procedure Edit5KeyPress(Sender: TObject; var Key: Char);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

var

 Form2: TForm2;

 // f: TextFile;

 //n,nst,nac,neps,nrp:integer;

 s:string;

 sw:array[1..20]of string;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.Button2Click(Sender: TObject);

begin //Закрыть форму

Form2.close;

end;

procedure TForm2.FormResize(Sender: TObject);

begin

Button2.Top:=Form2.ClientHeight-Button2.Height-8;

Button1.Top:=Form2.ClientHeight-Button2.Height*2-16;

end;

procedure TForm2.FormCreate(Sender: TObject);

var i:integer;

begin

edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

edit4.Text:='';

edit5.Text:='';

if nst>n then nst:=trunc(n/2);

str(Nst,s);

edit1.Text:=s;

if nac>nst then nac:=4;

str(Nac,s);

edit2.Text:=s;

if (neps<1)or(neps>1000)then neps:=10;

str(Neps,s);

edit3.Text:=s;

if(nrp<10)or(nrp>99)then nrp:=80;

str(Nrp,s);

edit4.Text:=s;

if (m>mM)or(m<1)then m:=5;

Form2.Memo1.Lines.Clear;

for i:=1 to nac do

Form2.Memo1.Lines[i-1]:=sw[i]+#13#10;

end;//Form2.create;

procedure TForm2.Button1Click(Sender: TObject);//Сохранить и выйти

begin

s:=edit1.Text;

nst:=abs(StrToInt(s));

if (nst>n)or(nst<2) then nst:=trunc(n/2);

s:=edit2.Text;

nac:=StrToInt(s);

s:=edit3.Text;

neps:=abs(StrToInt(s));

if (neps<1)or(neps>1000)then neps:=10;

s:=edit4.Text;

nrp:=StrToInt(s);

if(nrp<10)or(nrp>99)then nrp:=80;

s:=edit5.Text;

m:=StrToInt(s);

if (m>mM)or(m<1)then m:=5;

Form2.close;

end;//Сохранить и выйти (конец)

procedure TForm2.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13then

begin

s:=edit1.Text;

nst:=StrToInt(s);

if nst>n then nst:=trunc(n/2);

end;

if not(Key in [#8,'0'..'9'])then

Key:=#0;

end;

procedure TForm2.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13then

begin

s:=edit2.Text;

nac:=StrToInt(s);

if nac>nst then nac:=4;

end;

if not(Key in [#8,'0'..'9'])then

Key:=#0;

end;

procedure TForm2.Edit3KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13then

begin

s:=edit3.Text;

Neps:=StrToInt(s);

if (neps<1)or(neps>1000)then neps:=10;

end;

if not(Key in [#8,'0'..'9'])then

Key:=#0;

end;

procedure TForm2.Edit4KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13then

begin

s:=edit4.Text;

nrp:=StrToInt(s);

if(nrp<10)or(nrp>99)then nrp:=80;

end;

if not(Key in [#8,'0'..'9'])then

Key:=#0;

end;

procedure TForm2.FormPaint(Sender: TObject);

var i:integer;

begin

edit1.Text:='';

edit2.Text:='';

edit3.Text:='';

edit4.Text:='';

if nst>n then nst:=trunc(n/2);

str(Nst,s);

edit1.Text:=s;

str(Nac,s);

edit2.Text:=s;

if (neps<1)or(neps>1000)then neps:=10;

str(Neps,s);

edit3.Text:=s;

if(nrp<10)or(nrp>99)then nrp:=80;

str(Nrp,s);

edit4.Text:=s;

if(m<1)or(m>mM)then m:=5;

str(m,s);

edit5.Text:=s;

Form2.Memo1.Lines.Clear;

Form2.Memo1.Lines[0]:='Весовые коэфициенты при прогнозированнии на 1 шаг'+#13#10;

for i:=1 to nac do

begin

str(w[i]:6:5,sw[i]);

Form2.Memo1.Lines[i]:=sw[i]+#13#10;

end;

Form2.Memo1.Lines[nac+1]: =' Весовые коэфициенты при прогнозированнии на 3 шагa'+#13#10;

for i:=1 to nac do

begin

str(w3[i]:6:5,sw[i]);

Form2.Memo1.Lines[nac+i+1]:=sw[i]+#13#10;

end;

//Form2.Memo1.Lines[nac+1]:=form1.nnit+#13#10;

end;

procedure TForm2.Edit5KeyPress(Sender: TObject; var Key: Char);

begin

if key=#13then

begin

s:=edit5.Text;

m:=StrToInt(s);

if (m>mM)or(m<1)then m:=5;

end;

if not(Key in [#8,'0'..'9'])then

Key:=#0;

end;

end.

unit Unit3;

interface

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

 Dialogs, StdCtrls;

type

 TForm3 = class(TForm)

 Button1: TButton;

 procedure Button1Click(Sender: TObject);

 procedure FormResize(Sender: TObject);

 procedure FormActivate(Sender: TObject);

 procedure FormCreate(Sender: TObject);

 private

 { Private declarations }

 public

 { Public declarations }

 end;

 const cc=0; dd=24;

var

 Form3: TForm3;

 i,j,k:integer;

 max,min:real;

 var d,xlong,ylong,u0x,u0y,w,h,wm,hm:integer;

 s,inform:string;

implementation

uses Unit1;

{$R *.dfm}

//close

procedure TForm3.Button1Click(Sender: TObject);

begin

form3.Close;

end;

//fi

function fi(g:real):integer;

var h:real;

begin

h:=u0x-(g-min)*u0x/(max-min);

fi:=trunc(h);

end;

//Resize

procedure TForm3.FormResize(Sender: TObject);

var h:integer;

begin

max:=0;

min:=10000;

for i:=1 to n do

begin

if a[i]>max then max:=a[i];

if a[i]<min then min:=a[i];

end;

Button1.Top:=Form3.ClientHeight-Button1.Height-8;

Form3.Refresh;

wm:=Form3.clientWidth;

hm:=Form3.clientHeight;

d:=1;

//Область рисования графика

with form3.canvas do

begin

Pen.color:=clblack;

Brush.Color:=clWhite;

Brush.Style:=bsSolid;

u0x:=hm-32-button1.height;

u0y:=32;

rectangle(dd,cc,wm-8,hm-16-button1.height);

xlong:=wm-u0y-16;

ylong:=u0x-8;

if n=0 then n:=1;

d:=trunc(xlong/n);

if d=0 then d:=1;

Pen.color:=clgreen; //вывод а

moveTo(u0y,fi(a[1]));

for i:=2 to n do

begin

moveTo(u0y+d*(i-1),fi(a[i-1]));

lineTo(u0y+d*i,fi(a[i]));

end;

Pen.color:=clred; //вывод ар

for i:=nac+3 to n do

begin

moveTo(u0y+d*(i-1),fi(ap[i-1]));

lineTo(u0y+d*i,fi(ap[i]));

end;

//вывод сетки и подписей

i:=trunc(min/10);

j:=trunc(max/10);

k:=i*10+5;

j:=j*10;

font.color:=clBlack;

font.Size:=14;

while k<=j+1 do

begin

inform:=IntTostr(k);

TextOut(1,fi(k),inform);

k:=k+5;

end;

font.Size:=10;

TextOut(Button1.Width+20,u0x+20,'Имя файла: '+fname);

TextOut(Button1.Width+20,u0x+40,'Зеленый - реальные данные; красный - спрогнозированные');

end;//with form3.canvas do

end;//form3.Resize

//Form3.active

procedure TForm3.FormActivate(Sender: TObject);

begin

max:=0;

min:=10000;

for i:=1 to n do

begin

if a[i]>max then max:=a[i];

if a[i]<min then min:=a[i];

end;

Button1.Top:=Form3.ClientHeight-Button1.Height-8;

Form3.Refresh;

wm:=Form3.clientWidth;

hm:=Form3.clientHeight;

d:=1;

//Область рисования графика

with form3.canvas do

begin

Pen.color:=clblack;

Brush.Color:=clWhite;

Brush.Style:=bsSolid;

u0x:=hm-32-button1.height;

u0y:=32;

rectangle(dd,cc,wm-8,hm-16-button1.height);

xlong:=wm-u0y-16;

ylong:=u0x-8;

if n=0 then n:=1;

d:=trunc(xlong/n);

if d=0 then d:=1;

Pen.color:=clgreen;

moveTo(u0y,fi(a[1]));

for i:=2 to n do

begin

moveTo(u0y+d*(i-1),fi(a[i-1]));

lineTo(u0y+d*i,fi(a[i]));

end;

Pen.color:=clred;

for i:=nac+3 to n do

begin

moveTo(u0y+d*(i-1),fi(ap[i-1]));

lineTo(u0y+d*i,fi(ap[i]));

end;

//вывод сетки и подписей

i:=trunc(min/10);

j:=trunc(max/10);

k:=i*10+5;

j:=j*10;

font.color:=clBlack;

font.Size:=14;

while k<=j+1 do

begin

inform:=IntTostr(k);

TextOut(1,fi(k),inform);

k:=k+5;

end;

font.Size:=10;

TextOut(Button1.Width+20,u0x+20,'Имя файла: '+fname);

TextOut(Button1.Width+20,u0x+40,'Зеленый - реальные данные; красный - спрогнозированные');

end;//with form3.canvas do

end; // form3.active

procedure TForm3.FormCreate(Sender: TObject);

begin

end;

end.

unit matrices;

interface

Uses SysUtils;

type

 Matrix = record

 M, N : integer; { M - число строк, N - столбцов }

 Data : array of array of extended;

 end;

{$IFNDEF XP_CMATRIX}

{$DEFINE XP_MATRIX}

 TMap = array of integer;

{$ENDIF}

Vector = array of extended;

Procedure SetSize(var A:Matrix; M,N:integer); overload; {задание размера матрицы}

Procedure Zero(var A:Matrix); overload; {заполнение матрицы нулями }

Procedure E(var A:Matrix); overload; { единичная матрица }

Function Transpose(const A:Matrix):Matrix; overload; { транспонирование матрицы }

Function Add(const A,B:Matrix):Matrix; overload; { сложение матриц }

Function Sub(const A,B:Matrix):Matrix; overload; { вычитанние матриц }

Function Mul(const A,B:Matrix):Matrix; overload; { умножение матриц }

Function AddValue(const A:Matrix; Value:extended):Matrix; overload; { сложение матрицы с числом }

Function MulValue(const A:Matrix; Value:extended):Matrix; overload; { домножение матрицы на число }

Function Negate(const A:Matrix):Matrix; overload; { измненение знака элеметнов матрицы}

Procedure DeleteRow(var A:Matrix; Row:integer); overload; Procedure DeleteCol(var A:Matrix; Col:integer); overload; Procedure DeleteCross(var A:Matrix; Row:integer); overload; Procedure InsertRow(var A:Matrix; Row:integer); overload; Procedure InsertCol(var A:Matrix; Col:integer); overload; 

Function MapMatrix(const A:Matrix; const Map:TMap):Matrix; overload; Function UnmapMatrix(const A:Matrix; const Map:TMap):Matrix; overload; Function MapVector(const A:Matrix; const Map:TMap):Matrix; overload; 

Function UnmapVector(const A:Matrix; const Map:TMap):Matrix; overload; 

Function SubMatrix(const A:Matrix; const MapX,MapY:TMap):Matrix; overload; Function RangeMatrix(const A:Matrix; StartX,EndX,StartY,EndY:integer):Matrix; overload; 

Function Vectorize(const A:Matrix):Vector; overload; Function Unvectorize(const V:Vector):Matrix; overload; 

Function Inverse(const A:Matrix):Matrix; overload; Function Trace(const A:Matrix):extended; overload; 

Procedure JoinBottom(var A:Matrix; const B:Matrix); overload; 

Procedure JoinRight(var A:Matrix; const B:Matrix); overload; Procedure JoinDiag(var A:Matrix; const B:Matrix); overload; 

implementation

Procedure SetSize(var A:Matrix; M,N:integer);

var

i : integer;

Begin

A.M:=M;

A.N:=N;

SetLength(A.Data,M);

for i:=0 to M-1 do begin

SetLength(A.Data[i],N);

end;

End;

Procedure Zero(var A:Matrix);

 var

 i,j : integer;

 Begin

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do A.Data[i,j]:=0;

 End;

 Procedure E(var A:Matrix);

 var

 i : integer;

 Begin

 if (A.M<>A.N) then Raise Exception.Create('Попытка сформировать неквадратную единичную матрицу!');

 Zero(A);

 for i:=0 to A.M-1 do A.Data[i,i]:=1;

 End;

 Function Transpose(const A:Matrix):Matrix;

 var

 B : Matrix;

 i,j : integer;

 Begin

 SetSize(B,A.N,A.M);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[j,i]:=A.Data[i,j];

 Result:=B;

 End;

 Function Add(const A,B:Matrix):Matrix;

 var

 C : Matrix;

 i,j : integer;

 Begin

 if ((A.M<>B.M) or (A.N<>B.N)) then Raise Exception.Create('Размеры матриц при сложении не совпадают!');

 SetSize(C,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do C.Data[i,j]:=A.Data[i,j]+B.Data[i,j];

 Result:=C;

 End;

 Function Sub(const A,B:Matrix):Matrix;

 var

 C : Matrix;

 i,j : integer;

 Begin

 if ((A.M<>B.M) or (A.N<>B.N)) then Raise Exception.Create('Размеры матриц при сложении не совпадают!');

 SetSize(C,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do C.Data[i,j]:=A.Data[i,j]-B.Data[i,j];

 Result:=C;

 End;

 Function Mul(const A,B:Matrix):Matrix;

 var

 C : Matrix;

 i,j,k : integer;

 Begin

 if (A.N<>B.M) then Raise Exception.Create('Размеры матриц при умножении не совпадают!');

 SetSize(C,A.M,B.N);

 Zero(C);

 for i:=0 to A.M-1 do for j:=0 to B.N-1 do for k:=0 to A.N-1 do C.Data[i,j]:=C.Data[i,j]+A.Data[i,k]*B.Data[k,j];

 Result:=C;

 End;

 Function Inverse(const A:Matrix):Matrix;

 var

 i,j,k : integer;

 B : Matrix;

 sk, sz : extended;

 Begin

 if (A.N<>A.M) then Raise Exception.Create('Попытка вычислить обратную матрицу для неквадратной матрицы!');

 SetSize(B,A.M,A.M);

 Zero(B);

 for i:=0 to A.M-1 do B.Data[i,i]:=1;

 for i:=0 to A.M-1 do begin

 sk:=1/A.Data[i,i];

 for j:=0 to A.M-1 do if (i<>j) then begin

 sz:=sk*A.Data[j,i];

 for k:=0 to A.M-1 do A.Data[j,k]:=A.Data[j,k]-sz*A.Data[i,k];

 for k:=0 to A.M-1 do B.Data[j,k]:=B.Data[j,k]-sz*B.Data[i,k];

 end;

 for k:=0 to A.M-1 do A.Data[i,k]:=sk*A.Data[i,k];

 for k:=0 to A.M-1 do B.Data[i,k]:=sk*B.Data[i,k];

 end;

 Result:=B;

 End;

 Function Trace(const A:Matrix):extended;

 var

 i : integer;

 res : extended;

 Begin

 res:=0;

 if (A.N<>A.M) then Raise Exception.Create('Попытка вычислить след для неквадратной матрицы!');

 for i:=0 to A.M-1 do res:=res+A.Data[i,i];

 Result:=res;

 End;

 Procedure JoinBottom(var A:Matrix; const B:Matrix);

 var

 i,j,oldy : integer;

 Begin

 if (A.N<>B.N) then Raise Exception.Create('Невозможно объединить две матрицы по вертикали. Их размеры не совпадают!');

 oldy:=A.M;

 SetSize(A,A.M+B.M,A.N);

 for i:=0 to B.M-1 do for j:=0 to B.N-1 do A.Data[i+oldY,j]:=B.Data[i,j];

 End;

 Procedure JoinRight(var A:Matrix; const B:Matrix); { присоединение матрицы справа }

 var

 i,j,oldx : integer;

 Begin

 if (A.M<>B.M) then Raise Exception.Create('Невозможно объединить две матрицы по горизонтали. Их размеры не совпадают!');

 oldx:=A.N;

 SetSize(A,A.M,A.N+B.N);

 for i:=0 to B.M-1 do for j:=0 to B.N-1 do A.Data[i,j+oldX]:=B.Data[i,j];

 End;

Procedure JoinDiag(var A:Matrix; const B:Matrix); { присоединение матрицы в нижний правый угол }

var

 i,j,oldx,oldy : integer;

 Begin

 oldY:=A.M;

 oldX:=A.N;

 SetSize(A,A.M+B.M,A.N+B.N);

 for i:=0 to B.M-1 do for j:=0 to B.N-1 do A.Data[i+oldY,j+oldX]:=B.Data[i,j];

 for i:=0 to oldY-1 do for j:=oldX to A.N-1 do A.Data[i,j]:=0;

 for i:=oldY to A.M-1 do for j:=0 to oldX-1 do A.Data[i,j]:=0;

 End;

 Function Negate(const A:Matrix):Matrix;

 var

 i,j : integer;

 B : Matrix;

 Begin

 SetSize(B,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=-A.Data[i,j];

 Result:=B;

 End;

 Function AddValue(const A:Matrix; Value:extended):Matrix; { сложение матрицы с числом }

 var

 i,j : integer;

 B : Matrix;

 Begin

 SetSize(B,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j]+Value;

 Result:=B;

 End;

Function MulValue(const A:Matrix; Value:extended):Matrix; { домножение матрицы на число }

 var

 i,j : integer;

 B : Matrix;

 Begin

 SetSize(B,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j]*Value;

 Result:=B;

 End;

Procedure DeleteRow(var A:Matrix; Row:integer); { удаление строки }

 var

 i : integer;

 Begin

 if (Row>=A.M) then Raise Exception.Create('Попытка удалить из матрицы несуществующую строку!');

 SetLength(A.Data[Row],0);

 for i:=Row+1 to A.M-1 do A.Data[i-1]:=A.Data[i];

 SetLength(A.Data,A.M-1);

 dec(A.M);

 End;

Procedure DeleteCol(var A:Matrix; Col:integer); { удаление столбца }

 var

 i,j : integer;

 Begin

 if (Col>=A.N) then Raise Exception.Create('Попытка удалить из матрицы несуществующий столбец!');

 for i:=0 to A.M-1 do begin

 for j:=Col+1 to A.N-1 do A.Data[i,j-1]:=A.Data[i,j];

 SetLength(A.Data[i],A.N-1);

 end;

 dec(A.N);

 End;

Procedure DeleteCross(var A:Matrix; Row:integer); { удаление строки и столбца с заданным номером }

 Begin

 DeleteRow(A,Row);

 DeleteCol(A,Row);

 End;

Procedure InsertRow(var A:Matrix; Row:integer);

 var

 i : integer;

 Begin

 SetSize(A,A.M+1,A.N);

 for i:=A.M-1 downto Row do A.Data[i+1]:=A.Data[i];

 SetLength(A.Data[Row],A.N);

 for i:=0 to A.N-1 do A.Data[Row,i]:=0;

 End;

 Procedure InsertCol(var A:Matrix; Col:integer);

 var

 i,j : integer;

 Begin

 SetSize(A,A.M,A.N+1);

 for i:=0 to A.M-1 do begin

 for j:=A.N-1 downto Col do A.Data[i,j+1]:=A.Data[i,j];

 A.Data[i,Col]:=0;

 end;

 End;

Function MapMatrix(const A:Matrix; const Map:TMap):Matrix; { удаление заданных строк и столбцов }

 var

 i,j : integer;

 B : Matrix;

 CurValue : integer;

 Begin

 SetSize(B,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j];

 for i:=0 to length(Map)-2 do begin

 for j:=i to length(Map)-1 do if (Map[j]<Map[i]) then begin

 CurValue:=Map[j];

 Map[j]:=Map[i];

 Map[i]:=CurValue;

 end;

 end;

 for i:=length(Map)-1 downto 0 do DeleteRow(B,Map[i]);

 for i:=length(Map)-1 downto 0 do DeleteCol(B,Map[i]);

 Result:=B;

 End;

 Function MapVector(const A:Matrix; const Map:TMap):Matrix; { удаление заданных строк}

 var

 i,j : integer;

 B : Matrix;

 CurValue : integer;

 Begin

 SetSize(B,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j];

 for i:=0 to length(Map)-2 do begin

 for j:=i to length(Map)-1 do if (Map[j]<Map[i]) then begin

 CurValue:=Map[j];

 Map[j]:=Map[i];

 Map[i]:=CurValue;

 end;

 end;

 for i:=length(Map)-1 downto 0 do DeleteRow(B,Map[i]);

 Result:=B;

 End;

Function UnmapMatrix(const A:Matrix; const Map:TMap):Matrix; { восстановление матрицы до исходного размера}

 var

 i,j : integer;

 B : Matrix;

 CurValue : integer;

 Begin

 SetSize(B,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j];

 for i:=0 to length(Map)-2 do begin

 for j:=i to length(Map)-1 do if (Map[j]<Map[i]) then begin

 CurValue:=Map[j];

 Map[j]:=Map[i];

 Map[i]:=CurValue;

 end;

 end;

 for i:=0 to length(Map)-1 do InsertRow(B,Map[i]);

 for i:=0 to length(Map)-1 do InsertCol(B,Map[i]);

 Result:=B;

 End;

Function UnmapVector(const A:Matrix; const Map:TMap):Matrix; { восстановление количества строк матрицы до исходного размера}

 var

 i,j : integer;

 B : Matrix;

 CurValue : integer;

 Begin

 SetSize(B,A.M,A.N);

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do B.Data[i,j]:=A.Data[i,j];

 for i:=0 to length(Map)-2 do begin

 for j:=i to length(Map)-1 do if (Map[j]<Map[i]) then begin

 CurValue:=Map[j];

 Map[j]:=Map[i];

 Map[i]:=CurValue;

 end;

 end;

 for i:=0 to length(Map)-1 do InsertRow(B,Map[i]);

 Result:=B;

 End;

Function SubMatrix(const A:Matrix; const MapX,MapY:TMap):Matrix; { выделение подматрицы, содержащей заданные столбцы и строки }

 var

 i,j : integer;

 B : Matrix;

 Begin

 SetSize(B,Length(MapY),Length(MapX));

 for i:=0 to length(MapY)-1 do begin

 for j:=0 to length(MapX)-1 do B.Data[i,j]:=A.Data[MapY[i],MapX[j]];

 end;

 Result:=B;

 End;

Function RangeMatrix(const A:Matrix; StartX,EndX,StartY,EndY:integer):Matrix; { выделение подматрицы, содержащей заданный диапазон столбцов и строк }

 var

 i,j : integer;

 B : Matrix;

 Begin

 SetSize(B,EndY-StartY+1,EndX-StartX+1);

 for i:=StartY to EndY do begin

 for j:=StartX to EndX do B.Data[i-StartY,j-StartX]:=A.Data[i,j];

 end;

 Result:=B;

 End;

Function Vectorize(const A:Matrix):Vector; { преобразование матрицы в вектор, расположенный в памяти последовательно }

 var

 i,j,k : integer;

 V : Vector;

 Begin

 SetLength(V,A.M*A.N+2);

 V[0]:=A.M;

 V[1]:=A.N;

 k:=2;

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do begin

 V[k]:=A.Data[i,j];

 inc(k);

 end;

 Result:=V;

 End;

Function Unvectorize(const V:Vector):Matrix; { обратное преобразование: вектор в матрицу }

 var

 i,j,k : integer;

 A : Matrix;

 Begin

 SetSize(A,trunc(V[0]),trunc(V[1]));

 k:=2;

 for i:=0 to A.M-1 do for j:=0 to A.N-1 do begin

 A.Data[i,j]:=V[k];

 inc(k);

 end;

 Result:=A;

 End;

end.