Mathematica
Mathematica – komercyjny system obliczeń symbolicznych i numerycznych opracowany w 1988 przez Stephena Wolframa. W ciągu swojego istnienia stał się popularny w środowisku naukowców i inżynierów.
Mathematicę charakteryzują wysoka wydajność, szerokie możliwości wizualizacji i prezentacji danych oraz przenośność. Obecnie jest dostępna na większość platform 32- i 64-bitowych.
Komercyjną konkurencją dla pakietu Mathematica jest Maple. Spośród wolnego oprogramowania podobne funkcje oferują programy Maxima oraz Sage.
Historia
edytujPrace nad programem rozpoczęły się w 1986. Wersja 1.0 ukazała się w 1989. W 1991 wprowadzony został protokół MathLink służący do komunikacji pomiędzy procesami. W 1993 ukazała się wersja 2.2 programu dla systemu Linux. Od 20 stycznia 2005 dostępna m.in. na procesory AMD64. 1 maja 2007 ukazała się wersja 6.0 programu. Wersja 7.0 programu ukazała się 18 listopada 2008, a wersja 8.0 dwa lata później (15.11.2010).
Rozszerzeniem Mathematiki w kierunku obliczeń rozproszonych jest gridMathematica, pozwalająca na niezależne od architektury węzłów obliczenia na klastrach. Najnowsza wersja produktu ma numer 2.1.
Cechy i możliwości
edytuj- Własny język programowania funkcyjnego podobny do języka Lisp, który operuje na listach i posiada bogate możliwości ich przetwarzania.
- Obliczenia na liczbach rzeczywistych, zespolonych i kwaternionach o precyzji definiowanej jako epsilon maszynowy lub duże liczby całkowite.
- Wykonywanie obliczeń równoległych, w tym obliczeń z wykorzystaniem karty graficznej w technologii CUDA.
- Przekształcenia wyrażeń arytmetycznych zawierających wielomiany, wyrażenia trygonometryczne, wykładnicze, logarytmiczne itd.
- Rozwiązywanie równań i nierówności różnych typów oraz ich układów.
- Logika matematyczna i algebra Boole'a.
- Algebra liniowa – operacje na skalarach, wektorach i macierzach pod postacią list, przekształcenia i rozkłady macierzy, rozwiązywanie układów równań liniowych, znajdowanie wartości i wektorów własnych, potęgowanie macierzy i funkcje macierzowe, tensory, macierze rzadkie.
- Algebra wyższa – wielomiany rzeczywiste i zespolone, wielomiany diofantyczne, ciała liczbowe, liczby i równania Frobeniusa, ciała skończone (Galois).
- Matematyka dyskretna – kombinatoryka i optymalizacja kombinatoryczna, równania różnicowe i transformata Z, teoria grafów, teoria grup, automaty skończone i komórkowe.
- Teoria liczb – faktoryzacja, kongruencje, równania diofantyczne, analityczne, addytywne i algebraiczne elementy teorii liczb.
- Szeregi, granice i rezydua – sumy i iloczyny, szeregi potęgowe i ich przekształcenia, rozwiązywanie równań rekurencyjnych, znajdowanie granic i residuów funkcji, przybliżenie Pade, alternatywne funkcje numerycznego obliczania przybliżeń granic, residuów i pochodnych.
- Rachunek różniczkowy i całkowy – różniczkowanie, różniczka zupełna, całkowanie, całki oznaczone, nieoznaczone funkcji jednej i wielu zmiennych, całkowanie po różnych obszarach, teoria pola, rachunek wariacyjny, ciągłe i dyskretne przekształcenia całkowe Fouriera i Laplace'a, numeryczna aproksymacja przekształcenia Fouriera i odwrotnego przekształcenia Fouriera.
- Analityczne rozwiązywanie niektórych typów równań różniczkowych zwyczajnych, cząstkowych i różniczkowo-algebraicznych, zagadnienia brzegowe liniowe i nieliniowe.
- Numeryczne rozwiązywanie równań różniczkowych zwyczajnych (wiele wariantów metod Eulera i Rungego-Kutty), cząstkowych (metoda linii MOL), różniczkowo-algebraicznych (metoda IDA) i równań różniczkowych ze stałym opóźnieniem (metoda kroków), wykrywanie równań sztywnych, rozwiązywanie problemów brzegowych, interfejs graficzny do analizy równań różniczkowych.
- Całkowanie numeryczne – kwadratury Newtona-Cotesa, Gaussa, Lobatto i Clenshawa-Curtissa, metody Monte-Carlo i quasi Monte-Carlo, metody adaptacyjne lokalne i globalne, strategie oscylacyjne, eliminacja osobliwości.
- Optymalizacja statyczna bez ograniczeń – metody Newtona, gradientu sprzężonego, Levenberga-Marquardta, BFGS i Brenta, optymalizacja kroku poszukiwań, stany początkowe i końcowe optymalizacji.
- Optymalizacja statyczna z ograniczeniami – programowanie liniowe (metoda simplex, metoda punktu wewnętrznego), numeryczna optymalizacja nieliniowa (lokalna – metoda punktu wewnętrznego, globalna – metoda sympleksu Neldera-Meada, ewolucja różnicowa, symulowane wyżarzanie, przeszukiwanie losowe), analityczna optymalizacja nieliniowa (metoda CAD, metoda mnożników Lagrange'a), programowanie całkowitoliczbowe.
- Prawdopodobieństwo, statystyka i analiza danych – obliczanie prawdopodobieństw, zmienne losowe i ich parametry, ponad sto dystrybuant rozkładów dyskretnych i ciągłych, interpolacja i aproksymacja, funkcje sklejane, sploty i korelacje, estymacja i testowanie hipotez, modele statystyczne.
- Zastosowania w innych dziedzinach wiedzy – teoria sterowania, przetwarzanie sygnałów i przekształcenia falkowe, przetwarzania obrazu i dźwięku, analiza giełdowa i finansowa, eksploracja danych (analiza skupień, dopasowanie sekwencji i dopasowanie do wzorca) i text mining.
- Biblioteka funkcji matematycznych: generatory liczb pseudolosowych, funkcje teorii liczb, funkcje teorii grup, wielomiany ortogonalne, funkcje specjalne i uogólnione, całki i funkcje eliptyczne, stałe matematyczne, fizyczne i jednostki miar.
- Grafika – wykresy 2D i 3D funkcji w postaci zwykłej, parametrycznej i uwikłanej w różnych układach współrzędnych, wykresy specjalne, rysowanie grafów, bryły platońskie, specjalistyczne wykresy statystyczne, opis i modyfikacja wykresów, animacje interaktywne.
- Import danych różnego typu i zapisywanie wyników pracy pod różnymi postaciami (HTML, LaTeX, PostScript, PDF, RTF, CDF, XML z MathLink).
- Narzędzia integracji z innymi systemami poprzez HTTP, SQL, Java, .NET i C.
- Dostęp do dużej internetowej bazy danych matematycznych, naukowych i socjoekonomicznych w serwisie Wolfram Alpha.
Przykłady
edytujPodstawową strukturą danych w Mathematica jest lista. Przykłady list:
In[1]:= m = { {a11,a12}, {a21,a22} } Out[1]:= { {a11,a12}, {a21,a22} }
Możliwe jest operowanie na listach, których elementami są zarówno liczby jak i zmienne. Funkcja Det[]
wylicza wyznacznik macierzy.
In[2]:= Det[m] Out[2]:= -a12 a21 + a11 a22
Linki zewnętrzne
edytuj- Wolfram Research, producent Mathematiki
- Oliver Rübenkönig: IMTEK Mathematica Supplement. University of Freiburg. [dostęp 2019-03-24]. [zarchiwizowane z tego adresu (2017-06-15)]. (ang.).
- Krótka historia rozwoju programu Mathematica
Zobacz też
edytuj- Sage – darmowa alternatywa na licencji GPL.