ç§ã¯èªåã®èŠç¹ãçã£ãŠããŸãããUPDã®è©³çŽ°ãåç
§ããŠãã ãããWolframèšèªïŒä»¥éWLïŒã«ã€ããŠè©±ããããã§ãã æ··ä¹±ããããããŠç³ãèš³ãããŸãããã
ãã®æçš¿ã¯
Nilisããã®
ãã®ã³ã¡ã³ããžã®è¿ä¿¡ã®è©Šã¿ããçãŸããŸããã
WLã¯äŸç¶ãšããŠé«åºŠã«å°éåãããèšèªã§ãã Wolframã¯åã«ãéã皌ãããšã«æ±ºãããããWLãæ±çšèšèªãšããŠå®£äŒããããã«ãªããŸããã WLã奜ããªããããã¯ããªãããŸã ä»ã®èšèªããŸã åŠãã§ããªãããšãæå³ããŸãã åãPythonãå«ãä»ã®èšèªã®æãšã¯ç°ãªããWLã¯ããªãŒãœãããŠã§ã¢ã§ã¯ãªãããšã«ã泚æããŠãã ããã
çŽ6ã10幎åãç§ãåŠæ ¡ã«ãããšããç§ã¯BASICãPascal / DelphiãC / C ++ããã³WLããç¥ããŸããã§ããã OSã«ã€ããŠã¯ãWindowsã®ã¿ãæ±ããŸããã ã¹ã¯ãªããèšèªïŒperlãpythonãbashïŒãäœã§ãããç¥ããŸããã§ããããã¹ã¯ãªãããã®æŠå¿µèªäœãç¥ããŸããã§ããã ã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ã¯æ代é
ãã®ã€ã³ã¿ãŒãã§ã€ã¹ã§ãããå¯äžã®æ£ããããã°ã©ã ã€ã³ã¿ãŒãã§ã€ã¹ã¯ã°ã©ãã£ã«ã«ãªã€ã³ã¿ãŒãã§ã€ã¹ã ãšæããŸããã DelphiãšWLã§ããã°ã©ãã³ã°ããŸããã Delphiããã°ã©ã ã¯åžžã«ã°ã©ãã£ã«ã«ã§ãã Olympiadããã°ã©ãã³ã°ãé€ããããã«ããããã°ã©ã ã®èŠä»¶ã¯ããã¹ãã§ããå¿
èŠããããšããããšã§ãããDelphiãšC ++ã§äœæããŸããã WLã«ã€ããŠç¥ã£ããšããããªããšåãããã«ãç§ã¯ããã«é
äºãããŸããã WLã®ã³ãŒãã¯Delphi / C ++ãããã¯ããã«çãããã§ãã ãããŠäžè¬ã«ãWLã¯DelphiãC ++ãšã¯å®å
šã«ç°ãªã£ãŠããããã§ãã æ©èœçã«ããã°ã©ã ããæ©äŒããã£ãããã§ãã WLã®äŸã䜿çšããé¢æ°åããã°ã©ãã³ã°ã«ç²ŸéããŸãããããæšæºçãªãé¢æ°åèšèªïŒHaskellãLispãMLïŒãããããšãç¥ããŸããã§ããã
ãã¡ã€ã«ãæäœããããã®ããã°ã©ã ãäœæããå¿
èŠããããšãã¯ãDelphiã§äœæããŸããã ãããŠãGUIã§ã 圌ã¯çªããã¿ã³ãæžããã ãäœæ¥ãããã©ã«ããå
¥åããããªã©ã®ãã£ãŒã«ããããã¯ãbashã®1è¡ã§å®è¡ã§ããããšãç解ããŠããŸããã§ããã
ããšãã°ããã©ã«ããŒå
ã®ãã¡ã€ã«åãã©ãã³èªããããªã«æåã«å€æããããã°ã©ã ãäœæããããã«æ±ããããŸããã Delphiã§guiã䜿çšããŠããã°ã©ã ãäœæããŸããã ãå€æããããã©ã«ããå
¥åããŠãã ãããã ã³ãŒãã¯ããããã1000è¡ã§ã¯ãªããŠããå°ãªããšã100è¡ã§ããã ããã¯ãããã次ã®ãããªGNU / Linuxã®1ã€ã®ã³ãã³ãã«ãã£ãŠè¡ãããããšãç解ããŠããŸãïŒ
prename 'y/abc.../.../' *.avi
ç§ã¯ãWindowsçšã®ãã¡ã€ã«ãããŒãžã£ãŒïŒãã¡ãããWindowsãä»ã®OSã®å Žåãç§ã¯ç¥ããŸããã§ããïŒãæžãã¢ã€ãã¢ãæãã€ããŸãããWLã§ã¹ã¯ãªãããäœæããå¯èœæ§ããããŸãïŒåæã«ããã¹ã¯ãªããããšããèšèãç¥ããŸããã§ããïŒã ãã®ãããããšãã°ããã©ã«ãã®FlattenãäœæããWLã®Flattené¢æ°ããããŸãããã€ãŸããæå®ããããã©ã«ãå
ã®ãã©ã«ãã®éå±€å
šäœãç Žæ£ãããã¹ãŠã®ãã¡ã€ã«ãããŒãã«ãã³ãããŸãã
ãããã6幎åã倧åŠã«è¡ããGNU / Linuxã«ç²ŸéããC / C ++ã§ããã°ã©ãã³ã°ãå§ããGNU / Linuxã®äžã§bashãå§ããŸããã ç§ã¯ãDelphiãšWLã§ã®ãã¹ãŠã®ããã°ã©ãã³ã°ïŒæ°åŠãé€ãïŒããã³ã»ã³ã¹ã§ããããšã«æ°ä»ããŸããã ãã¹ãŠã®Delphiããã°ã©ã ãbashã®åäžè¡ãšããŠå®è£
ã§ããããšã WLã¯ãæ°åŠçãªåé¡ã«ã®ã¿äœ¿çšããå¿
èŠããããŸãã ã³ãã³ãã€ã³ã¿ãŒãã§ã€ã¹ã¯æ代é
ãã§ã¯ãªãããšã«æ°ä»ããŸããã ãããŠããã¡ã€ã«ãããŒãžã£ã®ã¢ã€ãã¢ã¯ãã³ã»ã³ã¹ã§ããããšã«æ°ä»ããŸããã GNU / Linuxå
šäœã¯ããã¹ãŠã®ã¹ã¯ãªããèšèªã§ã¹ã¯ãªãããäœæã§ããæ©èœãåãããã¡ã€ã«ãããŒãžã£ãŒïŒããã³IDEïŒã§ããããã§ãã
ããã§ããã°ã©ãã³ã°ãéå§ããŸãããå
çã®ååã¯ãã¬ãã§ãã§ãã 圌ïŒããã³ä»ã®äººã
ïŒãããWLã¯åãªãããã¡ãã§ãããæ°åŠçåé¡ã§ãããããšãç¥ããŸããã WLã¯ãé¢æ°ããã°ããããããããããå°é¢æ°ãèŠã€ããå¿
èŠãããå Žåã«äœ¿çšããå¿
èŠããããŸãã ããå°é£ãªã¿ã¹ã¯ã«ã€ããŠã¯ã䜿çšã§ããŸããã ãªããªãïŒ
Bogachevã¯ã圌ã®æè²æŽ»åã«å ããŠãããäŒç€Ÿã§ãã¯ãã«ã«ãã£ã¬ã¯ã¿ãŒãšããŠåããŠãããç§ã¯ããã§åããŠããŸããã ããã§æ²¹ç°ã®ã·ãã¥ã¬ãŒã¿ãŒãäœæããŸããããã®å°åã®ãéãè«å€§ã§ããããšã説æããå¿
èŠã¯ãªããšæããŸãã ãã®ãããã·ãã¥ã¬ãŒã¿ãŒã¯C ++ã§èšè¿°ãããŠãããèšç®ãå®è¡ããã³ãŒãïŒãã£ãã¡ãŒãç·åœ¢æ¹çšåŒç³»ã解ãïŒãå«ã¿ãŸãã ãããŠãã¡ãããWLã§ã¯ãªããå¿
èŠãªé床ããªãããããã®WLã«ã¯é©åãªä¿¡é Œããªããããäžè¬çã«ããã§WLã䜿çšããããšã¯æ·±å»ã§ã¯ãããŸããã
ãããããç§ã¯
ã€ã¶ãã«ç³»ãå«ãæ£åŒãªæ°åŠã«åºäŒã£ãã ãã®ãããã³ã³ãã¥ãŒã¿ãŒã§æ°åŠçãªæäœãå®è¡ããæ°åŠçãªæ£ç¢ºæ§ã確èªããããã®å¯äžã®æ¹æ³ã¯ã圢åŒçãªæ°åŠã§ããããšããäŒãããŸãã ãããŠãæ£åŒãªæ°åŠã®SimplifyãSolveãªã©ã®ãããã®æµ
ç¬ã¯ããã§ã¯ãããŸããã
ãããããã®ãããªã·ã¹ãã ïŒã€ãŸããæ£åŒãªæ°åŠãæäœããããã®ã·ã¹ãã ïŒã¯WLã«äŒŒãŠããŸããã ãããã®äœæ¥ã¯æ¬¡ã®ãšããã§ããã·ã¹ãã ã«æ£åŒãªèšŒæãå°å
¥ãããããæ£ãããã©ããã瀺ããŸãã åé¡ãçºçããŸãïŒWLã®åäœæ¹æ³ãšåœ¢åŒçãªæ°åŠã®æ£ç¢ºããæ··ããããšã¯å¯èœã§ããïŒ ã¯ããã§ããŸãã
MathematicaãMapleãªã©ã¯ãããããã³ã³ãã¥ãŒã¿ãŒä»£æ°ã·ã¹ãã ã«å±ããŸãã ãããã£ãŠããã®ãããªã·ã¹ãã ã¯ãã¹ãŠãæ°åŠçãªå³å¯ãã®æ¬ åŠã«çœªãç¯ããŸãã ãã®ç¹ã«é¢ããŠã圢åŒæ°åŠã«åºã¥ããã³ã³ãã¥ãŒã¿ãŒä»£æ°ã®çã«æ£ããã·ã¹ãã ãæžããšããèãããããŸãã ããã§ã圢åŒæ°åŠã®å°é家ã¯ããã®æ¹åã®æåã®å®éšã®çµæã瀺ããŠããŸãïŒ
www.cs.ru.nl/~freek/pubs/holcas.pdf ãå°ãªããšãæåã®2ããŒãžãèªãã§ãã ããã
ãããã£ãŠãWLã®æ°åŠã«ã€ããŠã¯ãã°ã©ãããã°ããäœæããããå°é¢æ°ãèšç®ãããããå¿
èŠãããå Žåã¯ãWLã䜿çšããŸãã æ¬æ Œçãªæ°åŠçèšç®ãè¡ãå Žåã¯ãBogachevã®ããã«æ±çšèšèªïŒC ++ãªã©ïŒã§èªåã§ã³ãŒããèšè¿°ããããæ±çšèšèªçšã«ãããã§ãã·ã§ãã«ã©ã€ãã©ãªã䜿çšããŸãã èšç®ã§ã¯ãªããã€ãŸãæ°å€ã§ã¯ãªãæ°åŠçãªæäœãå®è¡ããå¿
èŠãããå Žåã¯ãå
¬åŒã®æ°åŠïŒããšãã°ãIsabelleïŒã䜿çšããããããšãã°äžèšã®èšäºã§çŽ¹ä»ããå
¬åŒã®ã³ã³ãã¥ãŒã¿ãŒä»£æ°ã·ã¹ãã ã䜿çšããŠãæåã§æäœãè¡ããŸãïŒç¢ºãã«ããã®ãããªã·ã¹ãã ã¯çŸåšéçºã®åæ段éã«ãããŸãïŒã
éæ°åŠçãªåé¡ã®å ŽåãWLã¯ãŸã£ãã䜿çšã§ããŸããã ã¹ã¯ãªãããå«ãä»ã®èšèªã䜿çšããŸãã WLã奜ããªããé¢æ°åèšèªãèŠãŠãã ããã ç¹ã«ãLispãèŠãŠãã ãããããã¯ãWLãäœãããèŠãç®ãæ£ç¢ºã§ãã
çµæã WLã¯åãªãããã¡ãã§ãã ããã¯åŠçã®ããŒã«ã§ãããç§åŠè
ã§ã¯ãããŸããã ããšãã°ãLarge Hadron Colliderã®ããŒã¿ãWLã§èšç®ãããããšã¯ã»ãšãã©ãããŸããã 1CãšããŠã®WLïŒè²§åŒ±ã§ãé«åºŠã«å°éåããããåçšã®ãç¬èªã®èšèªã
ãã®æçš¿ã«èå³ã®ãããã®ïŒåœ¢åŒæ°åŠãé¢æ°åããã°ã©ãã³ã°ãªã©ïŒãããã°ãå°ããŠãçããŸãã
UPD 2015幎7æ20æ¥ WLãLispã«äŒŒãŠããçç±ïŒ
habrahabr.ru/post/263015/#comment_85063832015幎7æ22æ¥ã® UPDãWLãšLispã®é¡äŒŒæ§ãã€ãŸããããã°ã©ã ã¯ããŒã¿ã§ããããšããååã«ã€ããŠ
ããå°ã ïŒ
habrahabr.ru/post/263015/#comment_8506389 ã
WLãé©çšã§ããé åãšããã®æçš¿ã®ã¿ã€ãã«ã«ã€ããŠå°ã説æããŸãã WLãçå£ã«åãæ¢ããŠãã人ãå€ãã®ã¯å¥œãã§ã¯ãããŸããã ã€ãŸããç§åŠç 究ã§äž»èŠãªåœ¹å²ãæããããšãã§ããããŒã«ããŸãã¯ããã«æªãããšã«ãæ±çšèšèªãšããŠãããèªèãã人ã
ã WLã®çŸåŸ³ïŒä»¥åã¯ããã ã£ãïŒã«é
äºãããWLãå¯äžã®é¢æ°åããã°ã©ãã³ã°èšèªãšã¯çšé ãããšãç¥ããªã人ã ã¹ã¯ãªããããã°ã©ãã³ã°èšèªïŒPerlãPythonãBashïŒãå®éã«ååšãããã®WLãåãé€ãããé¢æ°åèšèªïŒLispãHaskellãMLïŒãããããšãç¥ããªãã ããã§ããããã®äººã
ã®ç®ãéãããã«ãç§ã¯èªåã®æçš¿ãæžããŸããã ãããŠãã§ããã ã説åŸåãæãããããã«ãç§ã¯æ²é³ŽãäžããèŠåºãã䜿çšããŸããïŒãWL-ToyãïŒã ãã¡ãããWLã«ã¯ãŸã ç¬èªã®ã¹ã³ãŒããããããšãç解ããŠããŸãã 掟çç©ãªã©ããã°ããèŠã€ããããããããã¿ã€ããäœæããå¿
èŠããããŸããããã¯ããšã©ãŒãé倧ã§ã¯ãªãèšç®ãå®è¡ããããã§ãïŒããšãã°ã倧åŠã§å®¿é¡ãããŠçšèªéãæžããšãïŒãç¹å®ã®èšç®ãå®è¡ããããã«ãå¥ã®ããä¿¡é Œæ§ã®é«ãæ¹æ³ã§æ€èšŒãããŸãã ãã®ãããã¯ã«é¢ããç§ã®ã³ã¡ã³ãïŒ
habrahabr.ru/post/263015/#comment_8506387æ°å€ããã³åæã®åé¡ã«é¢ããç§ã®ã³ã¡ã³ãïŒ
habrahabr.ru/post/263015/#comment_8507849ç§ã®äººçãšWindows vs GNU / Linuxã®è©³çŽ°ã«ã€ããŠã GNU / Linuxãªã©ã«ã€ããŠæžããã®ã¯ãGNU / LinuxãWindowsãããåªããŠãããšèšãããã£ãããã§ã¯ãªããGUIã¯ããã¹ãã€ã³ã¿ãŒãã§ã€ã¹ãããåªããŠããããã§ãã ãããŠãç§ã¯ãããå
¬è¡šããããã«ãã¬ãã§ãã«ã€ããŠæžããŸããã§ããã ã¹ããŒãªãŒããã説åŸåã®ãããã®ã«ããããã«ãèªåã®äººçã«ã€ããŠå°ãã話ããããã£ãã®ã§ãã¢ã€ãã¢ãã©ã®ããã«å€ãã£ãããæ確ã«ãªããŸããã ãããŠãGNU / Linuxã¯æè¡çã«ã¯Windowsãããã¯ããã«åªããŠãããšã¯æããŸããã ãŸããGUIãšCLIã¯ãã¢ããªã±ãŒã·ã§ã³ãšã®2ã€ã®ç°ãªãã€ã³ã¿ãŒãã§ã€ã¹ã«ãããªãããšãç解ããŠããŸãã
ããªãŒãœãããŠã§ã¢ã«ã€ããŠã å
·äœçã«ã¯ãWLã®å ŽåãåŸãããçµæã®ä¿¡é Œæ§ãäœäžãããããWLã®èªç±åºŠã®æ¬ åŠã¯å€§ããªãã€ãã¹ã«ãªããŸãã
UPD 2015幎7æ26æ¥ãäŸããã³ãã®ä»ã®äŸãåçŽåããŸãã Simplifyã䜿çšããäŸãå°ã倱æããŸããã ç§ã¯æ¬¡ã®ããšã念é ã«çœ®ããŠããŸããïŒ
Simplify[(x^2 + x) / x]
ã¯
x + 1
ã§ãããxããŒãã®å Žåã¯èæ
®ãããªããããããã¯ééã£ãŠããŸãã ããã«ãx / xã¯1ã«åçŽã«åŽ©å£ããŸãããåã³ãxããŒãã«çãããªãããšãèæ
®ããŠããŸããã ããã«ãç§ã®æèŠã§ã¯ãéåžžã«æçœãªäŸã¯WLããã¥ã¡ã³ãïŒ
reference.wolfram.com/language/ref/Simplify.html ïŒããçŽæ¥ã®ãã®ã§ãã
In[5]:= hiddenzero = x^2 + 2 x + 1 - (x + 1)^2; anotherhiddenzero = Sin[x]^2 + Cos[x]^2 - 1; betterhiddenzero = Gamma[x + 1] - x Gamma[x]; In[6]:= {hiddenzero/anotherhiddenzero, anotherhiddenzero/hiddenzero, hiddenzero/betterhiddenzero, betterhiddenzero/hiddenzero} Syntax::sntxf: "hiddenzero/anotherhiddenzero" cannot be followed by ", anotherhiddenzero/hiddenzero, ". Syntax::sntxf: "" cannot be followed by "hiddenzero/anotherhiddenzero, anotherhiddenzero/hiddenzero, ". In[8]:= Map[Simplify, {hiddenzero/anotherhiddenzero, anotherhiddenzero/hiddenzero, hiddenzero/betterhiddenzero, betterhiddenzero/hiddenzero}] 2 2 -1 + Cos[x] + Sin[x] Simplify::infd: Expression ----------------------- simplified to Indeterminate. 2 2 1 + 2 x + x - (1 + x) -(x Gamma[x]) + Gamma[1 + x] Simplify::infd: Expression ---------------------------- simplified to ComplexInfinity. 2 2 1 + 2 x + x - (1 + x) Out[8]= {0, Indeterminate, 0, ComplexInfinity} In[9]:= Map[FullSimplify, {hiddenzero/anotherhiddenzero, anotherhiddenzero/hiddenzero, hiddenzero/betterhiddenzero, betterhiddenzero/hiddenzero}] 2 2 -1 + Cos[x] + Sin[x] FullSimplify::infd: Expression ----------------------- simplified to Indeterminate. 2 2 1 + 2 x + x - (1 + x) -(x Gamma[x]) + Gamma[1 + x] FullSimplify::infd: Expression ---------------------------- simplified to ComplexInfinity. 2 2 1 + 2 x + x - (1 + x) Out[9]= {0, Indeterminate, 0, ComplexInfinity}
äžè¬çãªåé¡ã®ã»ã¯ã·ã§ã³ã§äŸãæããŸããããããã¯ããããçš®é¡ã®WLã®äžäžèŽãæ¢ãã®ã«æé©ãªå Žæã§ãã 次ã«ãäžèšã®èšäºïŒæ£åŒãªæ°åŠã«ã€ããŠïŒã®äŸãåãäžããå°ãå€æŽããŠMapleããWLã«è»¢éããŸãã
In[11]:= N[Integrate[E^(-(x-1)^2)/Sqrt[x], {x, 0, Infinity}]] Out[11]= 0. + 0.411862 I In[12]:= NIntegrate[E^(-(x-1)^2)/Sqrt[x], {x, 0, Infinity}] Out[12]= 1.97373
NIntegrate [...]ãåãåã£ãçãã¯æ£ããããN [Integrate [...]]ã¯æ£ãããªããšãã匷ãçãããããŸãã NIntegrateã¯ãå
éšã§æ°å€åŸ®åã®åçŽã§æããªã¢ã«ãŽãªãºã ãå®è¡ããããã§ãã ã€ã³ãã°ã¬ãŒããšã¯ç°ãªããã€ã³ãã°ã©ãŒãã¯ãæ£åŒãªå³å¯ãã®ãªã代æ°çæäœã®æªç¥ã®æªç©ã§ããããšã©ãŒãèµ·ãããããã æåŸã«ãæ°å€çã«ç©åããC / C ++ããã°ã©ã ãèªåã§äœæããå Žåã«ã®ã¿ããããã®çµæã®1ã€ãæ£ãããšèããŠããŸãã ãŸãã¯ãç§ãçŽã®äžã§ãã®ç©åãèŠã€ããïŒãŸãã¯å°ãªããšããã§ãã¯ããïŒå Žåã ïŒããã§ãããã®ç©åã¯æããã«æ¬ç©ã§ãªããã°ãªããŸãããïŒ
ãããŠæåŸã«ã
ç§ã¯èªåã®ç«å Ž
ãçããŸãã ãããªãã¯ç§ã«åœ±é¿ãäžããŸããã玳士ã®è§£èª¬è
ã ããããïŒããããïŒïŒãWLã¯éåžžã«é«å質ã®è£œåã§ãããæ·±å»ãªç§åŠççšéããã®ä»ã®çšéã«é©ããŠããŸãã åæã«ãç§ã¯å察ã«å¿ãå€ãããæçµçã«èªåèªèº«ã®ããã«è¯ãWLãã©ããã決ããŸããç§ã¯ãããããŸã䜿ãããšããã§ããŸããããç§ã¯ä»ãããããããããŸããã
ããã«è¿œå ïŒWLã§ä¿¡é Œæ§ã®é«ãçµæãååŸããã«ã¯ãããã䜿çšã§ããå¿
èŠããããŸãïŒãã ããä»ã®ãã¯ãããžãŒã«ãåãããšãåœãŠã¯ãŸããŸãïŒã ããšãã°ãWLããŒãåæ¯ãªã©ã®ããããçš®é¡ã®ç¹æ®ãªã±ãŒã¹ã§ã©ã®ããã«æ©èœããããç解ããã«ã¯ïŒäžèšã®ãã®æçš¿ã®äŸãåç
§ïŒã ããã«ãWLã¯é«æ°Žæºèšèªã§ãããäœæ°ŽæºèšèªïŒC ++ãªã©ïŒã䜿çšããŠã³ã³ãã¥ãŒã¿ãŒã§æ°åŠãæäœã§ããããšãç解ããããšãéèŠã§ãã æåŸã«ãWLãæ¯èŒçå§çž®ãããã³ãŒããèšè¿°ã§ããå¯äžã®èšèªã§ã¯ãªããã¹ã¯ãªããèšèªïŒPerlãPythonãBashïŒãããããšãç¥ã£ãŠããããšãéèŠã§ãã ãããŠãWLã¯é¢æ°åããã°ã©ãã³ã°ããµããŒãããå¯äžã®èšèªã§ã¯ãªããLispãMLãHaskellãååšããŸãã
ç§ã¯Habrã倧奜ãã§ããHabrã¯ããªããã©ãã»ã©ééã£ãŠããããæããŠãããŸãïŒ :)
äžããããäŸã¯Mathematica 10.0.2ã«ãããŸããã
2015幎7æ26æ¥ã®UPDã ããã§æ£ããææãããŠ
ããããã« ãããã®æçš¿ã®ã»ãšãã©ãã¹ãŠã®äŸ¡å€ã¯ã³ã¡ã³ãã«ãããŸããã :)
UPD 2015幎7æ26æ¥ çµ±åããããã°ãä¿®æ£ãããŸãã ã