10
Obliczenia symboliczne i optymalizacja numeryczna w GNU R
Posted under analiza danych, GNU R by Artur SuchwałkoSystem R potrafi (w bardzo ograniczonym zakresie) wykonywać obliczenia symboliczne. Oto przykład:
D(expression(x^2+3),'x')
W tym przykładzie wyznaczana jest pochodna wyrażenia x^2 + 3 względem zmiennej x.
W podobny sposób można stworzyć funkcję, która umożliwia łatwe numeryczne wyznaczanie pochodnych funkcji podanej symbolicznie:
funkcja <- deriv((y ~ x^2 + .5 * x^4), "x", func = TRUE)
Z nowej funkcji korzystamy jak z każdej innej: funkcja(0). Uwaga: nowa funkcja nie składa się z pochodnych cząstkowych funkcji podanej symbolicznie, ale umożliwia wyznaczanie tych pochodnych oraz wartości wyjściowej funkcji. Bardziej złożony przykład powinien wyraźniej pokazać przewagę wariantu z pochodnymi liczonymi symbolicznie.
Symboliczne wyznaczanie pochodnych znajduje zastosowanie w optymalizacji numerycznej. Umożliwia to zastosowanie bardziej zaawansowanych i skutecznych metod, na przykład nlm i optim. Oto przykład porównujący optymalizację z wykorzystaniem symbolicznie wyznaczonej pochodnej:
nlm(funkcja, 3)
oraz bez niej:
funkcja.num <- function(x) {x^2 + .5 * x^4}
nlm(funkcja.num, 3)
Jak widać, oszczędzamy jedną / połowę iteracji.
