pazuRrry
Wybrane funkcje matematyczne
119
Ponieważ polecenie wykonania jest. zwykłym obiektem klasy cali), to może <jWgl być przekazywane jako argument funkcji, zapisywane do plików itp. Efekt podobaj ny do złożenia funkcji callO i eval() ma funkcja do. cali (basa). Wywołuje określoną funkcję ze wskazanymi argumentami. Również w tym przypadku nuży funkcji jest zwykłym napisem, co umożliwia jej dynamiczne konstruowanie. Przy rżyjmy się poniższemu przykładowi.
*■
> tt dynamicznie tworzymy nazwy funkcji do wywołania
> (nazwyFunkcji = pasteCr", cCunif”, "norm", "exp"),
Cl] "runif" "rnorm" "rexp"
> tt wywołujemy te funkcje przekazując do nich dodatkowe argumenty
> sapply(nazwyFunkeji, FUN-do.cali, list(4))
runif rnorm rexp
0.55210300 1.0712174 3.3269195
0.3055000 0.6680466 -1.1005831 0.6848731 0.6977821 0.5723458
sep-""))
0.34391913 0.78100916 0.24982938
2.6 Wybrane funkcje matematyczne
W R znaleźć można wiele specjalizowanych mniej i bardziej popularnych funkcji';.® matematycznych. W poniższych podrozdziałach przedstawimy kilka przykładowycłf^ rodzin funkcji. Uczciwie zaznaczamy, że jest to jedynie część znacznie obszerniejszego V,, zbioru zaimplementowanych w R funkcji matematycznych.
W pakiecie polynom zebrane są fimkcje do operowania na wielomianach. W tabeli v 2.13 przedstawione są najprzydatniejsze funkcje z tego pakietu a poniżej przedsta*^| wiono przykład wywołania tych funkcji.
(pl “ polynomial(c(2,0,1)))
+ x‘2
f52 - polynomial(c(2,2,1,1))) +P2łx + x"2 + x*3 vpi+p2
mnożyć, dzielić +. 2*x + 2*x*2 + x“3 integral(pl,c(0,l))
1] 2.333333
deriv(p2)
+ 2»x + 3*x"2 poły.calc(c(-l,1))
’ t x‘2
“> polycalc(c(0,2,4), c(3,2,3)) ' '"'4 0.25«x‘2 ’solvo(p2)
[1] -1+0.0000001 0-1.4142141
> LCM(pl,p2)
' x“3
tt określamy pierwszy wielomian
tt określamy drugi wielomian
tt wielomiany możemy dodawać, odejmować.
tt wielomiany możemy całkować
tt różniczkować
tt możemy je wyznaczać wskazując ich zera
tt szukać interpolacji w różnych punktach
tt możemy szukać żer wielomianów 0+1.4142141
tt najmniejsza wspólna wielokrotność
2 + 2*x + x~2 > GCDCpi,p2)
2 + x'2
tt największy wspólny dzielnik
W pakiecie orthopolynom zebraue są funkcje wyznaczające bazy wielomianów or-.. . togonalnych. W pakiecie tym dostępnych jest wiele baz wielomianów (Czebyszewa, Gegenbauera, Hermite’a, Laguerre’a, Jacobiego i wiele innych). Poniżej przedstawiali my przykład kilku operacji na wielomianach Legendre’a.
' W tym pakiecie do wyznaczenia wielomianów Legendre’a służyć mogą dwie funkcje. Funkcja legendre.polynomials(orthopolynom) wyznacza elementy bazy wielomianów na odcinku [-1,1]) a funkcja slegendre-polynomials(orthopolynom) wyznacza elementy bazy wielomianów na odcinku [0,1]. Pierwszym argumentem tych funkcji jest maksymalny stopień wielomianu, drugim argumentem (o nazwie normalized) jest informacja, czy wielomiany mają być normalizowane czy nie, czyli czy chcemy mieć bazę ortogonalną czy ortonormalną. Poniżej przedstawiamy przykładowa operacje na wielomianach Legendre’a i wykres dla pierwszych pięciu wielomianów.
W
Tabela 2.13: Lista wybranych funkcji z pakietu polynom
polynomial(wsp) |
Ta funkcja pozwala zbudować wielomian przez podanie wspóiezyn-||; ników wsp tego wielomianu (począwszy od wyrazu wolnego). |
integral(poi, lim) deriv(pol) |
Ta funkcja całkuje wielomian poi w określonych granicach lira. ^ Ta funkcja liczy pochodną wielomianu poi. |
poły.cale(x), poły-calc(x,y) |
Ta funkcja wyznacza wielomian o możliwie najmniejszym stopniu,' , o zerach w punktach x (jeżeli podany będzie tylko jeden argument); 5 lub wielomian przechodzący przez punkty x, y (jeżeli podane będą' dwa argumenty). |
GCD(poil, pol2) |
Ta funkcja wyznacza najmniejszy wspólny dzielnik dwóch wielhS j mianów. |
LCM(poll, pol2) |
Ta funkcja wyznacza najmniejszą wspólną wielokrotność dwócfji wielomianów. |
| solv©(pol), polyroot(poi) |
Ta funkcja wyznacza zera danego wielomianu (dla wielomianów j zespolonych wyznacza pierwiastki tego wielomianu). |
> llbrary(orthopolynom)
> tf wyznaczamy pierwsze 5 wielomianów Legendre'a, wybieramy bazę na [0,1], P wielomiany są normalizowane
> Nmax - 5
> (wielomiany = slegendre.polynomials(Nmax, normalized=TRUE))
■