Funkcje elementarne i anonimowe, wielomiany
Funkcje elementarne i anonimowe, wielomiany
Elementarne funkcje oraz takie tworzone przez użytkownika, wielomiany jako tablice/macierze współrzędnych.
W MATLABie istnieje bardzo wiele wbudowanych funkcji, dla nas najbardziej przydatne będą:
-
sqrt - pierwiastek
-
abs - wartość bezwzględna
-
exp - ex
-
log - logarytm naturalny
-
log2 - logarytm o podstawie 2
-
log10 - logarytm o podstawie 10
-
sin, cos, tan, cot , sec, csc - funkcje trygonometryczne
-
asin, acos, atan, acot, asec, acsc - funkcje cyklometryczne
-
sinh, cosh, tanh, coth, sech, csch - funkcje hiperboliczne
-
acosh, asinh, atanh, asech, acsch, acoth ‐ funkcje odwrotne do hiperbolicznych
Zadanie (1)
Wypróbuj następujące komendy:
>> sin(pi/6)
>> sin(5*pi/6) % zauważ, że argument podaliśmy w radianach, nie w stopniach!
>> asin(sin(5*pi/6))
>> asin(sin(5*pi/6))*180/pi % a tu przerabiamy wynik na stopnie
>> log2(16)+log10(0.0001)
>> exp(log(2))
>> log(exp(2))
>> abs(log10(0.0001))
>> exp(2)+2^(exp(2))
Bardzo często będziesz potrzebował własnych wzorów funkcji – do ich szybkiego definiowania służy konstrukcja zwana funkcją anonimową. Oto jej składnia:
f = @(lista_argumentów) wyrażenie;
Zadanie (2)
Wypróbuj następujące komendy:
>> kwadracik = @(x) x^2;
>> kwadracik(2)
>> kwadracik(6)
>> srednia = @(x,y) (x+y)/2;
>> srednia(4,8)
Napisz funkcję anonimową, która będzie obliczać wartość wg wzoru \(y=\frac{2}{\sqrt{|x|-4}}-\frac{6}{x^2-5x}\). Przetestuj poprawność jej działania dla kilku argumentów, w tym x=4 lub x=5.
Rozwiązanie
>> mojaFunkcja = @(x) 2/sqrt(abs(x)-4)-6/(x^2-5*x);
>> mojaFunkcja(3)
>> mojaFunkcja(4)
>> mojaFunkcja(5)
Wielomian w MATLABie jest reprezentowany jako wektor współczynników, np.: wektor p = [2,3,0,-4] reprezentuje wielomian 2x3+3x2–4.
Zadanie (3)
Wypróbuj następujące komendy:
>> p=[1,0,-2,-5]
>> polyval(p,2) % wartość wielomianu w punkcie x0=2
>> polyder(p) % pochodna wielomianu p
>> syms x; % x staje się zmienną symboliczną, bez ustalonej wartości
>> horner(x^3+x^2+x+1) % postać zagłębionych iloczynów
>> factor(x^3+x^2+x+1) % postać iloczynowa
>> expand((x+2*x^2)*(x-1)) % rozwinięcie iloczynu
>> q=[1, 2, 3]
>> conv(p,q) % wymnaża wielomiany p i q
>> [w,r] = deconv(p,q) % dzielenie p przez q (w - wynik, r - reszta)