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

Prace 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

  • 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

Podstawową 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

Zobacz też

  • SageMath – darmowa alternatywa na licencji GPL.