Matomatik  je slobodni računarski algebarski sistem generalne svrhe dostupan za portovanje koji može da izvršava simboličko računanje, uprošćava, kombinuje i upoređuje algebarske jednačine, izvšava aritmetiku kompleksnih brojeva, modularnu aritmetiku i aritmetiku sa polinomima, a sve to uz standardnu aritmetiku.[1] Rešava i izvršava simbolički račun, (izvode, ekstremne vrednosti, Tejlorov niz, integraciju polinoma i Laplasove transformacije), numeričku integraciju i radi kompletnu elementarnu algebru, osim logaritama. Trigonometrijske funkcije se mogu uneti i manipulisati koristeći se kompleknsim eksponentima, uz pomoć GNU m4 preprocesora. Trenutno, generalne funkcije poput f(x) nisu implementirane, kao ni aritmetika proizvoljne preciznosti ni aritmetika intervala, niti matrice.

Matomatik (Mathomatic)
Matomatik na emulatoru terminala
Matomatik na emulatoru terminala
Programer(i)Džordž Geslajn II
Stabilno izdanje
16.0.5
Napisan uC
Operativni sistemVišeplatformski softver, Posiks
PlatformaBilo koja računarska arhitektura
TipRačunarski algebarski sistem
LicencaGNU ograničena javna licenca, verzija 2.1
Veb-sajtwww.mathomatic.org

Odlike

uredi

Mathomatic se pokazuje u najboljem svetlu rešavanjem, diferenciranjem, uprošćavanjem, izračunavanjem i vizuelizacijom elementarne algebre.[2] Takođe radi sumu, množenje i automatski prikaz kalkulacija bilo koje dužine putem ubacivanja sekvencijalnih, odnosno test-vrednosti u bilo koju formulu, a potom zaokružuje i uprošćava pre prikazivanja.

Međurezultati (koji prikazuju proces rada) se mogu prikazati unosom komande "set debug 1" (videti primer sesije). Komanda "set debug 2" otkriva još više detalja o procesu rada.

Softver ne sadrži Grafičko korisničko sučelje osim verzija za pametne telefone i tablete sa zvaničnim zaštitnim znakom Mathomatic, koji koriste operativne sisteme iOS[3] ili Android.[4] Besplatan Mathomatic softver, na zvaničnoj Mathomatic internet stranici[5] je odobren za korišćenje unutar bilo kog tipa softvera, zbog svoje slobodne softverske licence (GNU LGPL). Dostupan je kao besplatna softverksa biblioteka, i kao besplatna aplikacija sa konzolnim modom koja koristi obojen interfejs komandne linije sa priti-print izlazom koji se pokreće na terminalnom emulatoru pod bilo kojim operativnim sistemom.[2] Konzolni interfejs je vrlo prost i zahteva malo više od učenja osnovnog algebarskog zapisa za početak rada. Sav ulaz i izlaz je tekst tipa ASCII. Podrazumevano, ulaz je standardni ulaz i izlaz je standardni izlaz. Mathomatic se obično kompajlira uz pomoć edit linije ili GNU readline-a za lakši ulaz.

Nema programerske mogućnosti; interpretator radi kao kaklulator za algebru. Izrazi i jednačine se unose putem standardne algebarske infiksne notacije. Operacije se izvode nad njima unosom običnih komandi na engleskom jeziku.

Pošto je sva numerička aritmetika sa dvostrukom preciznošću, a greške pri zaokruživanju se ne prate, Mathomatic nije prigodan za aplikacije koje zahtevaju visoku preciznost, kao što su kalkulacije u polju astronomije. Koristan je za simboličko-numeričke proračune sa preciznošću od oko 14 cifara, iako će većina rezultata biti egzaktni, po mogućnosti.

Mathomatic se može koristiti kao alat za generaciju aritmetičkog koda celobrojnih i „floating point“ vrednosti, uprošćavajući i prenoseći jednačine u optimizovane izraze u programima Python, C i Java programskim jezicima. Izlaz se može prilagoditi da bude kompatibilan sa ostalim matematičkim programima, osim formata TeX i MathML, za koje je ulaz/izlaz trenutno nedostupan. ASCII karakteri, koji su dozvoljeni u programu Mathomatic su promenljivi, dozvoljavajući imena promenljivih u TeX formatu.

Mathomatic izvorni kod se može kompajlirati kao biblioteka simboličke matematike sa vrlo prostim aplikacionim programskim interfejsom, koji se može povezati sa C kompatibilnim programima koji moraju koristiti Mathomatic pokretač za simboličku matematiku.

Primer sesije

uredi
 
Dodatni niz primera sa snimka ekrana

Primer rešavanja i generisanja koda, gde je pokazan tok rada:

1-> x = (a+1)*(b+2)

#1: x = (a + 1)*(b + 2)

1-> set debug 1
Успех.
1-> solve for b
level 1: x = (a + 1)*(b + 2)
Subtracting "(a + 1)*(b + 2)" from both sides of the equation:
level 1: x - ((a + 1)*(b + 2)) = 0
Subtracting "x" from both sides of the equation:
level 1: -1*(a + 1)*(b + 2) = -1*x
Dividing both sides of the equation by "-1":
level 1: (a + 1)*(b + 2) = x
Dividing both sides of the equation by "a + 1":
level 1: b + 2 = x/(a + 1)
Subtracting "2" from both sides of the equation:
level 1: b = (x/(a + 1)) - 2
Solve completed:
level 1: b = (x/(a + 1)) - 2
Solve successful:

           x
#1: b = ------- - 2
        (a + 1)

1-> code C ; output C programming language code
b = ((x/(a + 1.0)) - 2.0);
1-> variables C ; define the variables for the C compiler
double x;
double a;
double b;
1->

Istorijat

uredi

Razvoj programa Mathomatic je započeo Džordž Geslajn II, godine 1986. kao eksperiment za računarizovanu matematiku.[6] Prvobitno je napisan na jeziku Microsoft C za MS-DOS. Verzije 1 i 2 su puštene na tržište od strane kompanije Dynacomp iz Ročestera, u državi Njujork 1987.[7] i 1988.[8] kao DOS proizvod namenjen nauci. Nakon toga je pusten kao šerver a nakon toga i imejlver, sa 2D programom za grafike funkcija. Na kraju stoleća, Mathomatic je portovan na GNU C kompajler pod sistemom Linux i tako postao slobodni softver. Program za crtanje grafika je diskontinuiran; 2D/3D grafici funkcija su se od tad crtali pomoću programa gnuplot.

Ime "Mathomatic" is a portmanto engleskih reči "math" i "automatic",[2] a inspirisan je sličnim sklapanjem naziva Rog-O-Matic, koji je bio rani eksperiment veštačke inteligencije.

Dostupne platforme

uredi

Mathomatic je dostupan na skoro svim platformama, uključujući Windows koristeći MinGW.[9] Dostupan je za Mac OS X,[10][11] za iOS,[3] za Android[4] i za Nintendo DS pod DSLinux-om i kao nezavisna verzija.[12] Fedora Linux,[13] Slackware,[14] Debian,[15] Ubuntu,[16] Gentoo Linux,[17] i sve glavne BSD Unix distribucije[18][19][20] sadrže Mathomatic kao paket koji može automatski da se instalira. Postoji način da se portuje na JavaScript uz pomoć kompajlera pod nazivom Emscripten, dozvoljavajući tako programu Mathomatic da radi unutar internet pretraživača.[21] Portove zasebno održavaju stručnjaci, u zavisnosti od oblasti u kojoj su stručni.

Zahtevnost

uredi

Izgradnja sa izvora zahteva C kompajler sa standardnim POSIX C bibliotekama. Ako se Mathomatic kompajlira putem GCC C kompajlera ili putem Minijaturnog C kompajlera za operativni sistem sličan Unix-u, nije potrebno izvršiti ikakve izmene izvornog koda. Mathomatic ne koristi nikakve specifične GCC kodove, tako da će se lako kompajlirati uz pomoć bilo kog C kompajlera. Korišćenje Mathomatic Simboličke Matematičke Biblioteke dozvoljava mešanje programskih jezika i nezavisno je od operativnog sistema.[22]

Mathomatic se može portovati na bilo koji računar koji ima bar 1 megabajt slobodne RAM memorije. Standartni paket programa Mathomatic koji se distribuira[5] zahteva prosečno bar 400 megabajta prostora u zavisnosti od veličine i broja unetih jednačina. Prostori za jednačine su nizovi određene veličine size koji se alociraju po potrebi, čija se veličina određuje tokom kompilacije ili pokretanja. Svaki algebarski izraz ili uneta jednačina se skladišti u prostoru za jednačine.

Mathomatic je napisan tako da izvršava većinu simboličkih manipulacija putem pomeranja memorije, poput asemblerskog programa. Ovo je razlog zašto Mathomatic nasilno prekida sa radom („krešuje“) kada se koristi sa novim LLVM zadnjim krajem, kojem se iz nekog razloga ne sviđa funkcija iz C biblioteke pod nazivom memmove(3). Da bi se Mathomatic koristio sa C kompajlerom koji koristi LLVM zadnji kraj, treba isključiti sve optimizacije koje sadrže "-O0" na C kompajlerskoj komandnoj liniji. U suprotnom, regresivni testovi će završiti u beskonačnoj petlji. Ovo je najverovatnije bag u optimizaciji LLVM-a. Da bi pomogli onima koji rade na otklanjanju ovog baga u optimizaciji, Mathomatic neće uspeti sa izvršavanjem zadatka kad LLVM optimizuje uprošćenje (32^.5) do 4*(2^.5), i svaki put će ući u beskonačnu petlju.

Vidi još

uredi

Reference

uredi
  1. ^ FSF Free Software Directory entry [1]
  2. ^ a b v George Gesslein II (29. 6. 2012). „Mathomatic User Guide”. Official Mathomatic documentation. Arhivirano iz originala 22. 07. 2012. g. Pristupljeno 13. 7. 2012. 
  3. ^ a b Mathomatic for iOS.
  4. ^ a b Mathomatic for Android.
  5. ^ a b Found on the Mathomatic website.
  6. ^ George Gesslein II (29. 6. 2012). „Mathomatic User Guide”. Official Mathomatic documentation (history). Arhivirano iz originala 22. 07. 2012. g. Pristupljeno 13. 7. 2012. 
  7. ^ The Software Catalog: Microcomputers. Elsevier. 1987. ISBN 978-0-444-01290-6. 
  8. ^ Intelligent Instruments & Computers. Heuthig Publishing. 1988. 
  9. ^ Mathomatic MS-Windows port Arhivirano na sajtu Wayback Machine (31. januar 2016).
  10. ^ Mathomatic Mac OS X port Arhivirano na sajtu Wayback Machine (31. januar 2016).
  11. ^ Mathomatic Mac OS X port from MacPorts
  12. ^ Mathomatic ported to the Nintendo DS Arhivirano na sajtu Wayback Machine (28. oktobar 2007)
  13. ^ The Mathomatic package in Fedora Arhivirano 2012-12-20 na sajtu Archive.today
  14. ^ Official Slackware port of Mathomatic in SlackBuilds.
  15. ^ All Mathomatic packages in Debian.
  16. ^ All Mathomatic packages in Ubuntu Linux.
  17. ^ Gentoo Packages /package/sci-mathematics/mathomatic.
  18. ^ „OpenBSD CVS tree for Mathomatic”. Arhivirano iz originala 20. 12. 2012. g. Pristupljeno 20. 01. 2016. 
  19. ^ NetBSD pkgsrc CVS tree for Mathomatic
  20. ^ FreeBSD CVS tree for Mathomatic
  21. ^ „Mathomatic in JavaScript[[Kategorija:Botovski naslovi]]”. Arhivirano iz originala 14. 01. 2014. g. Pristupljeno 20. 01. 2016.  Sukob URL—vikiveza (pomoć)
  22. ^ George Gesslein II (29. 6. 2012). „Mathomatic User Guide”. Official Mathomatic documentation (developer info). Arhivirano iz originala 22. 07. 2012. g. Pristupljeno 13. 7. 2012. 

Spoljašnje veze

uredi