Ostatnie trzy wykłady poświęcimy numerycznemu całkowaniu funkcji
wielu zmiennych. Dokładniej, dla danej funkcji
chcemy obliczyć (przybliżyć) wartość
![]() |
Zakładamy, że powyższa całka istnieje.
W ogólniejszym sformułowaniu, chcielibyśmy obliczyć całkę
z wagą funkcji
, która jest postaci
![]() |
Waga jest tutaj nieujemna i całkowalna.
Zauważmy, że ograniczenie się w ostatnim przypadku do
nie zmniejsza ogólności, gdyż całkę po dowolnym mierzalnym
obszarze
można wymodelować przyjmując, że
waga
dla wszystkich
.
Zadanie całkowania funkcji wielu zmiennych ma ogromne znaczenie praktyczne i dlatego warto znać skuteczne metody numeryczne jego rozwiązywania.
Wycena obecnej wartości wielu instrumentów finansowych, w tym
tzw. opcji, opiera się na założeniu, że przyszłe ceny podlegają
losowym zmianom kolejnych odcinkach czasowych. Obecna wartość
opcji obliczana jest jako wartość oczekiwana funkcji wypłaty.
Odpowiada to obliczaniu całki oznaczonej funkcji zmiennych,
gdzie
jest liczbą odciników czasowych. Jest to często całka
ze standardową
wymiarową wagą gaussowską postaci
![]() |
przy czym jest (zwykle skomplikowaną) funkcją wypłaty na
końcu okresu, a
reprezentują czynniki losowe w kolejnych
odcinkach czasu. Wymiar
może wynosić nawet kilka tysięcy.
Z podstawowego wykładu z metod numerycznych każdy z nas wie jak numerycznie całkować funkcje jednej zmiennej. Stosowane metody w znakomitej większości przypadków sprowadzają się do scałkowania funkcji, która jest kawałkami wielomianem określonego stopnia interpolującym funkcję podcałkową. Pomysł ten może być uogólniony na przypadek funkcji wielu zmiennych. Aby jednak mówić o kwadraturach interpolacyjnych w wielu wymiarach, musimy najpierw zastanowić się nad rozwiązywalnością odpowiedniego zadania interpolacyjnego.
Niech
![]() |
Jeśli jest funkcją jednej zmiennej,
, to wielomian
![]() |
gdzie jest
-tym wielomianem Lagrange'a,
![]() |
(przy czym dla
)
jest stopnia co najwyżej
i interpoluje
w punktach
,
tzn. przyjmuje w tych punktach te same wartości co
. W przypadku
możemy podobnie zdefiniować ,,wielowymiarowe” wielomiany Lagrange'a.
W tym celu zakładamy, że na każdej współrzędnej dany jest przedział,
a w nim układ punktów
![]() |
Oznaczając przez odpowiednie wielomiany Lagrange'a jednej zmiennej
dla
-tego podziału, definiujemy wielomiany Lagrange'a
zmiennych jako
![]() |
dla wszystkich ,
. Dla skrócenia zapisu,
będziemy dalej używać zapisu wektorowego
,
a
będzie oznaczać, że nierówności zachodzą
dla każdej współrzędnej
,
. Podobnie,
.
Wielomiany należą do przestrzeni
wielomianów
zmiennych postaci
![]() |
gdzie są dowolnymi wsoółczynnikami rzeczywistymi.
Zauważmy, że
wtedy i tylko wtedy gdy
jest wielomianem stopnia co najwyżej
ze względu na każdą
zmienną
.
Jeśli wielomian zeruje się we wszystkich
punktach
,
, to
jest wielomianem
zerowym.
Dowód przeprowadzimy przez indukcję ze względu na wymiar .
Dla
lemat jest oczywiście prawdziwy, bo na podstawie
zasadniczego twierdzenia algebry niezerowy wielomian stopnia
co najwyżej
nie może mieć
różnych zer.
Niech . Niech
będą współczynnikami
wielomianu
. Dla ustalonej
zdefiniujmy wielomian
jako
![]() |
Wielomian ten zeruje się w punktach
. Zapisując go w postaci
![]() |
gdzie współczynniki
![]() |
oraz stosując założenie indukcyjne mamy, że
. A więc dla wszystkich wyborów
indeksów
wielomian jednej zmiennej
zeruje się w
punktach
. To zaś wymusza
dla wszystkich
i w konsekwencji
.
Lemat 13.1 wykorzystamy do pokazania następującego twierdzenia.
Wielomiany ,
, tworzą bazę
przestrzeni
. W szczególności,
.
Zauważmy, że podobnie jak w przypadku ,
![]() |
Stąd, jeśli kombinacja liniowa
jest wielomianem
zerowym to dla wszystkich
![]() |
czyli układ jest liniowo
niezależny. Z drugiej strony, układ ten rozpina
,
bo dla dowolnego wielomianu
z tej przestrzeni mamy
![]() |
(13.1) |
Rzeczywiście, w przeciwnym przypadku różnica wielomianu
i prawej strony (13.1) byłaby niezerowym wielomianem
w
, który zeruje się we wszystkich
punktach
. To zaś przczyłoby lematowi 13.1.
Stąd już jeden krok do następującego wniosku podsumowującego nasze dotychczasowe rozważania. Niech
![]() |
będzie wymiarowym prostokątem.
Dla dowolnej funkcji wielomian
![]() |
jest jedynym wielomianem w interpolującym
w punktach
tzn. takim, że
![]() |
dla wszystkich .
Zastanówmy się teraz jaki jest błąd otrzymanej interpolacji.
Dla uproszczenia będziemy od teraz zakładać, że jest kostką
wymiarową, tzn. wszystkie krawędzie mają tą samą długość,
którą oznaczymy przez
, a węzły na każdej współrzędnej
![]() |
gdzie
![]() |
jest pewną ustaloną siatką na odcinku jednostkowym.
W przypadku skalarnym, o ile funkcja jest
-krotnie
różniczkowalna w sposób ciągły, to
![]() |
przy czym zależy od
. Stąd w szczególności mamy
![]() |
(13.2) |
gdzie .
Aby wyprowadzić formułę na bład interpolacji w przypadku
wielowymiarowym, będziemy potrzebować pewnego prostego
uogólnienia ostatniego wzoru.
Załóżmy, że zamiast dokładnych wartości mamy jedynie
wartości przybliżone
takie, że błąd
![]() |
(13.3) |
Niech dalej będzie wielomianem stopnia co najwyżej
interpolującym dane przybliżone
w punktach
.
Ponieważ
jest wielomianem interpolującym dane
, na podstawie wzoru (13.1) mamy
![]() |
gdzie , a dla
![]() |
Stąd i z formuły na błąd interpolacji dla dokładnych danych otrzymujemy
![]() |
(13.4) |
Wprowadzimy jeszcze klasę funkcji
, które w całej swojej dziedzinie są
-krotnie
różniczkowalne w sposób ciągły ze względu na każdą zmienną.
Dla
definiujemy
![]() |
Niech .
Jeśli
to dla każdego
błąd interpolacji
![]() |
gdzie , a dla
![]() |
Rozpatrzymy tylko pozostawiając przypadek
jako
proste ćwiczenie.
Dla nierówność w tezie jest równoważna (13.2).
Załóżmy więc, że
. Ponieważ dla każdego ustalonego
wielomian
zmiennych
jest wielomianem interpolacyjnym
dla funkcji
zmiennych
,
na podstawie założenia indukcyjnego mamy
![]() |
(13.5) |
Zauważmy, że dla ustalonych z kolei pierwszych współrzędnych
wielomian
jest
wielomianem jednej zmiennej
interpoluącym funkcję jednej
zmiennej
w punktach
na podstawie
danych zaburzonych na poziomie
równym prawej stronie
(13.5). Stąd i z (13.4) ostatecznie otrzymujemy
![]() |
![]() |
![]() |
||
![]() |
![]() |
|||
![]() |
![]() |
Jesteśmy już dobrze uzbrojeni w mechanizm interpolacyjny
i możemy zdefiniować wielowymiarowe kwadratury interpolacyjne
dla całkowania funkcji zdefiniowanych na kostce
![]() |
Kwadratury te dane są równością
![]() |
(13.6) |
gdzie jest wielomianem interpolującym
w punktach
,
.
Chociaż postać (13.6) kwadratury znakomicie nadaje się do rozważań teoretycznych, nie jest jednak praktyczna ze względu na obliczenia. Zauważmy, że
![]() |
![]() |
![]() |
||
![]() |
![]() |
gdzie jest
-tym wielomianem Lagrange'a dla punktów
. Stąd, wprowadzając oznaczenie
![]() |
kwadraturę interpolacyjną można zapisać w postaci
![]() |
Zauważmy, że są współczynnikami jednowymiarowej
kwadratury interpolacyjnej
opartej na punktach
, przybliżającej całkę
. Mówiąc inaczej, zdefiniowana przez
nas wielowymiarowa kwadratura interpolacyjna jest
-produktem
tensorowym wybranej kwadratury jednowymiarowej.
Na koniec tego podrozdziału podamy oszacowanie błędu
kwadratury . Ponieważ
![]() |
z twierdzenia 13.2 natychmiast otrzymujemy następujący wniosek.
Jeśli to błąd kwadratury
interpolacyjnej
jest ograniczony przez
![]() |
Podobnie jak w przypadku funkcji jednej zmiennej, definiujemy
kwadratury złożone dla funkcji wielu zmiennych. Dla uproszczenia
zakładamy, że całkujemy po kostce jednostkowej .
Dla danego wprowadzamy podział kostki na
podkostek
![]() |
Następnie na każdej podkostce stosujemy prostą kwadraturę
interpolacyjną opartą na siatce regularnej składającej się
z punktów. Skonstruowaną w ten sposób kwadraturę
złożoną oznaczymy przez
.
Jeśli bazową kwadraturą jednowymiarową jest reguła punktu środkowego,
![]() |
to wynikową kwadraturą złożoną na jest
po prostu reguła prostokątów
![]() |
Nasze rozważania wieńczy twierdzenie o błędzie kwadratury złożonej, które natychmiast wynika z wniosku 13.2 oraz sposobu konstrukcji kwadratury.
Kwadratura złożona korzysta z co najwyżej
![]() |
wartości funkcji . Jeśli
to jej błąd
![]() |
Złożone kwadratury interpolacyjne mogą być z powodzeniem
stosowane dla niskich wymiarów, powiedzmy . Dla dużych
wymiarów
mają one bowiem tą niepożądaną własność,
że liczba węzłów rośnie wykładniczo szybko wraz z
zagęszczaniem siatki. Nawet jeśli weźmiemy po
punkty na
każdej współrzędnej to całkowita liczba punktów siatki
regularnej wyniesie
. Pamiętamy, że w wielu praktycznych
zastosowaniach
może sięgać nawet kilku tysięcy.
W takich przypadkach obliczenie wartości kwadratury jest
zadaniem praktycznie niewykonalnym.
To jednak nie koniec złych wiadomości. Przyjrzyjmy się
jeszcze błędowi złożonej kwadratury interpolacyjnej.
Twierdzenie 13.3 mówi, że błąd ten jest
ograniczony z góry proporcjonalnie do , gdzie
jest liczbą wszystkich użytych punktów. To drugi powód
do niepokoju, uzasadniony poniższym przykładem.
Załóżmy, że chcemy całkować funkcję zmiennych
i jako kwadraturę bazową stosujemy kwadraturę Simpsona,
dla której
. Górne ograniczenie błędu sugeruje,
że aby być pewnym wyniku z dokładnością
to
musimy obliczyć wartości funkcji w aż
punktach.
Czy naprawdę jest aż tak źle?
Rzeczywiście jest tak źle, a nawet gorzej. Okazuje się, że
rzędu zbieżości nie da się poprawić w klasie funkcji
. Mówi o tym następujące twierdzenie.
Istnieje o następującej własności.
Dla dowolnej aproksymacji całki wykorzystującej
wartości funkcji
można znaleźć funkcję
dla której
, a błąd aproksymacji całki wynosi co najmniej
.
Załóżmy, że dana aproksymacja całki oblicza wartości
funkcji w punktach ,
. Dowód twierdzenia
polega na konstrukcji dwóch funkcji,
i
, które
zerują się we wszystkich
(a tym samym ich całki
są aproksymowane tą samą liczbą), dla których
, ale różnica całek
![]() |
dla pewnej niezależnej od
i
. Wtedy, przynajmniej
dla jednej z tych funkcji błąd aproksymacji całki wynosi
co najmniej
.
Wybierzmy taką, że
i skonstruujmy na
regularną
siatkę składającą się z
kostek, każda o krawędzi
długości
.
Niech dalej będzie dowolną funkcją
-krotnie
różniczkowalną w sposób ciągły spełniającą
następujące warunki:
dla
,
dla
,
.
Każdej kostce
![]() |
naszej regularnej siatki przyporządkujemy funkcję
![]() |
Zauważmy, że oraz
![]() |
Jasne jest, że istnieje co najmniej multi-indeksów
(kostek) takich, że żaden z punktów
nie należy do wnętrza
. Oznaczmy zbiór
takich indeksów przez
i zdefiniujmy funkcje
![]() |
Wtedy obie funkcje zerują się w ,
, oraz
![]() |
Podstawiając dostajemy
ostatecznie
![]() |
Opisane zjawisko nosi nazwę przekleństwa wymiaru.
Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.
strona główna | webmaster | o portalu | pomoc
© Wydział Matematyki, Informatyki i
Mechaniki UW, 2009-2010. Niniejsze materiały są udostępnione bezpłatnie na licencji Creative Commons Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska.
Projekt współfinansowany przez Unię Europejską w ramach
Europejskiego Funduszu Społecznego.
Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.