Moduł Math::Trig

Uniwersytet Gdański - Instytut Matematyki - Zakład Informatyki - Strona domowa

Spis treści

  1. Co to jest
  2. Konspekt
  3. Funkcje trygonometryczne
  4. Dzielenie przez zero
  5. Ciekawostki
    1. Argument: liczba rzeczywista. Wynik: liczba zespolona.
    2. Jednostki miary kąta płaskiego.
  6. Dodatkowe informacje
  7. Autorka opisu

Co to jest

Moduł Math::Trig, jak mozna domyśleć się po nazwie, udostępnia szereg funkcji trygonometrycznych.
Napisany został przez 'typowego informatyka' - Jarkko Hietaniemi - zapalonego 'Perlowca', autora wielu innych modułów, współautora książki o tym języku, zafascynowanego brzmieniem wlasnego nazwiska przy pomocy Raphael Manfredi, który swego czasu napisał wiele modułów, a który w chwili obecnej jest jednym z głównych architektów oprogramowania gtk-gnutella.

Konspekt

use Math::Trig; $x = tan(0.9); $y = acos(3.7); $z = asin(2.4); $halfpi = pi/2; $rad = deg2rad(120); # Importuje stale pi2, pip2, pip4 (2*pi, pi/2, pi/4) use Math::Trig ':pi'; use Math::Trig ':radial'; use Math::Trig ':great_circle';

Funkcje trygonometryczne

Możemy korzystać z następujących funkcji trygonometrycznych:

Dzielenie przez zero

Jak przystało na funkcje trygonomotryczne niektórych z nich nie da obliczyć się w poszczególnych miejscach i tak też przy funkcjach następujących: acoth, acsc, acsch, asec, asech, atanh, cot, coth, csc, csch, sec, sech, tan, tanh należy uważać, by nie nastąpiło dzielenie przez zero będą też przez zerowy algorytm.

Mając dany kod: #!/usr/bin/perl -wl use Math::Trig; $a = cot(0); print $a; Otrzymujemy następujący błąd: cot(0): Division by zero.(Because in the definition of cot(0), the divisor sin(0) is 0)
Died at mathtrig.pl line 4.
Mając dany kod: #!/usr/bin/perl -wl use Math::Trig; $a = atanh(-1); print $a;
Otrzymujemy następujący błąd: atanh(-1): Logarithm of zero. Died at mathtrig.pl line 4. Dla csc, cot, asec, acsc, acot, csch, coth, asech, acsch argumentem nie może być zero.
Dla atanh, acoth argumentem nie może być jedynka, ani minus jedynka.
Dla tan, sec, tanh, sech argumentem nie może być pi/2 + k * pi, gdzie k jest jakąś stałą.

Ciekawostki

Argument: liczba rzeczywista. Wynik: liczba zespolona.

Przy próbach wpisywania różnorakich argumentów np. dla funkcji asin może zdarzyć się nieoczekiwana rzecz. Mając np. dany prosty kod:

#!/usr/bin/perl -wl use Math::Trig; print asin(2);
Otrzymujemy niespodziewany wynik:

[mmachows@manta][moduly]:D perl mathtrig.pl
1.5707963267949-1.31695789692482i

Dlaczego?

Dzieje się tak ponieważ Math::Trig korzysta z modułu Math::Complex obsługującego operacje na liczbach zespolonych.
asin(2) nie ma reprezentacji w świecie liczb rzeczywistych, natomiast w świecie liczb zespolonych jak najbardziej ma on racje bytu, gdzie 1.5707963267949 oznacza jego część rzeczywistą, natomiast -1.31695789692482i - część urojoną.

Jednostki miary kąta płaskiego.

Perl operuje domyślnie na radianach.
Jeśli natomiast chcemy używać innej miary do prezentowania jednostki miary kąta płaskiego możemy albo zrobić to sobie 'pod górkę' stosując wzory matematyczne:








i pisząc własne funkcje:

BEGIN { use constant PI => 3.14159265358979; sub deg2rad { my $degrees = shift; return ($degrees / 180) * PI; } sub rad2deg { my $radians = shift; return ($radians / PI) * 180; } }
Lub też skorzystać z 'gotowców', których dostarcza nam moduł Math::Trig:

use Math::Trig; $radians = deg2rad($degrees); $radians = grad2rad($gradians); $degrees = rad2deg($radians); $degrees = grad2deg($gradians); $gradians = deg2grad($degrees); $gradians = rad2grad($radians);

Dodatkowe informacje

Powyżej została przedstawiona charakterystyka tylko głównych możliwości tego modułu, zainteresownych zachęcam do zgłębienia wiedzy na jego temat odwiedzając stronę:http://search.cpan.org/~jhi/Math-Complex-1.37/lib/Math/Trig.pm lub czytając manual w terminalu wpisując: perldoc Math::Trig.

Autorka opisu

M.M.

Uniwersytet Gdański - Instytut Informatyki - Strona domowa - Perl - Wyklady
[c] Piotr Arłukowicz, materiały z tej strony udostępnione są na licencji GNU.