matematikai programcsomag From Wikipedia, the free encyclopedia
A Mathematica széles körben használt matematikai programcsomag, megálmodója Stephen Wolfram, terjesztője az általa alapított Wolfram Research cég. A Mathematica hatékony, szakterület-specifikus programozási nyelv is egyben, amely a kifejezés-átírásra (term-rewriting) alapozva számos programozási paradigma emulálására alkalmas.
Ez a lap vagy szakasz tartalmában elavult, korszerűtlen, frissítésre szorul. Frissítsd időszerű tartalommal, munkád végeztével pedig távolítsd el ezt a sablont! |
Mathematica | |
Mathematica | |
Fejlesztő | Wolfram Research |
Legfrissebb stabil kiadás | |
Programozási nyelv | Mathematica, C |
Operációs rendszer | többplatformos |
Elérhető | angol, kínai, japán |
Kategória | matematikai programcsomag |
Licenc | kereskedelmi, zárt forráskódú |
A Mathematica weboldala |
Wolfram 1986-ban kezdett dolgozni a programon, és 1988-ban bocsátotta ki az első változatot. A Mathematica programozási nyelv a kifejezés-átíráson alapul, de a funkcionális programozás, a listakezelés, a mintaillesztés és a procedurális programozás egyaránt megvalósítható benne, bár általában a funkcionális program a leghatékonyabb.
A Mathematica rendszer három fő részből áll:
Eltérően más matematikai programcsomagoktól, amilyen például a Maxima vagy a Maple, a Mathematica a tárolt szabályokat mindaddig alkalmazni próbálja az adott kifejezés átalakítására, amíg ez lehetséges, tehát egy fix pontot keres. Más szóval a Mathematica egy végtelen kiértékelő rendszer.
Az alábbi Mathematica utasítássorozat annak a 6×6-os mátrixnak a determinánsát számolja ki, amelynek az i, j-edik eleme i×j-vel egyenlő:
In[1]:= Det[Array[Times, {6, 6}]]
Out[1]= 0
Tehát egy ilyen mátrix determinánsa 0.
Az alábbiakban numerikusan kiszámoljuk az ex = x2 + 2 egyenlet gyökét az x = −1 pontból kiindulva.
In[2]:= FindRoot[Exp[x] == x^2 + 2, {x, -1}]
Out[2]= {x -> 1.31907}
A Mathematicában több programozási paradigma is használható egy feladat megoldására. Tekintsük a következő egyszerű példát: táblázatot akarunk készíteni az 1 és 5 közötti számokból álló párok legnagyobb közös osztójából. A beépített GCD[]
függvény visszaadja két egész szám legnagyobb közös osztóját.
A GCD[]
függvényt az Array[]
függvénnyel használva jutunk a legtömörebb megoldáshoz:
In[3]:= Array[GCD, {5, 5}]
Out[3]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}}
Legalább három további megoldást is adhatunk:
In[4]:= Table[GCD[x, y], {x, 1, 5}, {y, 1, 5}]
Out[4]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}}
Egy APL-stílusú megközelítés:
In[5]:= Outer[GCD, Range[5], Range[5]]
Out[5]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}}
Az Outer[]
függvény a tenzorszorzat általánosítása, Range[]
pedig a ióta operátor megfelelője.
Egy procedurális megközelítés:
In[6]:= l1 = {}; (* Inicializálás. Kezdetben l1 üres lista. *)
Do[l2 = {};
Do[l2 = Append[l2, GCD[i, j]], {j, 1, 5}];
l1 = Append[l1, l2], (* l1-hez csatoljuk a már felépített l2 részlistát *)
{i, 1, 5}
]
In[7]:= l1
Out[7]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}}
Ez a megoldás lényegesen hosszabb, mint az előzők.
A Mathematica egyik vezérelve, hogy a benne reprezentálható objektumok szinte kivétel nélkül azonos szerkezetűek. Például a x4+1 kifejezés lényegében úgy jelenik meg, ahogyan szokásosan írjuk:
In[8]:= x^4 + 1
Out[8]= 1+x<sup>4</sup>
Ha azonban alkalmazzuk a FullForm parancsot:
In[9]:= FullForm[x^4 + 1]
Out[9]= Plus[1, Power[x, 4]]
világosabban látszik a belső reprezentáció alakja.
A Mathematicában minden objektum kifejezésnek vagy egy (általában többszörösen összetett) függvény helyettesítési értékének tekinthető, ezért alakja ilyen: fej[e1, e2, …], ahol az argumentumok további kifejezések
(és ami lehetséges, hogy másképp jelenik meg, vagy másképpen lehet bevinni). Például a fenti kifejezés feje Plus
, az olyan szimbólumok pedig, mint x, tulajdonképpen Symbol["x"]
alakúak. A listák szerkezete is ilyen; itt a fej List
.
Ez az elv az alapja annak, hogy listáktól teljesen különböző szabályos kifejezéseken is elvégezhessük a listaműveleteket.
In[10]:= Expand[(Cos[x] + 2 Log[x^11])/13][[2, 1]]
Out[10]= 2/13
A megfordításra is gyakran szükségünk lehet – a listák ugyanúgy módosíthatók, mint a szabályos kifejezések:
In[11]:= Map[Reverse, f[{2, x}, {3, x}, {4, x}]
Out[11]= f[{x,2},{x,3},{x,4}].
Az alapértelmezésként használt Mathematica felhasználói felületnek számos grafikai képessége van – beleértve a képletek szép megjelenítését (prettyprinting) –, és a felhasználóval egy jegyzetfüzeten keresztül kommunikál. A mag által küldött eredményeket (beleértve a grafikaiakat és a hangzókat is) hierarchikusan szervezett cellákba teszi (hasonlóan ahhoz, ahogyan például a Maple is teszi). A jegyzetfüzet formázható, szakaszokra osztható. A program 3.0 változatától kezdve a jegyzetfüzetek is kifejezésekként vannak reprezentálva, a mag ezeket is manipulálhatja. Mivel a felhasználói felület szövegszerkesztési képességei fontosak, ezért ma már elérhető ingyenesen a MathReader program, amelyikkel a Mathematica jegyzetfüzetek – amelyek tulajdonképpen szöveges állományok – olvashatók.
Létezik néhány további felhasználói felület is, mint például a JMath vagy a MASH, de a Mathematica felhasználói felület a legnépszerűbb.
A MathLink protokoll nemcsak a Mathematica mag és a felhasználói felület közötti, hanem a mag és tetszőleges más alkalmazások közötti kommunikációhoz is használható. A Wolfram Research cég ingyenesen terjeszt egy olyan fejlesztői programot, amely arra szolgál, hogy C programozási nyelven írt programokat összekapcsoljon a Mathematica magjával a MathLink-en keresztül, valamint a J/Link-et, amely hasonló, egyszerűen használható csatoló program a Java programozási nyelvhez. Ha a J/Link-et használjuk, akkor megkérhetjük a Mathematica magját, hogy az végezze a számolásokat, továbbá egy Mathematica program betölthet tetszőleges Java osztályt, manipulálhat Java objektumokat, és meghívhat módszereket (metódusokat), ily módon Mathematicából Java grafikus felhasználói felületeket építhetünk.
A Wolfram Research cég egy webMathematica nevű programot is gyárt, ami lehetővé teszi egyszerű webes interfészek fejlesztését a Mathematicához.
A Sloane-enciklopédia a Mathematica és a Maple rendszert használja a leggyakrabban a matematikai programcsomagok közül sorozatok kiszámítására; mindkét nyelv saját adatbázissal rendelkezik az Sloane Enciklopédiában.
A Google a:" filetype:nb *.* "keresőkifejezésre (nb:Mathematica notebook) kb. 32000 találatot ad, ezek közül választva, (a szoftver birtokában) és futtatva lehet gyakorlatot szerezni a Mathematica használatában.
A Wolfram Player segítségével tanulmányozhatjuk mások Mathematica szoftverrel készült munkáit.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.