W systemach komputerowych operujemy dyskretnym zbiorem liczb oraz każdy
taki zbiór jest skończony. W zastosowaniach praktycznych z wykorzystaniem
komputerów decydujące znaczenie mają metody numeryczne.
W rachunku różniczkowym najważniejszym pojęciem jest operator
pochodnej D (zapis Cauchy’ego) . Jego postać to:
W rachunku różnicowym najważniejszym pojęciem jest operator różnicy .
Jego postać to:
Operatory D i są funkcjami, które produkują funkcje. Gdy f(x) jest funkcją
gładką ze zbioru liczb rzeczywistych, to Df(x) też jest funkcją w tym zbiorze.
Tak samo, jeżeli f(x) jest jakąkolwiek funkcją w zbiorze liczb rzeczywistych, to
f(x) też będzie taką funkcją. Wartości Df i f w punkcie x są, więc określone
zgodnie z podanymi wzorami. W rachunku różniczkowym operator D ma
operator działający odwrotnie – całkę (symbol ). Związek pomiędzy całką a
pochodną ma postać:
Dla operatora różnicowego istnieje także operator odwrotny, antyróżnica (albo
suma) , ich relacje są następujące:
Rolę sumy nieoznaczonej dla funkcji g(x) pełni (…) , będąca klasą funkcji, dla
których różnica wynosi g(x). Symbol dla operatora pełni taką samą rolę jak
symbol d dla operatora D. Symbol C w przypadku sum nieoznaczonych oznacza
dowolną funkcję okresową p(x) taką, że p(x+1) = p(x). Przykład takiej funkcji to
np.:
48
Fizyka dla programistów gier
W rachunku różniczkowym, jeśli g(x)=Df(x) to mamy całkę oznaczoną:
W rachunku różnicowym istnieje także odpowiednik całki oznaczonej – suma
oznaczona, jeśli g(x)=f(x) to
Korzystając z podejścia prezentowanego w podręczniku „Matematyka
konkretna” (R.Graham, D. Knuth, O. Patashnik, PWN, 1996) omówimy w
skrócie własności sumy oznaczonej. Niech (jest to definicja operatora
różnicowego):
Jeżeli b = a to
Jeżeli b = a+1 to:
Ogólnie, jeżeli b zwiększy się o 1, to
Dzięki temu przykładowi, wiemy co dokładnie reprezentuje suma oznaczona
dla całkowitych a i b, spełniających warunek b a :
Suma oznaczona oznacza to samo, co zwykła suma, tyle, że pomijamy składnik
odpowiadający górnemu ograniczeniu.
ROZDZIAŁ 3
METODY NUMERYCZNE
3.1. Szereg Taylora ....................................................................................... 50
3.2. Proste metody całkowania numerycznego ............................................. 51
3.3. Rozwiązywanie równań różniczkowych zwyczajnych metodami
numerycznymi ............................................................................................... 62
50
Fizyka dla programistów gier
3.1. Szereg Taylora
Szeregi Taylora stanowią fundament metod numerycznych. Wiele technik
stosowanych w metodach numerycznych korzysta wprost z szeregów Taylora,
na przykład do oszacowania błędów.
Jeżeli funkcja f(x) ma n-tą pochodną f(n)(x) w pewnym domkniętym
przedziale zawierającym punkt a, wówczas dla każdego x z tego przedziału
mamy następujący wzór:
Jest to wzór Taylora. Ostatni wyraz we wzorze Taylora jest nazywany resztą
wzoru Taylora:
Jeżeli w szeregu Taylora przyjmiemy a = 0, to otrzymamy szereg Maclaurina:
Wykorzystamy szereg Maclaurina aby rozwinąć funkcje sin(x).
Zgodnie ze wzorem mamy:
Ponieważ sin(0) = 0 oraz cos(0) = 1, ostatecznie mamy:
3. Metody numeryczne
51
Rozwiniecie funkcji ex na szereg Maclaurina ma postać:
3.2. Proste metody całkowania numerycznego
W wielu przypadkach modelowania i symulacji zjawisk fizycznych nie
potrafimy scałkować funkcji analitycznie. W takich przypadkach posługujemy
się całkowaniem numerycznym. Metody numeryczne pozwalają oszacować
całki funkcji z dość dużą dokładnością. Numeryczne całkowanie jest także
podstawową metodą w przypadku, gdy chcemy oszacować całkę funkcji daną w
postaci dyskretnych punktów. Ze względu na wagę problemu, istnieje wiele
metod całkowania numerycznego, ale w naszym podręczniku opiszemy tylko te
najprostsze.
Wzór prostokątów
Jest to bardzo prosta metoda całkowania numerycznego. Oszacowanie całki
przy pomocy wzoru prostokątów (a i b są to granice całkowania, n – ilość
przedziałów):
ma postać:
,
Ulepszona metoda punktów środkowych (tzw. metoda midpoint) ma postać:
,
, x
i = x0 + hi, x0 = a
Implementacja funkcji do szacowania całek za pomocą wzoru prostokątów typu
midpoint prezentowana jest poniżej.
52
Fizyka dla programistów gier
Listing 3.1. Całkowanie numeryczne metodą midpoint
// calkowanie numeryczne, metoda midpoint
//a, b – granice calkowania, n – liczba podprzedzialow
double prost (double (*f) (double), double a, double b, int n)
{ double s=0, h=(b-a)/(double)n, h2=h/2, xi;
for (int i=1; i <=n; i++)
{ xi=a+i*h - h2;
s+=f(xi);
}
return s*h;
}
Pierwszym argumentem funkcji prost() jest wskaźnik do funkcji podcałkowej,
funkcja podcałkowa musi być dostarczona w postaci jawnej.
Zastosujemy funkcję z listingu 3.1. do oszacowania następującej całki
Prototyp funkcji prost wymaga wskaźnika do funkcji oraz liczby przedziałów n:
double prost (double (*f)(double), double a, double b, int n);
Postać funkcji podcałkowej jest następująca:
double fx(double x)
{ return x*x*x ;
}
Wywołanie funkcji ma postać:
prost(fx,0,1,5)
gdzie fx jest funkcją podcałkową, drugi argument jest dolną granicą całkowania
(a= 0), trzeci argument jest górną granicą całkowania (b=1), czwarty argument
jest liczbą przedziałów ( n= 5).
Program pokazany na listingu 3.2 szacuje naszą całkę metodą prostokątów z
opisanymi argumentami.
3. Metody numeryczne
53
Listing 3.2. Całkowanie numeryczne, metoda midpoint, funkcja x3
//metoda prostokatow, midpoint
#include <iostream.h>
#include <conio.h>
double prost (double (*f)(double), double a, double b, int n);
|