przewodnikPoPakiecieR5

przewodnikPoPakiecieR5



122

pazuRrry

2.6.5 Szukanie maksimum/minimum/zer funkcji

Popularnym zagadnieniem w matematyce jest zagadnienie optymalizacji, a więc szukanie minimum lub maximum jakiejś funkcji, ewentualnie szukanie jej miejsc zerowych. W R jest wiele funkcji, które można wykorzystać do tego celu. Poniżej omówimy funkcje optimize(stats) (również występująca pod nazwą optimiaeCstats)) i uniroot(stats). Pierwsza z nich wyznacza ekstrema, druga wyznacza miejsca zerowe. W obu przypadkach, jeżeli rozwiązań jest więcej niż jedno, to wyznaczane jest dowolne. Deklaracje tych funkcji są następujące:

optimize(f * , interwal *■ ,    .... lower = min(interval),

upper = raaxCinterwal), maximum *> FALSE, tol = .MachineSdouble.eps“0.25)

m

uniroot(f, interwal, ..., lower = min(interval), upper = max(interval), f.lower = f(lower, ...), f.upper = f(upper, ...), tol = .Machine$double.eps~0.25, maxiter = 1000)

.m.

Argumentami obu funkcji są: f czyli funkcja, dla której szukane mają być ekstre-ii; ina/miejsca zerowe, interval określający na jakim przedziale wyznaczane ma być , -ekstremum/miejsce zerowe. Dodatkowo, w funkcji optimizeO można określić czy poszukujemy maksimum czy minimum (argument marimum) a w funkcji unirootO można wskazać maksymalną liczbę iteracji do wykonania (argument maxiter).

Do badanej funkcji f można przekazać również dodatkowe argumenty. Poniżej ■ przykład użycia obu funkcji.

>    # funkcja do badania

>    f <- function(x, wyznacznik) <(x - 7)“wyznacznik - x}

>    # szukamy minimum na przedziale -1, 10, określamy też dodatkowy

argument dla funkcji f, czyli wyznacznik

>    optimizeCf, interval»c(-l,10), wyznacznik * 2)

$minimum

Ul 7.6

$objective Cl] -7.25

>    # jak powyżej, a z użyciem funkcji uniroot

>    uniroot(f, interval“c(-l,10), wyznacznik « 2)

$root

[1] 4.807418 $f.root

Cl] -4.69523e-06 $iter Cl] 8

$estim.prec Cl] 6.1Ó3516e-0S

Inne, bardziej zaawansowane funkcje do szukania ekstremów to optim(stats) i nlm(stats).

Wybrane funkcje matematyczne

123


2.6-6 Rachunek różniczkowo—całkowy

Rozdział ten zakończymy przykładami funkcji do różniczkowania i całkowania. Róż-: niczkować można korzystając z funkcji D(stats) lub deriv(stats). Obie funkcje fS wyznaczają symbolicznie pierwszą pochodną, ale różnią się one sposobem podania argumentu do zróżniczkowania. W przypadku funkcji D(stats) argument powinien być klasy expression a w przypadku funkcji deriv() argument powinien być f formułą bez określonej lewej strony. Wielomiany można też różniczkować funkcją deriv(polyuom) opisaną w rozdziale poświęconym wielomianom.

Poniżej przedstawiamy przykład użycia obu funkcji.

>    tt wyznaczamy pochodną z funkcji 3(x-2)~2 - 15

' > D(expre3Sion(3»(x-2)“2-15),"x") tt wynik jest klasy 'cali’

3 * (2 * (x - 2))

>    tt raz jeszcze policzmy pochodną tej funkcji, teraz funkcją deriuO

>    (wyraz = deriv(“(x-2)“2+15,"x”)) tt wynik jest klasy expression‘ expression({

. exprl <- x - 2 ; .value <- .exprl“2 + 15

.grad <- arrayCO, c(length(.value) , 1L) , listCNOLL, c("x")))

.gradf, "x"] <- 2 * .exprl attr(.value, "gradient") <- .grad .value

■»

>    # policzmy u/artość tej pochodnej ui punktach 1, 2 i 3 :> **1:3

_ > eval(wyraz) tt w punkcie x=2 pochodna się zeruje\

[13 16 15 16 attr(,"gradient") x

E1J -2 , (2,3    0

. [3,3    2

Do całkowania można wykorzystać funkcję integrate(stats). Wyznacza ona numerycznie całkę na określonym, niekoniecznie skończonym, przedziale.

>    tt policzmy całkę z gęstości rozkładu normalnego na dodatniej półprostej

>    integrate(dnorm, 0, Inf)

0.5 with absolute error < 4.7e-05

>    tt policzmy całkę z odrobinę bardziej skomplikowanej funkcji

>    integrate(function(x) sin(x)“2, 0, 600) i,300.0221 with absolute error < 0.0087

>    tt na półprostej ta całka nie istnieje •> integrate(function(x) sin(x)“2, 0, Inf)

.Error in integrate(function(x) sin(x)“2, 0, Inf) : the integral is probably divergent

Do t akich rzeczy, zdecydowanie lepiej używać pakietu Mathematica.


W R dostępne są też funkcje do rozwiązywania równań różniczkowych. Więcej informacji można znaleźć w opisach funkcji rk4(odesolve) i lsoda(odesolve).


Wyszukiwarka

Podobne podstrony:
przewodnikPoPakiecieR6 84 pazuRrry P Klasa może zawierać również funkcje. Szczególnie przydatne je
przewodnikPoPakiecieR6 84 pazuRrry Klasa może zawierać również funkcje. Szczególnie przydatne jest
5 22 >4. _ ma Średnia Licznik Maksimum Minimum Więcej funkcji...
5 22 >4. _ ma Średnia Licznik Maksimum Minimum Więcej funkcji...
EX 1 2 Z - z Suma Średnia Zliczanie Maksimum Minimum Więcej funkcji... -1-T-J
lim = a właściwa / lim = +/-inf niewłaściwa Ekstrema globalne funkcji maksimum: minimum:
070(1) § 4. Maksimum i minimum, czyli ekstrema funkcji Wartość funkcji f(x) w punkcie x0 nazywamy ma
przewodnikPoPakiecieR0 92 pazuRrry Przykłady wywołań tej funkcji znaleźć można w rozdziale 1.6.5. W
przewodnikPoPakiecieR0 112 pazuRrry Błędy i ostrzeżenia mogą zgłaszać też nasze programy. Funkcje s
przewód pokarmowy ISok trzustkowy funkcja egzokrynna Sok trzustkowy jest wydzielany do K i E R O W
przewodnikPoPakiecieR4 120 pazuRrry Wielomiany Legendre’a stopnia 0 — - stopnia 1 • • • stopnia 2 .
Całkowanie funkcji Liczenie całki z /(x), to szukanie takiej funkcji </(x), że jej pochodna jest

więcej podobnych podstron