Mathematica
| Wolfram Mathematica programvara | |
|---|---|
| Genre | Computational algebra system Numerisk analys |
| Utvecklaren | Wolfram Research |
| Datum för första versionen | 23 juni 1988 |
| Senaste versionen | 13.1 (29 juni 2022) |
| Operativ system | Microsoft Windows [1] macOS [1] Linux [1] |
| Språk | Java -språk Wolfram C ++ C |
| Verktygslåda | Qt |
| Licens | egen licens ( icke-fri licens ) |
| Hemsida | www.wolfram.com/mathematica/ |
Mathematica är en plattformsoberoende symbolisk och numerisk datormiljö, skapad av Stephen Wolfram och sedan utvecklad av ett team av matematiker och programmerare. Mathematica använder ett kraftfullt tolkat programmeringsspråk , kallat Wolfram-språket . Wolfram och hans team började arbeta med programmet 1986 och släppte den första versionen 1988. Den nuvarande versionen är 12.3, släppt den 20 maj 2021. Mathematica-systemet är tillgängligt för plattformarna Windows , MacOS och Linux [1] .
Inledning
Mathematicas programmeringsspråk - omdöpt till "Wolfram Language" - är baserat på omskrivning av uttryck ( termomskrivning ) och stöder olika programmeringsparadigm, inklusive funktionell programmering , logisk programmering , programmering baserad på mönsterigenkänning ( mönster-matchning ) och ersättningsregler ( regelbaserad ), såväl som den mer traditionella procedurprogrammeringen . Den processuella metoden rekommenderas i allmänhet inte i Mathematica eftersom den är mycket mindre effektiv än funktionella och regelbaserade alternativ . Mathematica byggs främst i C och C++ , men de flesta av de många bibliotek som tillhandahålls med programmet är skrivna på Mathematicas egna språk, vilket kan användas för att ytterligare utöka systemets funktionalitet. Normalt läggs den nya koden till i form av ett paket , en textfil i ASCII-format som innehåller kod skriven på Mathematicas eget språk. Paketen har tillägget .m .
I Mathematica tolkas basspråket av en kärna som utför själva bearbetningen; resultaten kommuniceras sedan till ett specifikt gränssnitt bland de tillgängliga. Kommunikation mellan kärnan och kärnan (eller någon annan klient , såsom användarskrivna program) använder MathLink- protokollet , ofta över ett nätverk. Det är möjligt att flera front-end-processer ansluter till samma kärna, och att samma front-end är ansluten till olika kärnor.
Som regel representeras användargränssnittet av ett interaktivt textdokument, anteckningsblocket ( anteckningsbok ), som kan visa och tolka tvådimensionell matematisk notation i WYSIWYG -format och bäddar in resultatet av bearbetningen i form av text, formler, grafik och ljud. Anteckningsböcker är textfiler i ASCII-format med tillägget .nb (eller .ma för versioner upp till 2.2) som kan överföras från en plattform till en annan. Wolfram Research tillhandahåller gratis programvara, kallad MathReader , som låter dig se anteckningsblock med tvådimensionell matematisk formatering. Med version 6 introducerades en avancerad version ( Mathematica Player ) som kan exekvera i realtid koden som skapats av Mathematica och lagras i filer med tillägget .nbp . Dessa är interaktiva demonstrationer där användaren kan ändra vissa parametrar med hjälp av ett grafiskt gränssnitt skapat med specifika kommandon i Mathematica-språket. Wolfram Demonstration Project samlar ett brett urval av demonstrationer som riktar sig särskilt till didaktik.
Gränssnitt
Standardgränssnittet har en omfattande layout som sticker ut för sina integrerade grafikmöjligheter och en representation som är mer ansluten till traditionell matematisk notation (det låter dig till exempel skriva istället för ). x^4+1
I anteckningsbokens metafor representeras texten och kommandon som användaren matat in, såväl som resultaten som bearbetas av kärnan (som förutom uttryck, även bilder och ljud) representeras i en hierarkisk struktur av celler. Med version 3.0 har formatet på bärbara datorer genomgått förändringar för att anpassa sig till filosofin att i Mathematica är allt uttryck (förlängningen av anteckningsbokfiler har ändrats från .ma till .nb). En anteckningsbok är i själva verket en textfil som innehåller uttrycket Anteckningsbok [] vars argument är en hierarki av celler som representerar text, formler, grafik, ljud, animationer, och till vilken läggs en rad alternativ som fastställer visualiserings- och användning av innehållet. Från och med version 6 har även grafik, animationer och ljud blivit objekt som direkt kan manipuleras av språket.
Som ett exempel är följande den interna representationen av en anteckningsbok som innehåller ett avsnitt, ett underavsnitt, två textceller och en formel:
'' 'Anteckningsbok [' '' {
Cell [CellGroupData [{
Cell ["avsnittsrubrik", "avsnitt"],
Cell ["Underavsnittsrubrik", "Underavsnitt"],
Cell ["introduktionstext", "Text"],
Cell [BoxData [
FormBox [
RowBox [{
SuperscriptBox ["\ [ExponentialE]",
RowBox [{
RowBox [{"cos", "(", "\ [Theta]", ")"}], "+",
RowBox [{"\ [ImaginaryI]", "",
RowBox [{
"synd", "(", "\ [Theta]", ")"}]}]}]],
"\ [LongEqual]", "1"}],
TraditionalForm]],
"Inmatning"]
Cell ["den ovan är en formaterad formel", "Text"]
}, Öppna]
]
} '' ']' ''
Denna skrift, som finns i ASCII-textfilen med suffixet .nb som utgör anteckningsboken , tolkas av Mathematica- eller Mathreader-gränssnittet för att producera en display av WYSIWYG-typ vars innehåll kan modifieras ytterligare av användaren och eventuellt skickas till kärnan. för utvärdering.
Alla versioner för UNIX / Linux kommer också med ett kommandoradsgränssnitt; användaren presenteras med ett gränssnitt i rent textformat, ett exempel på detta ges nedan:
% matematik
Mathematica 5.2 för Sun Solaris (UltraSPARC)
Copyright 1988-2005 Wolfram Research, Inc.
- Terminalgrafik initierad -
I [1]: = Lös [x ^ 2 + 2 x - 9 == 0, x]
Ut [1] = {{x -> -1 - Sqrt [10]}, {x -> -1 + Sqrt [10]}}
Tidiga versioner av Mathematica för MS-DOS innehöll endast kommandoradsgränssnittet.
Även om standardgränssnittet Mathematica är det mest populära, finns flera andra gränssnitt tillgängliga, till exempel:
- WITM , som står för Web Interface to Mathematica, är ett gränssnitt som är kompatibelt med alla datorer utrustade med en webbläsare som låter dig använda Mathematica på handhållna enheter som handdatorer för vilka en version av Mathematica inte är tillgänglig.
- JMath är ett gränssnitt baserat på GNU readline- biblioteket tillgängligt för UNIX-liknande operativsystem.
- MASH låter dig köra fristående Mathematica-program från kommandoraden i ett UNIX-system.
Mathematicas unika paradigm
Intern representation av uttryck
Den grundläggande datastrukturen i Mathematica är uttryck . Varje enskilt element i språket, från datatyperna till själva anteckningsbokens struktur , är ett uttryck som består av en rubrik ( Head ) och en sekvens av argument omgivna av hakparenteser och separerade med kommatecken. Till exempel ses skrivningen 1 + 1 av kärnan som uttrycket
Plus [1.1]
medan tilldelningen till variabeln x (som inte behöver deklareras innan den används) av ovannämnda summa, det vill säga skrivningen x = 1 + 1, representeras internt med
Ställ in [x, plus [1,1]]
Fördelen med denna representation är att allt innehåll i anteckningsböcker och paket (som i sin tur inte är något annat än uttryck) kan representeras med enkla textfiler i ASCII-format, som kan delas mellan de olika plattformarna där Mathematica är implementerat. Den interna representationen av ett uttryck kan visas med kommandona Fullform och TreeForm .
<small> In [5]: = </small> '' 'FullForm [1 + Sin [2 Pi (wt + a)]] <small> Ut [5]: = </small> Plus [1, Sin [Gider [2, Pi, Plus [a, Times [t, w]]]]]
Rubriken för ett uttryck kan visas med kommandot Head [] :
<small> I [1]: = </small> '' 'Huvud [1 + 1]' '' <small> Ut [1] = </small> Plus
<small> I [2]: = </small> '' 'Huvud [{1,2,3}]' ''
<small> Ut [2] = </small> Lista
Dess inre delar är istället tillgängliga med proceduren Del [n1, n2, ...] vars korta form representeras av [[n1, n2, ...]]. Följande exempel extraherar respektive: rubriken, det andra argumentet för Plus, det första (och enda) argumentet för Sin-funktionen, det andra tillägget till den tredje faktorn i argumentet Sin.
<small> I [3]: = </small> '' 'expr = 1 + Sin [2 Pi (wt + a)];
<small> I [4]: = </small> '' '{Del [expr, 0], expr [[2]], expr [[2, 1]], expr [[2, 1, 3] , 2 ]]} '' '
<small> Ut [4] = </small> {Plus, Sin [2 Pi (a + tw)], 2 Pi (a + tw), tw}
Atomer
Mathematica erbjuder också atomtyper som identifierar olika typer av tal (heltal, rationella, reella, komplexa) och symboler (språksymbol, teckensträng). Atomtyperna i Mathematica är: heltal , rationell , verklig , komplex , symbol och sträng . Representationen av en atom skiljer sig i en viss mening från den för traditionella uttryck (vars data visas inom hakparenteser av uttrycket) genom att rubriken vanligtvis inte visas, även om den returneras av kommandot Head. Följande kommandon tillämpar Head-proceduren på varje element i listan som följer / @ (den infixade notationen av Map []):
<small> I [1]: = </small> '' 'Head / @ {7, 2/3, 2.71, 5 - 3 I, I, E, Pi}' ''
<small> Out [1] = </small> {Heltal, Rational, Real, Complex, Complex, Symbol, Symbol}
<small> In [2]: = </small> '' 'Head / @ {Integer, Plus, Map, Solve, "Integer", "Pluto"}' ''
<small> Ut [2] = </small> {Symbol, Symbol, Symbol, Symbol, String, String}
Uttrycksutvärdering
När ett uttryck skickas till kärnan bearbetar kärnan det (eller, genom att låna den engelsktalande termen Evaluate , utvärderar det) och tillämpar omedelbart (i ordning) på rubriken, argumenten och uttrycket som helhet en serie transformationsregler användarspecificerad eller fördefinierad på språket.
<small> I [1]: = </small> '' '1 + 1' '' <small> Ut [1] = </small> 2
Till skillnad från andra liknande produkter, som Maxima och Maple , tillämpar Mathematica de lagrade transformationsreglerna rekursivt tills det bearbetade uttrycket genomgår ytterligare ändringar (en fast punkt sägs ha nåtts ), eller en rekursionsgräns nås. För att detta ska vara meningsfullt är frånvaron av biverkningar lämpligt - även om det inte är obligatoriskt ; från detta element härleds likheten med funktionell programmering. Funktionerna och koden är förstklassig och inte ogenomskinlig. Omfattning är dynamisk, men det finns också några konstruktioner som försöker simulera lexikal omfattning .
Transparent utvärdering för användaren
Utvärderingsprocessen av kärnan är delvis transparent för användaren och detta kan vara en källa till frustration för nybörjare. Eftersom rubriken och argumenten utvärderas först, när uttrycket utvärderas som en helhet har det redan genomgått en partiell transformation av dess syntax. Eftersom omskrivningsreglerna är baserade på syntaktiska, och inte semantiska, substitutioner kan det hända att vissa substitutionsregler inte längre gäller för den modifierade formen och därför inte får önskad effekt. Du kan till exempel ersätta symbolen 1 med symbolen 3 med hjälp av följande ersättningsregel
<small> I [1]: = </small> '' '1 /. (1-> 3) '' ' <small> Ut [1] = </small> 3
internt representerad som:
Ersätt alla [1, regel [1,3]]
Men om du försöker göra en ersättning av samma symbol när du skriver 1 + 1 får du ett annat resultat än det förväntade värdet 6:
<small> I [2]: = </small> '' '1 + 1 /. (1-> 3) '' ' <small> Ut [2] = </small> 2
Detta beror på att en transparent utvärdering av uttrycket ägde rum ReplaceAll[Plus[1,1],Rule[1,3]]innan ersättningsregeln som åberopades av ReplaceAll kunde tillämpas. Kärnan har faktiskt utvärderat ReplaceAll-argumenten innan den anropade den funktionen. Resultatet var att ReplaceAll hade följande anropssyntax:
Ersätt alla [2, regel [1,3]]
och att inte kunna hitta symbolen 1 hade det ingen effekt. Bristen på förståelse för den transparenta utvärderingsmekanismen är en av huvudkällorna till fel i programmering med Mathematica, vilket framgår av de många meddelanden om ämnet i diskussionsgruppen comp.soft-sys.math.mathematica.
Praktiskt exempel
Ett icke-trivialt exempel på hur den transparenta utvärderingen av rubriken kan leda till resultat i uppenbar motsägelse med de förväntade är följande: ett av sätten att beräkna den symboliska derivatan av en funktion i Mathematica är genom postfix-formen av derivatoperatorn. ; om f [x] är funktionen av variabeln x, så ges derivatan av f '[x]. Denna operation är ekvivalent med prefixformen Derivata [1] [f] [x], som består av en funktion av variabeln x som leds av Derivata [1] [f]. Vid utvärdering av uttrycket fortsätter Mathematica att bearbeta rubriken, beräkna derivatan först av den rena funktionen f och sedan utvärdera den vid argumentet (i detta fall x). Till exempel, om f är den speciella integral sinusfunktionen, har vi
<small> I [3]: = </small> '' 'SinIntegral' [x] '' ' <small> Ut [3] = </small> Sin [x] / x
Men om vi vill beräkna derivatan av SinIntegral-funktionen [x ^ 2], följande utvärdering
<small> I [4]: = </small> '' 'SinIntegral' [x ^ 2] '' ' <small> Ut [4] = </small> Sin [x ^ 2] / x ^ 2
ger ett resultat som inte överensstämmer med de sammansatta avledningsreglerna för en funktion. Detta beror på att rubriken utvärderades oavsett funktionsargumenten. Resultatet av operationen är i själva verket den funktionella derivatan av integralsinus utvärderad till värdet x ^ 2. För att erhålla ett resultat i enlighet med härledningsregeln för sammansatta funktioner är det nödvändigt att använda kommandot D [expr, var] där variabeln med avseende på vilken den härleds specificeras:
<small> In [5]: = </small> '' 'D [SinIntegral [x ^ 2], x]' '' <small> Ut [5] = </small> 2 Sin [x ^ 2] / x
Reduktionen till normal form
För att substitutionsreglerna ska tillämpas konsekvent och undvika risken för oändlig rekursion är det väsentligt att de olika syntaktiska former med vilka ett uttryck kan representeras är entydigt spårbara till en enda form som inte är föremål för ytterligare transformationer. Denna form, som inte är något annat än den fasta punkten för de tillämpliga transformationerna (vare sig de är fördefinierade eller definierade av användaren) är den så kallade normala formen . Minskningen i normalform är viktig för programmering i Mathematica både när det beror på regler integrerade i systemet, och när det måste implementeras i användarkoden.
Till exempel är det tydligt att polynomet 2x 2 -5x + 1-x 2 + (3 + 4) x också kan representeras med följande skrifter (matematiskt ekvivalenta)
x 2 + 2x + 1 == 2x + x 2 +1 == 1 + 2x + x 2
som härrör från tillämpningen av summans associativa och kommutativa egenskaper (implementerad i Mathematica med hjälp av attributen 'Flat' och 'Orderless' i Plus-funktionen). Som standard sorterar Mathematica automatiskt polynomen med början från de lägsta potenserna, så att det tidigare nämnda polynomet, om det utvärderas, automatiskt konverteras till formen 1 + 2x + x 2 . Det är därför nödvändigt att komma ihåg att ersättningsreglerna som har en av de andra likvärdiga formerna som argument kanske inte kan tillämpas på den normala blankett som kommer att överlämnas till dem.
Det är också sant att samma polynom kan representeras av skrifterna
(x + 1) (x + 1) == (x + 1) 2
som inte automatiskt bearbetas av Mathematica i avsaknad av specifika kommandon. En hypotetisk användarkod utformad för att extrahera information från polynomet (som koefficienten x) måste ta hand om att reducera de olika representationerna till samma normala form, till exempel genom att tvinga fram deras expansion och eventuellt ytterligare förenkla resultatet. När den normala formen har nåtts kommer det att vara möjligt att tillämpa reglerna för att extrahera information och få konsekventa resultat oavsett syntaxen som används för att skicka indata.
Utvärderingsövervakningsmekanismer
Mathematica erbjuder flera mekanismer som gör att programmeraren kan påverka hur ett uttryck utvärderas. De viktigaste är de attribut som är associerade med funktionerna och konstruktionerna av typen Håll och utvärdera .
Manipulera uttryck
En av de vägledande principerna för Mathematica är den enhetliga strukturen som finns bakom nästan alla representativa objekt i Mathematica. Om vi till exempel infogar uttrycket kommer det att representeras som om det hade skrivits:
<small> I [1]: = </small> '' 'x ^ 4 + 1' '' <small> Ut [1] = </small> 1 + x <sup> 4 </sup>
Men om kommandot FullFormanvänds i detta uttryck:
<small> I [2]: = </small> '' 'FullForm [x ^ 4 + 1]' '' <small> Out [2] = </small> Plus [1, Power [x, 4]]
Nästan alla objekt i Mathematica har grundformen head [ och 1 , och 2 , ... ] (som också kan visas eller infogas i någon annan stil). Till exempel är huvudet i föregående exempel Plus, symboler som x har formen Symbol["x"]. Listor har också denna struktur, där huvudet är List.
Denna princip tillåter vanliga uttryck som inte har något att göra med listor att innehålla listrelaterade operatorer:
<small> I [3]: = </small> '' 'Utöka [(Cos [x] + 2 logg [x ^ 11]) / 13] [[2, 1]]' '' <small> Ut [3] = </small> 2/13
Det omvända kan också hända - Listor kan redigeras med vanliga operatorer:
<small> I [4]: = </small> '' 'Karta [Använd [Logg, #] &, {{2, x}, {3, x}, {4, x}}]' ' '
<liten> Ut [4] = </small> {Logg [x] / Logg [2], Logg [x] / Logg [3], Logg [x] / Logg [4]}
Där funktionen Applyändrar huvudet för dess andra argument till det för det första.
Exempel
Följande Mathematica-kodexempel hittar determinanten för en 6 × 6 -matris vars i , j -te element innehåller ij och nollelement ersätts med 1.
<small> In [1]: = </small> '' 'Det [Array [Times, {6, 6}, 0] /. 0 -> 1] '' '
<small> Ut [1] = </small> 0
Så determinanten för denna matris är 0.
Följande numeriska beräkning hittar roten till ekvationen och x = x 2 + 2, med start från punkten x = -1.
<small> In [2]: = </small> '' 'FindRoot [Exp [x] == x ^ 2 + 2, {x, -1}]' ''
<small> Ut [2] = </small> {x -> 1,3190736768573652}
Programmering i Mathematica
Flexibilitet
Mathematica låter dig programmera efter olika paradigm. Låt oss betrakta ett enkelt exempel: vi vill få en tabell över värdena för största gemensamma divisor ( x , y ) för 1 ≤ x ≤ 5, 1 ≤ y ≤ 5.
Den mest kortfattade metoden är att använda en av de olika specialiserade funktionerna:
<small> I [3]: = </small> '' 'Array [GCD, {5, 5}]' ''
<small> Ut [3] = </small> {{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}}
Det finns åtminstone tre andra sätt att göra samma sak:
<small> I [4]: = </small> '' 'Tabell [GCD [x, y], {x, 1, 5}, {y, 1, 5}]' ''
<small> Ut [4] = </small> {{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}}
Ett tillvägagångssätt i APL-stil:
<small> In [5]: = </small> '' 'Ytter [GCD, Range [5], Range [5]]' ''
<small> Ut [5] = </small> {{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}}
Outermotsvarar den externa produktoperatören, Rangemotsvarar iota-operatören .
Ett iterativt tillvägagångssätt:
<small> I [6]: = </small> '' 'l1 = {}; (* initialisera som tom lista, '' '
'' 'eftersom vi avslutningsvis vill ha en lista *)' ''
'' 'För [i = 1, i <= 5, i ++,' ''
'' 'l2 = {};' ''
'' 'För [j = 1, j <= 5, j ++,' ''
'' 'l2 = Lägg till [l2, GCD [i, j]]' ''
'' '];' ''
'' 'l1 = Lägg till [l1, l2];
'' '(* lägger till underlistan, dvs raden *)' ''
'' ']; l1 '' '
<small> Ut [6] = </small> {{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}}
Lägg märke till hur denna lösning är betydligt längre än de andra.
Effektivitet
Mathematicas inbyggda rutiner är till största delen skrivna på C-språket och är som sådana särskilt effektiva när det gäller exekveringstid. Men med tanke på avsaknaden av att skriva i Mathematica, hänvisar varje procedur som anropas i ett paket eller i en anteckningsbok till flera specialiserade C-språkrutiner, som var och en hanterar exekvering baserat på de datatyper som skickas av användaren. För varje procedur måste kärnan först verifiera att den data som skickas är giltig och sedan välja, bland algoritmerna för den specifika typen av data som identifieras, den som är bäst lämpad för att lösa problemet. Allt detta innebär en omkostnad som i allmänhet är försumbar för den enstaka proceduren, men den blir relevant när flera procedurer är inblandade i följd eller beräkningarna behöver upprepas inom en cykel.
Exekveringstiderna för ett program skrivet i Mathematica beror därför på avvägningen mellan effektiviteten hos rutinerna skrivna i C och overheaden på grund av bristen på maskinskrivning. Det finns två sätt att minska exekveringstiderna: använd konstruktionen Compile [] för att instruera kärnan om vilken typ av data som ska skickas till lågnivårutinen, eller använd beräkningsrutiner skrivna på ett kompilerat språk (som C eller Fortran) som kommunicerar (i båda riktningarna) med Mathematica via MathLink.
Paket
Systemet levereras med ett stort utbud av standardpaket som täcker ett brett utbud av matematiska och icke-matematiska tillämpningar. Många andra paket och relaterade anteckningsböcker kan hittas (de flesta gratis) på webben och i synnerhet på Wolfram Information Centers webbplats .
Gränssnitt med andra applikationer
Kommunikation med andra applikationer sker via MathLink- protokollet . Det tillåter inte bara kommunikation mellan kärnan och gränssnitt, utan ger också ett allmänt gränssnitt mellan kärnan och en godtycklig applikation. Wolfram Research distribuerar ett gratis utvecklingskit för att länka applikationer skrivna i C till Mathematica-kärnan via MathLink . Två andra komponenter i Mathematica, genom MathLink , tillåter utvecklare att länka kärnan till ett Java - program eller ett .NET-program: J / Link och .NET / Link .
J / Link låter dig använda Java-kod och Mathematica-program. Å ena sidan använder Java-program Mathematica-kommandon för att utföra beräkningar; å andra sidan tillåts Mathematica att ladda Java -klasser , manipulera Java-objekt och köra metodanrop vilket gör det möjligt att till exempel bygga ett grafiskt gränssnitt för interaktiv exekvering av Mathematica-kod.
På samma sätt kan .NET-programvara anropa kärnan för att utföra beräkningar och skicka tillbaka resultaten, och Mathematica-utvecklare kan enkelt få tillgång till .NET-funktioner.
Kernelåtkomst via webben
Wolfram Research producerar också ett program som heter webMathematica som gör att en webbserver kan samverka med Mathematica-kärnan. På så sätt är det möjligt att betjäna användare av interaktiva sidor där användare genom speciella formulär kan begära kärnbearbetning för att utföra beräkningar eller se grafik.
Webbåtkomst via kärnan
Sedan version 5.1 har Mathematica ett paket (kallat WebServices.m) som låter dig komma åt tjänsterna som görs tillgängliga av webbplatser , vilket gör deras funktioner tillgängliga som om de vore Mathematica-kommandon. WebServices.m stöder SOAP- protokollet och kan upptäcka och installera ytterligare funktioner via WSDL .
Från och med version 8 låter Mathematica dig interagera med Wolfram | Alpha-sökmotorn direkt från notebook -gränssnittet .
För- och nackdelar
Fördelar
Standardgränssnittet som antagits av de senaste versionerna av Mathematica (praktiskt taget alla som för närvarande stöds) förenklar drastiskt förberedelserna av beräkningar och deras dokumentation. Koden exekveras genom att klicka på den och trycka på shift-enter. Det är också möjligt att välja olika celler som innehåller koden (även i block organiserade enligt en hierarkisk struktur) genom att markera respektive sidofält och exekvera koden i följd. Fördelen med detta tillvägagångssätt är att användare kan ändra vissa parametrar i beräkningen och köra koden igen på några sekunder. Eventuella fel kan korrigeras direkt i anteckningsboken och beräkningarna körs om utan att behöva skriva om, kopiera eller kompilera om de efterföljande kodraderna. Andra datormiljöer, å andra sidan, kräver, när de används i interaktivt läge, att söka i historiken efter gjorda beräkningar, kopiera dem, modifiera dem och sedan exekvera dem.
En annan fördel med Mathematica ligger i dess förmåga att hantera tal med godtycklig precision och exakta kvantiteter (som rationella tal). Det är således möjligt att utföra exakta beräkningar eller med en precision som endast begränsas av tillgången på resurser hos hårdvarumaskinen.
Mathematica erbjuder också mycket generaliserade funktioner efter tillämpningsområde och antal datadimensioner, och delegerar till interna algoritmer valet av procedurer optimerade för den specifika typen av tidigare data. Till exempel kan faltningsoperationen tillämpas på endimensionella eller flerdimensionella listor med numeriska värden eller symboliska variabler, medan Fourier -proceduren för att beräkna FFT har samma syntax för mono- och flerdimensionella fall. Detta förenklar modifieringen av koden till mer allmänna problem. Antalet tillgängliga funktioner är också högt och låter dig skriva kompakta och samtidigt optimerade program tack vare interna algoritmer ofta i toppmodern teknik.
Kritik
Till skillnad från andra symboliska datormiljöer, som är öppen källkod och fritt kan användas, kopieras och vid behov modifieras, är Mathematica proprietär programvara som har restriktioner för användning, kopiering och modifiering.
Data som manipuleras av Mathematica är huvudsakligen kapslade listor, vars exakta struktur är svår att urskilja när antalet dimensioner växer.
Den övervägande funktionella karaktären hos programmering i Mathematica gör det svårt att hitta fel i koden (debugging). Felmeddelandena pekar inte direkt på instansen av funktionen som orsakade dem, och inga radnummer eller andra funktioner tillhandahålls för att hjälpa till att spåra punkten i koden där felet inträffade. Funktionerna som erbjuds som standard av Mathematica (särskilt Trace- konstruktionen och dess varianter) returnerar en mängd information som är svår att tolka för mindre erfarna programmerare. Det finns gratispaket som utökar funktionaliteten för Trace genom att manipulera resultaten som produceras för att isolera kodens onormala beteenden och spåra källan till problemet, men som inte ingår i standardversionen av Mathematica, deras stöd (eller drift) i efterföljande versioner är inte garanterade. . Wolfram Research producerar en separat inköpt utvecklingsmiljö, kallad Wolfram WorkBench, som är baserad på Eclipse och erbjuder möjligheter för lagarbete, versionskontroll och avancerad felsökning (ingår gratis i underhållet av Premier Service).
Kostnaden för en enda standardlicens av Mathematica 8 för den professionella användaren som inte kan dra nytta av rabatterna reserverade för studenter, lärare, myndigheter och utbildningsinstitutioner är 3185 euro för Windows / Macintosh / Linux-plattformarna. I kostnaden ingår den eviga licensen och ett års underhåll av Premier Service (andra licensen för den bärbara datorn, uppdateringar och support). Den icke-professionella användaren kan köpa Home Edition-licensen som erbjuds till ett avsevärt reducerat pris [2]
En kritik mot forumen på Wolfram Research-webbplatsen och den offentliga diskussionsgruppen comp.soft-sys.math.mathematica är att de är moderata grupper där kommunikationen bromsas av behovet av moderering. Vidare föreskrivs i en av reglerna för inlägg i den offentliga diskussionsgruppen att det inte är möjligt att nämna andra numeriska eller symboliska beräkningssystem och detta uppfattas av vissa som ett hinder för friheten att diskutera vissa aspekter av språket som är bättre resp. sämre gjort i annan mjukvara.
Mathematica på webben
MathWorld är ett ständigt växande matematiskt uppslagsverk byggt med Mathematica-teknik. Många ämnen erbjuder en anteckningsbok att ladda ner som innehåller de viktigaste formlerna eller graferna.
Wolfram Functions Site är en webbplats som rapporterar den största samlingen av formler och grafer som relaterar till de mest skilda matematiska funktionerna. Du kan ladda ner formulären och ansökningarna i anteckningsbokformat .
Wolfram Demonstration Project samlar ett brett utbud av demonstrationer skapade med Mathematica 6 och användbara genom det kostnadsfria programmet Mathematica Player.
Wolfram Integrator (tidigare känd som 'The Mathematica Integrator') är en webbplats där Mathematica-tekniken görs tillgänglig för surfare som vill beräkna integraler i symbolisk form. Du går in i funktionen för att integrera med Mathematica-notation och skickar in den till en fjärrkärna för utvärdering.
På Online Encyclopedia of Integer Sequences är Mathematica och Maple de två mest använda datoralgebrasystemen för vilka kommandon tillhandahålls för att beräkna sekvenser.
LiveGraphics3D är en applet skriven i Java 1.1 som låter dig infoga interaktiv grafik på en webbsida Grafiken, representerad med Mathematica-syntax, tolkas av Java-appleten och visas i ett interaktivt fönster på webbsidan L Användaren kan alltså rotera figurerna i 3D-rymden efter önskemål, aktivera eller stoppa animationer och till och med ändra vissa parametrar i representationen genom att flytta fördefinierade element. Appleten kräver inte att Mathematica finns på systemet som producerar eller läser sidorna och kan användas kostnadsfritt för personliga ändamål (kommersiell användning kräver istället en licens från Wolfram Research Inc.).
Versioner
Följande versioner har publicerats [3] :
- Mathematica 1.0 (1988) [4]
- Mathematica 1.2 (1989) [5]
- Mathematica 2.0 (1991) [6]
- Mathematica 2.1 (1992) [7]
- Mathematica 2.2 (1993) [8]
- Mathematica 3.0 (1996) [9]
- Mathematica 4.0 (1999) [10]
- Mathematica 4.1 (2000)
- Mathematica 4.2 (2002) [11]
- Mathematica 5.0 (2003) [12]
- Mathematica 5.1 (2004) [13]
- Mathematica 5.2 (2005) [14]
- Mathematica 6.0 (2007) [15]
- Mathematica 6.0.1 (2007)
- Mathematica 6.0.2 (2008)
- Mathematica 6.0.3 (2008)
- Mathematica 7.0 (2008) [16]
- Mathematica 7.0.1 (2009)
- Mathematica 8.0 (2010) [17]
- Mathematica 8.0.1 (2011)
- Mathematica 9.0 (2012) [18]
- Mathematica 10.0 (2014)
- Mathematica 10.0.1 (2014)
- Mathematica 10.0.2 (2014)
- Mathematica 10.1 (2015)
- Mathematica 10.2 (2015)
- Mathematica 10.3 (2015)
- Mathematica 10.3.1 (2015)
- Mathematica 10.4 (2016)
- Mathematica 10.4.1 (2016)
- Mathematica 11.0 (2016)
- Mathematica 11.0.1 (2016)
- Mathematica 11.1 (2017)
- Mathematica 11.1.1 (2017)
- Mathematica 11.2 (2017)
- Mathematica 11.3 (2018)
- Mathematica 12 (2019)
- Mathematica 12.1 (2020) [19]
- Mathematica 12.2 (2020)
- Mathematica 12.3 (2021)
Anteckningar
- ^ a b c d ( EN ) Systemkrav , på wolfram.com . Hämtad 8 september 2018 .
- ^ Mathematica licensieringskostnad på Wolfram.com
- ^ Mathematica senaste version och snabbrevisionshistorik , på wolfram.com . Hämtad 8 juli 2021 .
- ^ Supercomputer Pictures Solve the Once Insoluble , John Markoff, 30 oktober 1988.
- ^ Mathematica 1.2 lägger till nya grafikalternativ: uppgraderingen lovar också samtidiga operationer av Elinor Craig, MacWee k, 25 juli 1989.
- ^ Mathematica + 283 functions = Mathematica 2.0 av Raines Cohen, MacWeek , 15 januari 1991.
- ^ Ny Mathematica: snabbare, smidigare, länkbar och QuickTime-kompatibel: MathLink-kit tillåter kopplingar till andra appar. (Wolfram Research Inc. levererar Mathematica 2.1, ny QuickTime-kompatibel version av Mathematica programvara) av Daniel Todd, MacWeek, 15 juni 1992.
- ^ Ny version av Mathematica . Arkiverad 23 oktober 2012 på Internet Archive . , Mechanical Engineering , 1 juni 1993.
- ^ New Mathematica av Stephen H. Wildstrom, BusinessWeek , 15 juni 1997.
- ^ Mathematica 4.0 ( JPG ), i MCmicrocomputer , n. 199, Rom, Pluricom, oktober 1999, s. 172-175 , ISSN 1123-2714
- ^ Mathematica 4.2: Funktionsrikt matematikprogram integreras med webben, lägger till fullt Java-stöd Arkiverat 21 november 2007 på Internet Archive . av Charles Seiter, Macworld , 1 november 2002.
- ^ Mathematica 5.0 Lägger ihop: Exakt 15 år efter Mathematicas första release har Wolfram Research släppt Mathematica , PC Magazine , 3 september 2003.
- ^ Mathematica 5.1:s webbtjänster adderar upp; Mathematica 5.1 levererar förbättringar jämfört med version 5.0 som är mycket oproportionerliga för en .1-uppgradering. av Peter Coffee, eWeek , 6 december 2004.
- ^ Mathematica träffar 64-bitars , MacWorld UK, 13 juli 2005.
- ^ Mathematica 6: Felix Grant finner att version 6 av Wolfram Researchs symboliska matematiska programvara verkligen lever upp till förväntningarna. Scientific Computing, 2007.
- ^ Mathematica 7: Released Wolfram Blog, 2008.
- ^ Mathematica 8 ! — Wolfram Blog , på blog.wolfram.com . Hämtad 8 juli 2021 .
- ^ Mathematica 9 släpps idag! — Wolfram Blog , på blog.wolfram.com . Hämtad 8 juli 2021 .
- ^ På mindre än ett år, så mycket nytt: lanserar version 12.1 av Wolfram Language & Mathematica — Wolfram Blog , på blog.wolfram.com . Hämtad 8 juli 2021 .
Bibliografi
- Mathematica ( JPG ), i MCmicrocomputer , n. 90, Rome, Technimedia, november 1989, sid. 142-147, ISSN 1123-2714
- Mathematica - Ett system för datormatematik ( JPG ), i MCmicrocomputer , n. 125, Rome, Technimedia, januari 1993, sid. 252-255, ISSN 1123-2714Kolumnen om Mathematica fortsätter i nästan alla efterföljande nummer fram till nr 208.
Relaterade artiklar
- MathWorld
- IGOR Pro
- IMTEK Mathematica Supplement , ett Mathematica-tillägg med öppen källkod för Finite Element Simulation
- Fri programvara / öppen källkod och liknande gratisprogram:
- Liknande kommersiell programvara
Andra projekt
Wikimedia Commons innehåller bilder eller andra filer om Mathematica
Externa länkar
- ( EN ) Officiell webbplats , på wolfram.com .
- ( EN ) Mathematica , i Encyclopedia Britannica , Encyclopædia Britannica, Inc.
- The History of Mathematica , en introduktion till systemets historia och dess utveckling
- The Integrator - Formal Calculus of Primitives (Wolfram Research) , på integrals.wolfram.com . Hämtad 22 september 2006 (arkiverad från originalet 25 mars 2013) .
- Wiki-Mathematica , en wiki-Mathematica
- MASH , UNIX-skriptgränssnitt till Mathematica
- SAGE , Open Source Mathematica-liknande programvara
- IMS , Open Source IMTEK Mathematica Supplement (IMS)
- Mathematica Graphics Gallery , för många konstnärliga exempel på användningen av Mathematica