Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Стохастический_мир.pdf
Скачиваний:
112
Добавлен:
16.03.2016
Размер:
2.96 Mб
Скачать

254

Глава 9.

9.5Ошибки вычислений и ускорение сходимости

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

1)Конечность выборки

2)Конечность временного шага

3)Ошибки округлений

Статистические ошибки конечности выборки достаточно хорошо контролируемы при помощи соотношений, приведенных в разделе x9.2. Ïðè

расч¼те любой интегральной величины v (среднее, квадрат среднего, и

т.д.) необходимо вычислять также выборочную волатильность ~v ýòîé

величины. Стандартная ошибка, которую мы будемpïîлучать для выборочного среднего v~ по n экспериментам, равна ~v= n. При необходимо-

сти можно определить доверительные интервалы, в которые с заданной достоверностью попадает истинное среднее значение.

Простым рецептом проверки наличия ошибок округления может быть переход от двойной точности double к одинарной oat äëÿ òèïà Float. Если результаты при этом изменяются несущественно (на той же последовательности случайных чисел), то вс¼ нормально. Так как мы определили тип Float в начале файла stat.cpp, для подобной проверки достаточно изменить только одну строку.

Рассмотрим теперь величину ошибок, связанных с конечностью временного шага в итерационной схеме. Чтобы статистические ошибки не мешали, воспользуемся следующим при¼мом. Как известно, конкретная траектория винеровского процесса полностью определяет любую траекторию диффузного процесса, если е¼ изменения стоят в стохастическом члене дифференциального уравнения (порождающий процесс: стр. 72).

Для процессов, точные решения которых выражаются явным видом через винеровскую переменную x = f(t; Wt), можно вычислить среднюю абсолютную ошибку расхождения точного решения и численного:

E = jx(tk) xexact(tk)j

Для этого необходимо получить дискретную траекторию Винера при помощи последовательности случайных гауссовых величин "1; :::; "n è, èñ- пользуя их же, построить итерационную схему.

возникает благо-

Компьютерное моделирование

255

Для уравнения dx = a(x) dt + b(x) W базовая итерационная схе-

ма, которой мы пользовались на протяжении книги, называется схемой Эйлера : p

xk+1 = xk + ak t + bk "k t;

ãäå "k N(0; 1), à ak = a(xk), bk = b(xk). Естественно, сам Эйлер о стохастических уравнениях не слышал, а использовал подобное приближение для решения обыкновенных дифференциальных уравнений.

Чем меньше интервал времени t, тем ближе последовательность зна- чений случайного процесса xk = x(tk) находится к непрерывной траекто- ðèè xexact(t) в моменты времени tk. Если для обыкновенных дифференциальных уравнений уменьшение шага итерационной схемы для повышения точности решения обычно не вызывает особых сложностей, то в

стохастическом случае ситуация значительно сложнее. Чтобы получить среднее значение случайного процесса с относительной точностью 10 3,

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

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

 x5.6, ñòð. 148, при рассмотрении метода последовательных приближений мы получили следующую итерационную схему:

xk+1 = xk + ak t + bk "k p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

+ bk0

bk ("k2

1)

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

" 2

 

 

 

2 k#

 

 

 

 

 

 

+ bk0

ak "k

( t)3=2 + ak0 bk akbk0

 

 

"k +

p3

+ ak0 ak

( 2 ;

 

 

 

 

 

 

 

 

p

3

 

 

1

( t)3=2

 

t)2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ãäå a0k = a0(xk), b0k = b0(xk), а N(0; 1) случайная величина, статистически не зависящая от ". Добавление к схеме Эйлера второй строки

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

даря интегралу от винеровской траектории St, который, являясь случай-

ным процессом, зависит от формы Wt, поэтому не определяется только p

значением Wt = " t в момент времени t. Случайная величина пропорциональна площади отклонения от трапеции, соединяющей начальное и конечное значения винеровского процесса на интервале [t; t + t] (см.

x5.1, ñòð. 124).

256

Глава 9.

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

# include

" stat . cpp "

// ôàéë ñ RndG ( )

const int nex = 10000; // количество экспериментов

void main ()

 

 

 

 

 

 

{

 

 

 

 

 

 

 

SRnd ( time (0));

 

// " встряхиваем " генератор

Float

x0

=1;

 

 

// начальное значение x

Float

t0

=0 ,

t1 =1;

// начальное и конечное время

Float

err [ nex ];

// квадраты

ошибок

for ( Float dt =0.01;

dt >=0.0001;

dt *=0.1){

Float

sqrt_dt = sqrt ( dt );

 

 

for ( int

ex =0; ex < nex ; ex ++){

//

эксперименты

 

Float x=x0 , t=t0 , w =0;

 

 

 

while (t < t1 ){

 

 

 

 

 

Float

r =

RndG ();

 

 

 

 

x

+=

x* dt

+ x*r* sqrt_dt

+

0.5* x *( r*r -1)* dt

 

 

 

+

x*r* dt * sqrt_dt + 0.5* x* dt * dt ;

 

 

w

+=

r;

 

 

 

 

 

t

+=

dt ;

 

 

 

 

}

 

 

 

 

 

 

 

w *= sqrt_dt ;

 

 

 

 

err [ ex ]

= fabs (x - x0 * exp (w +0.5* t ));

}

 

 

 

 

 

 

 

Float av = Aver (err , nex );

 

 

Float

si

=

Sigma (err , nex )/ sqrt ( nex );

printf (" %12.8 f\t %12.8 f\t %12.8 f\n" ,dt ,av , si );

}

}

В данном случае использовано логарифмическое блуждание

dx = x dt + x W:

Во внешнем цикле происходит табулирование временного шага t. Далее

проводится nex экспериментов, для каждого из которых по итерационной схеме вычисляется значение случайного процесса в момент времени t1,

которое сравнивается с точным

x(t) = x0 eWt+t=2;

которое зависит от значения винеровской переменной w в тот же момент времени.

Компьютерное моделирование

257

Привед¼м результаты для логарифмического блуждания на интервале времени t = [0:::1]. Ниже в таблице приведены абсолютные отклонения

траектории процесса от точного решения для различных временных шагов t и итерационных схем. Усреднение ошибок проводилось по 10000

экспериментам:

Схема

t = 10 2

t = 10 3

t = 10 4

Эйлера EE

1.6 10 1

4.9 10 2

1.5 10 2

Милстейна EM

2.7 10 2

2.6 10 3

2.5 10 4

Модифицированная E2

8.7 10 3

9.0 10 4

9.0 10 5

При постоянном применении итерационной схемы ошибка со временем накапливается, и с ростом t достаточно быстро увеличивается. Этот рост

является экспоненциальным, и на интервале t = [0:5; :::; 3] для схем Эй-

лера, Милстейна и модифицированной Милстейна может быть аппроксимирован функциями:

EE = 0:39 e1:33 t ( t)1=2; EM = 0:61 e1:42 t t; E2 = 0:23 e1:34 t t:

Естественно, константы в этих функциях зависят от вида уравнения, однако экспоненциальная зависимость от времени и степенная от шага итерационной схемы являются достаточно универсальными. Таким образом: 1) с увеличением диапазона времени t ошибки накапливаются очень быст-

ро; 2) схемы Милстейна существенно лучше схемы Эйлера, их ошибка быстрее убывает с уменьшением интервала t.

Ниже приведен пример динамики ошибок в виде их натурального логарифма, как функции времени t для t = 10 2 è 10 3. Прямые линии

в этом масштабе означают экспоненциальную зависимость от t.

 

1

1.5

2

2.5

t

-2

 

 

 

t=0.01

 

 

 

 

 

 

-4

y = 1.35x - 6.13

 

 

t=0.001

 

 

 

 

 

 

 

 

 

 

ln E2 -6

y = 1.33x - 8.39

 

t=0.0001

 

 

 

 

 

 

-8

 

y = 1.33x - 10.68

 

 

 

 

 

 

 

-10

-12

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