Матоматик

Матоматик (Mathomatic)
Матоматик на емулатору терминала
Матоматик на емулатору терминала
Програмер(и)Џорџ Геслајн II
Стабилно издање
16.0.5
Написан уC
Оперативни системВишеплатформски софтвер, Посикс
ПлатформаБило која рачунарска архитектура
ТипРачунарски алгебарски систем
ЛиценцаGNU ограничена јавна лиценца, верзија 2.1
Веб-сајтwww.mathomatic.org

Матоматик  је слободни рачунарски алгебарски систем генералне сврхе доступан за портовање који може да извршава симболичко рачунање, упрошћава, комбинује и упоређује алгебарске једначине, извшава аритметику комплексних бројева, модуларну аритметику и аритметику са полиномима, а све то уз стандардну аритметику.[1] Решава и извршава симболички рачун, (изводе, екстремне вредности, Тејлоров низ, интеграцију полинома и Лапласове трансформације), нумеричку интеграцију и ради комплетну елементарну алгебру, осим логаритама. Тригонометријске функције се могу унети и манипулисати користећи се комплекнсим експонентима, уз помоћ GNU m4 препроцесора. Тренутно, генералне функције попут f(x) нису имплементиране, као ни аритметика произвољне прецизности ни аритметика интервала, нити матрице.

Mathomatic се показује у најбољем светлу решавањем, диференцирањем, упрошћавањем, израчунавањем и визуелизацијом елементарне алгебре.[2] Такође ради суму, множење и аутоматски приказ калкулација било које дужине путем убацивања секвенцијалних, односно тест-вредности у било коју формулу, а потом заокружује и упрошћава пре приказивања.

Међурезултати (који приказују процес рада) се могу приказати уносом команде "set debug 1" (видети пример сесије). Команда "set debug 2" открива још више детаља о процесу рада.

Софтвер не садржи Графичко корисничко сучеље осим верзија за паметне телефоне и таблете са званичним заштитним знаком Mathomatic, који користе оперативне системе iOS[3] или Android.[4] Бесплатан Mathomatic софтвер, на званичној Mathomatic интернет страници[5] је одобрен за коришћење унутар било ког типа софтвера, због своје слободне софтверске лиценце (GNU LGPL). Доступан је као бесплатна софтверкса библиотека, и као бесплатна апликација са конзолним модом која користи обојен интерфејс командне линије са прити-принт излазом који се покреће на терминалном емулатору под било којим оперативним системом.[2] Конзолни интерфејс је врло прост и захтева мало више од учења основног алгебарског записа за почетак рада. Сав улаз и излаз је текст типа ASCII. Подразумевано, улаз је стандардни улаз и излаз је стандардни излаз. Mathomatic се обично компајлира уз помоћ edit линије или GNU readline-а за лакши улаз.

Нема програмерске могућности; интерпретатор ради као каклулатор за алгебру. Изрази и једначине се уносе путем стандардне алгебарске инфиксне нотације. Операције се изводе над њима уносом обичних команди на енглеском језику.

Пошто је сва нумеричка аритметика са двоструком прецизношћу, а грешке при заокруживању се не прате, Mathomatic није пригодан за апликације које захтевају високу прецизност, као што су калкулације у пољу астрономије. Користан је за симболичко-нумеричке прорачуне са прецизношћу од око 14 цифара, иако ће већина резултата бити егзактни, по могућности.

Mathomatic се може користити као алат за генерацију аритметичког кода целобројних и „floating point“ вредности, упрошћавајући и преносећи једначине у оптимизоване изразе у програмима Python, C и Java програмским језицима. Излаз се може прилагодити да буде компатибилан са осталим математичким програмима, осим формата TeX и MathML, за које је улаз/излаз тренутно недоступан. ASCII карактери, који су дозвољени у програму Mathomatic су променљиви, дозвољавајући имена променљивих у TeX формату.

Mathomatic изворни код се може компајлирати као библиотека симболичке математике са врло простим апликационим програмским интерфејсом, који се може повезати са C компатибилним програмима који морају користити Mathomatic покретач за симболичку математику.

Пример сесије

[уреди | уреди извор]
Додатни низ примера са снимка екрана

Пример решавања и генерисања кода, где је показан ток рада:

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

Историјат

[уреди | уреди извор]

Развој програма Mathomatic је започео Џорџ Геслајн II, године 1986. као експеримент за рачунаризовану математику.[6] Првобитно је написан на језику Microsoft C за MS-DOS. Верзије 1 и 2 су пуштене на тржиште од стране компаније Dynacomp из Рочестера, у држави Њујорк 1987.[7] и 1988.[8] као DOS производ намењен науци. Након тога је пустен као шервер а након тога и имејлвер, са 2D програмом за графике функција. На крају столећа, Mathomatic је портован на GNU C компајлер под системом Linux и тако постао слободни софтвер. Програм за цртање графика је дисконтинуиран; 2D/3D графици функција су се од тад цртали помоћу програма gnuplot.

Име "Mathomatic" is a портманто енглеских речи "math" и "automatic",[2] а инспирисан је сличним склапањем назива Rog-O-Matic, који је био рани експеримент вештачке интелигенције.

Доступне платформе

[уреди | уреди извор]

Mathomatic је доступан на скоро свим платформама, укључујући Windows користећи MinGW.[9] Доступан је за Mac OS X,[10][11] за iOS,[3] за Android[4] и за Nintendo DS под DSLinux-ом и као независна верзија.[12] Fedora Linux,[13] Slackware,[14] Debian,[15] Ubuntu,[16] Gentoo Linux,[17] и све главне BSD Unix дистрибуције[18][19][20] садрже Mathomatic као пакет који може аутоматски да се инсталира. Постоји начин да се портује на JavaScript уз помоћ компајлера под називом Emscripten, дозвољавајући тако програму Mathomatic да ради унутар интернет претраживача.[21] Портове засебно одржавају стручњаци, у зависности од области у којој су стручни.

Захтевност

[уреди | уреди извор]

Изградња са извора захтева C компајлер са стандардним POSIX C библиотекама. Ако се Mathomatic компајлира путем GCC C компајлера или путем Минијатурног C компајлера за оперативни систем сличан Unix-у, није потребно извршити икакве измене изворног кода. Mathomatic не користи никакве специфичне GCC кодове, тако да ће се лако компајлирати уз помоћ било ког C компајлера. Коришћење Mathomatic Симболичке Математичке Библиотеке дозвољава мешање програмских језика и независно је од оперативног система.[22]

Mathomatic се може портовати на било који рачунар који има бар 1 мегабајт слободне RAM меморије. Стандартни пакет програма Mathomatic који се дистрибуира[5] захтева просечно бар 400 мегабајта простора у зависности од величине и броја унетих једначина. Простори за једначине су низови одређене величине size који се алоцирају по потреби, чија се величина одређује током компилације или покретања. Сваки алгебарски израз или унета једначина се складишти у простору за једначине.

Mathomatic је написан тако да извршава већину симболичких манипулација путем померања меморије, попут асемблерског програма. Ово је разлог зашто Mathomatic насилно прекида са радом („крешује“) када се користи са новим LLVM задњим крајем, којем се из неког разлога не свиђа функција из C библиотеке под називом memmove(3). Да би се Mathomatic користио са C компајлером који користи LLVM задњи крај, треба искључити све оптимизације које садрже "-O0" на C компајлерској командној линији. У супротном, регресивни тестови ће завршити у бесконачној петљи. Ово је највероватније баг у оптимизацији LLVM-а. Да би помогли онима који раде на отклањању овог бага у оптимизацији, Mathomatic неће успети са извршавањем задатка кад LLVM оптимизује упрошћење (32^.5) до 4*(2^.5), и сваки пут ће ући у бесконачну петљу.

Референце

[уреди | уреди извор]
  1. ^ FSF Free Software Directory entry [1]
  2. ^ а б в George Gesslein II (29. 6. 2012). „Mathomatic User Guide”. Official Mathomatic documentation. Архивирано из оригинала 22. 07. 2012. г. Приступљено 13. 7. 2012. 
  3. ^ а б Mathomatic for iOS.
  4. ^ а б Mathomatic for Android.
  5. ^ а б Found on the Mathomatic website.
  6. ^ George Gesslein II (29. 6. 2012). „Mathomatic User Guide”. Official Mathomatic documentation (history). Архивирано из оригинала 22. 07. 2012. г. Приступљено 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 Архивирано на сајту Wayback Machine (31. јануар 2016).
  10. ^ Mathomatic Mac OS X port Архивирано на сајту Wayback Machine (31. јануар 2016).
  11. ^ Mathomatic Mac OS X port from MacPorts
  12. ^ Mathomatic ported to the Nintendo DS Архивирано на сајту Wayback Machine (28. октобар 2007)
  13. ^ The Mathomatic package in Fedora Архивирано 2012-12-20 на сајту 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”. Архивирано из оригинала 20. 12. 2012. г. Приступљено 20. 01. 2016. 
  19. ^ NetBSD pkgsrc CVS tree for Mathomatic
  20. ^ FreeBSD CVS tree for Mathomatic
  21. ^ „Mathomatic in JavaScript[[Категорија:Ботовски наслови]]”. Архивирано из оригинала 14. 01. 2014. г. Приступљено 20. 01. 2016.  Сукоб URL—викивеза (помоћ)
  22. ^ George Gesslein II (29. 6. 2012). „Mathomatic User Guide”. Official Mathomatic documentation (developer info). Архивирано из оригинала 22. 07. 2012. г. Приступљено 13. 7. 2012. 

Спољашње везе

[уреди | уреди извор]