<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Toshe and Tanya's blog &#187; math</title>
	<atom:link href="http://toshe.bukov.com/blog/index.php/post/tag/math/feed" rel="self" type="application/rss+xml" />
	<link>http://toshe.bukov.com/blog</link>
	<description>Toshe and Tanya's thoughts about Life, the Universe and Everything</description>
	<lastBuildDate>Mon, 19 Oct 2009 12:10:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Забавна математика с Python</title>
		<link>http://toshe.bukov.com/blog/index.php/post/2007/11/13/123</link>
		<comments>http://toshe.bukov.com/blog/index.php/post/2007/11/13/123#comments</comments>
		<pubDate>Tue, 13 Nov 2007 19:47:37 +0000</pubDate>
		<dc:creator>Toshe</dc:creator>
				<category><![CDATA[Life, the Universe and Everything]]></category>
		<category><![CDATA[Stories from the past]]></category>
		<category><![CDATA[The matrix world]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[mpmath]]></category>
		<category><![CDATA[old times]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[sympy]]></category>

		<guid isPermaLink="false">http://toshe.bukov.com/blog/index.php/post/2007/11/13/123</guid>
		<description><![CDATA[Спомените ми от първите години в Техническия университет (освен разбиващите купони и хроничното студентско безпаричие) са свързани с писането на огромно количество протоколи от измервания и сума ти свързани с това изчисления. Понякога се изкушавах да си напиша кратка програма за да си сметна и начертая графиките от измерените резултати вместо налагания от някои преподаватели [...]]]></description>
			<content:encoded><![CDATA[<p>Спомените ми от първите години в Техническия университет (освен разбиващите купони и хроничното студентско безпаричие) са свързани с писането на огромно количество протоколи от измервания и сума ти свързани с това изчисления. Понякога се изкушавах да си напиша кратка програма за да си сметна и начертая графиките от измерените резултати вместо налагания от някои преподаватели методи с калкулатор и милиметрова хартия. Проблемът беше, че сметките често не бяха елементарни, а Паскал (и по-късно Java) не са от най-лесните за ползване езици за бързи сметки от мързеливи студенти като мен. По-късно се налагаше да правим преобрзувания на уравнения и да ги опростяваме, а единствения софтуер който донякъде помагаше беше MathLab. Въоръжени с него и с теоремите на Нагласаяев и Натъмъняев успявахме да открием нови клонове в инженерната математика. Наистина се изискваше много усилия от предварително дадения ни за сравнение резултат да приложим реверсивен инженериг и да скалъпим обратно оригиналното задание на проекта, но историята познава и по-големи героични постъпки (като например свързването на амперметър като волтметър или паралелното свързванео на електролитни кондензатори към променливотокови трансформаторни вериги).</p>
<p>От тези времена ми остана един респект към многостъпковите изчисления (и към електролитните кондензатори) и често след това съм се чудил дали няма наистина удобен инструмент точно за такива уморителни, но необходими математически гимнастики. Изискванията ми за подобен софтуер са скромни &#8211; да е софтуер с отворен код, преносим (Linux/Windows), да е простичък за инсталация и употреба и по възможност да се разширява лесно. По едно време се бях отказал да търся (а и не ми трябваше, честно казано) докато преди месец попаднах на <a href="http://code.google.com/p/sympy/">SymPy</a> и <a href="http://code.google.com/p/mpmath/">mpmath</a>. Първата е библиотека занимаваща се със символна алгебра (от типа колко е (ax<sup>2</sup> + by<sup>3</sup>)<sup>2</sup> * (x + y<sup>2</sup>)<sup>2</sup> в разгъната форма) изчисляваща също интеграли и диференциали от символни уравнения (такива с неизвестни като x, y и z например). Втората библиотека и за смятане на реални и комплексни числа с произволна точност. Точно така &#8211; с <strong>произволна</strong>. И двете библиотеки са писани на <a href="http://python.org/">Python</a> които освен че е страшно лесен за учене и експериментиране е също и много мощен скриптов език. И двете библиотеки са с отворен код и понеже са на Python са достъпни на всички софтуерни платформи <a href="http://en.wikipedia.org/wiki/Python_(programming_language)#Implementations">поддържани</a> от езика. Ала един пример говори повече от сто реклами, така че ето един пример:<br />
<code><br />
>>>from sympy import *<br />
>>>x = Symbol('x')<br />
>>>y = Symbol('y')<br />
>>>a = ((x**2 + y**3)**2 * (x+y**2)**2)<br />
>>>b.expand()<br />
x**6 + y**10 + x**2*y**6 + x**4*y**4 + 2*x*y**8 + 2*x**2*y**7 + 2*x**4*y**3 + 2*x**5*y**2 + 4*x**3*y**5<br />
>>><br />
</code><br />
Трите символа &#8220;>&#8221; са от промпт-а на Python интепретатора. Последния ред е всъщност разгънатата форма на по-горното уравнение. Звздичката е знак за умножение а двойната звезда  &#8211; повдигане на степен. За домашно &#8211; сметнете уравнението на степен 3 <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Това далеч не е всичко. Ето друг пример (взет от <a href="http://code.google.com/p/sympy/wiki/Tutorial">ръководствотото на SymPy</a>):<br />
<code><br />
>>> from sympy import *<br />
>>> x=Symbol("x")<br />
>>> limit(sin(x)/x, x, 0)<br />
1<br />
>>> limit(x, x, oo)<br />
oo  <em># това е знака за безкрайност <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </em><br />
>>> limit((5**x+3**x)**(1/x), x, oo)<br />
5<br />
</code><br />
Някой спомня ли си как се смятаха границите (лимеси) от училище? Е, с няколко реда код няма да ви се налага да ги смятате.</p>
<p>Впечатлих ли ви? А ето какво може да прави mpmath:<br />
<code><br />
>>> from mpmath import *<br />
>>> pi<br />
mpf('3.1415926535897932384626433832793')<br />
</code><br />
Хм, дотук &#8211; нищо впечатляващо. Ала нека да променим прецизността след десетичната точка (която по подразбиране е 30 знака):<br />
<code><br />
>>> from mpmath import *<br />
>>> mpf.dps = 100 <em># задаваме броя на знаците след десетичната точка</em><br />
>>> pi<br />
mpf('3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798')<br />
</code><br />
Това е числото Пи със сто знака след десетичната точка (или запетая &#8211; кое е по-правилното?). А ето го със 1000 знака:</p>
<p>3.1415926535897932384626433832795028841971693993751058209749445923078164062862<br />
089986280348253421170679821480865132823066470938446095505822317253594081284811<br />
174502841027019385211055596446229489549303819644288109756659334461284756482337<br />
867831652712019091456485669234603486104543266482133936072602491412737245870066<br />
063155881748815209209628292540917153643678925903600113305305488204665213841469<br />
519415116094330572703657595919530921861173819326117931051185480744623799627495<br />
673518857527248912279381830119491298336733624406566430860213949463952247371907<br />
021798609437027705392171762931767523846748184676694051320005681271452635608277<br />
857713427577896091736371787214684409012249534301465495853710507922796892589235<br />
420199561121290219608640344181598136297747713099605187072113499999983729780499<br />
510597317328160963185950244594553469083026425223082533446850352619311881710100<br />
031378387528865875332083814206171776691473035982534904287554687311595628638823<br />
53787593751957781857780532171226806613001927876611195909216420199</p>
<p>За домашна &#8211; пробвайте със  10000 знака <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   Повече примери и идеи за ползване на mpmath вижте нейната <a href="http://code.google.com/p/mpmath/wiki/Documentation">документация</a>.</p>
<p>Забележка: За момента двете библиотеки дефинират числото Пи по свой начин, който не е съвместим, затова рестартирайте комания интерпретатор на Python между тестовете за да получите смислени резултати.</p>
<p>Стана ли ви интересно? Аз със сигурност съм заинтригуван! Сега се надявам по-малко ученици и студенти да четат това, че иначе много домашни ще станат безумно лесни за решаване с няколко редова програмка <img src='http://toshe.bukov.com/blog/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://toshe.bukov.com/blog/index.php/post/2007/11/13/123/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

