You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Sympy.ipynb 140 kB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "# Sympy - Symbolic algebra in Python"
  8. ]
  9. },
  10. {
  11. "cell_type": "markdown",
  12. "metadata": {},
  13. "source": [
  14. "J.R. Johansson (jrjohansson at gmail.com)\n",
  15. "\n",
  16. "The latest version of this [IPython notebook](http://ipython.org/notebook.html) lecture is available at [http://github.com/jrjohansson/scientific-python-lectures](http://github.com/jrjohansson/scientific-python-lectures).\n",
  17. "\n",
  18. "The other notebooks in this lecture series are indexed at [http://jrjohansson.github.io](http://jrjohansson.github.io)."
  19. ]
  20. },
  21. {
  22. "cell_type": "code",
  23. "execution_count": 1,
  24. "metadata": {},
  25. "outputs": [],
  26. "source": [
  27. "%matplotlib inline\n",
  28. "import matplotlib.pyplot as plt"
  29. ]
  30. },
  31. {
  32. "cell_type": "markdown",
  33. "metadata": {},
  34. "source": [
  35. "## Introduction"
  36. ]
  37. },
  38. {
  39. "cell_type": "markdown",
  40. "metadata": {},
  41. "source": [
  42. "There are two notable Computer Algebra Systems (CAS) for Python:\n",
  43. "\n",
  44. "* [SymPy](http://sympy.org/en/index.html) - A python module that can be used in any Python program, or in an IPython session, that provides powerful CAS features. \n",
  45. "* [Sage](http://www.sagemath.org/) - Sage is a full-featured and very powerful CAS enviroment that aims to provide an open source system that competes with Mathematica and Maple. Sage is not a regular Python module, but rather a CAS environment that uses Python as its programming language.\n",
  46. "\n",
  47. "Sage is in some aspects more powerful than SymPy, but both offer very comprehensive CAS functionality. The advantage of SymPy is that it is a regular Python module and integrates well with the IPython notebook. \n",
  48. "\n",
  49. "In this lecture we will therefore look at how to use SymPy with IPython notebooks. If you are interested in an open source CAS environment I also recommend to read more about Sage.\n",
  50. "\n",
  51. "To get started using SymPy in a Python program or notebook, import the module `sympy`:"
  52. ]
  53. },
  54. {
  55. "cell_type": "code",
  56. "execution_count": 2,
  57. "metadata": {},
  58. "outputs": [],
  59. "source": [
  60. "from sympy import *"
  61. ]
  62. },
  63. {
  64. "cell_type": "markdown",
  65. "metadata": {},
  66. "source": [
  67. "To get nice-looking $\\LaTeX$ formatted output run:"
  68. ]
  69. },
  70. {
  71. "cell_type": "code",
  72. "execution_count": 3,
  73. "metadata": {},
  74. "outputs": [],
  75. "source": [
  76. "init_printing()\n",
  77. "\n",
  78. "# or with older versions of sympy/ipython, load the IPython extension\n",
  79. "#%load_ext sympy.interactive.ipythonprinting\n",
  80. "# or\n",
  81. "#%load_ext sympyprinting"
  82. ]
  83. },
  84. {
  85. "cell_type": "markdown",
  86. "metadata": {},
  87. "source": [
  88. "## Symbolic variables"
  89. ]
  90. },
  91. {
  92. "cell_type": "markdown",
  93. "metadata": {},
  94. "source": [
  95. "In SymPy we need to create symbols for the variables we want to work with. We can create a new symbol using the `Symbol` class:"
  96. ]
  97. },
  98. {
  99. "cell_type": "code",
  100. "execution_count": 4,
  101. "metadata": {},
  102. "outputs": [],
  103. "source": [
  104. "x = Symbol('x')"
  105. ]
  106. },
  107. {
  108. "cell_type": "code",
  109. "execution_count": 5,
  110. "metadata": {},
  111. "outputs": [
  112. {
  113. "data": {
  114. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEgAAAAbBAMAAAAt2dQtAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nqzLsm4+cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABYElEQVQoFY2SMUjEQBBFf+4kiSTGqGBhlUKw\nVcFO8IQUIihyYGWTTu1iIRaiXqWW1tpY2Qhq4VU2EQ6usrDWwtJG1FYCcXZn4xI8kptidubvY3aW\nGaDK2nNJFQLHH2pUQqbvfVdDl8ZPJQTYaR+QGfcBtYkxAnK9reaTXlsjN9YbkOoz+WvcAIslUAfw\nlk7nuZrmTnRIkRNjMMu+YIp3tRUh94xvxjUgoiKEZb7dpaN7MLEfc6ogKyOjb62zOgu4d7VNs1GA\nHt53pkZImWR1i9pLnNRWrXElr+X4h+L+mKFzqoSBaZnch+F2GK6IuI5XcXwKBxAEDKuOdOMfiMSF\ngug5it+EF5b/rgk5+ytWqXE7OYKVcKogN4XcItU4zfi2tYBRZvJKVoQLoWywTAWf9rrNgLMcqgd4\nEcoqy6VjMSKG5LpwKPyjDimiAbPNFORi0snTsqX7K2AEOf7vlOtL6i9nYkLvuMXjdgAAAABJRU5E\nrkJggg==\n",
  115. "text/latex": [
  116. "$$\\left(x + \\pi\\right)^{2}$$"
  117. ],
  118. "text/plain": [
  119. " 2\n",
  120. "(x + π) "
  121. ]
  122. },
  123. "execution_count": 5,
  124. "metadata": {},
  125. "output_type": "execute_result"
  126. }
  127. ],
  128. "source": [
  129. "(pi + x)**2"
  130. ]
  131. },
  132. {
  133. "cell_type": "code",
  134. "execution_count": 6,
  135. "metadata": {},
  136. "outputs": [],
  137. "source": [
  138. "# alternative way of defining symbols\n",
  139. "a, b, c = symbols(\"a, b, c\")"
  140. ]
  141. },
  142. {
  143. "cell_type": "code",
  144. "execution_count": 7,
  145. "metadata": {},
  146. "outputs": [
  147. {
  148. "data": {
  149. "text/plain": [
  150. "sympy.core.symbol.Symbol"
  151. ]
  152. },
  153. "execution_count": 7,
  154. "metadata": {},
  155. "output_type": "execute_result"
  156. }
  157. ],
  158. "source": [
  159. "type(a)"
  160. ]
  161. },
  162. {
  163. "cell_type": "markdown",
  164. "metadata": {},
  165. "source": [
  166. "We can add assumptions to symbols when we create them:"
  167. ]
  168. },
  169. {
  170. "cell_type": "code",
  171. "execution_count": 8,
  172. "metadata": {},
  173. "outputs": [],
  174. "source": [
  175. "x = Symbol('x', real=True)"
  176. ]
  177. },
  178. {
  179. "cell_type": "code",
  180. "execution_count": 9,
  181. "metadata": {},
  182. "outputs": [
  183. {
  184. "data": {
  185. "text/plain": [
  186. "False"
  187. ]
  188. },
  189. "execution_count": 9,
  190. "metadata": {},
  191. "output_type": "execute_result"
  192. }
  193. ],
  194. "source": [
  195. "x.is_imaginary"
  196. ]
  197. },
  198. {
  199. "cell_type": "code",
  200. "execution_count": 10,
  201. "metadata": {},
  202. "outputs": [],
  203. "source": [
  204. "x = Symbol('x', positive=True)"
  205. ]
  206. },
  207. {
  208. "cell_type": "code",
  209. "execution_count": 11,
  210. "metadata": {},
  211. "outputs": [
  212. {
  213. "data": {
  214. "image/png": "iVBORw0KGgoAAAANSUhEUgAAACoAAAAPBAMAAABgjEDtAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA782r3SJ2ZjIQmUS7\nVIlAnjihAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAv0lEQVQYGWNg/GQs72z0hQEV8Acw5BcwNKIK\nMsxiAIkyo4mGg0XZJqAKR4BFOUCi0Q2c3QFwWaAJ3Iq5j0LXH+A9n8DAuvwxWAooysC4dn4B0wEG\n/gSGLRO4JUEaQKJMDgwMPGBROQYGMaAgRNQAKsrxq7zcHC66ACrK/hckBARgExbA1H4DiyFEmQ8w\nxCcwODEwTIOpZQGqZRdguHiSob+AYSUDA/caeZkV3Of/XGBgeJc2RWQCp1XeBKghaBQAM0c287zN\nvm0AAAAASUVORK5CYII=\n",
  215. "text/latex": [
  216. "$$\\mathrm{True}$$"
  217. ],
  218. "text/plain": [
  219. "True"
  220. ]
  221. },
  222. "execution_count": 11,
  223. "metadata": {},
  224. "output_type": "execute_result"
  225. }
  226. ],
  227. "source": [
  228. "x > 0"
  229. ]
  230. },
  231. {
  232. "cell_type": "markdown",
  233. "metadata": {},
  234. "source": [
  235. "### Complex numbers"
  236. ]
  237. },
  238. {
  239. "cell_type": "markdown",
  240. "metadata": {},
  241. "source": [
  242. "The imaginary unit is denoted `I` in Sympy. "
  243. ]
  244. },
  245. {
  246. "cell_type": "code",
  247. "execution_count": 12,
  248. "metadata": {},
  249. "outputs": [
  250. {
  251. "data": {
  252. "image/png": "iVBORw0KGgoAAAANSUhEUgAAACoAAAAQBAMAAACSDPCjAAAALVBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAVO8Qq5l2zWaJ3SK7RPx7\nN2kAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABySURBVBgZY2DABCwHGBgYldHFWRoYTEIeQ0UZE5Ck\n2SgRNQsDmoRhwoRLWES5BcLhopzl5VXq5eUODAzMDM/gokAGzGWMIEdhmMvuYIBF1E5gAhbRe9wN\nDKxOzz2A5gABzFyWDggfQsJEkcWATtoA5wMA/Fcc5MixWvAAAAAASUVORK5CYII=\n",
  253. "text/latex": [
  254. "$$1 + i$$"
  255. ],
  256. "text/plain": [
  257. "1 + ⅈ"
  258. ]
  259. },
  260. "execution_count": 12,
  261. "metadata": {},
  262. "output_type": "execute_result"
  263. }
  264. ],
  265. "source": [
  266. "1+1*I"
  267. ]
  268. },
  269. {
  270. "cell_type": "code",
  271. "execution_count": 13,
  272. "metadata": {},
  273. "outputs": [
  274. {
  275. "data": {
  276. "image/png": "iVBORw0KGgoAAAANSUhEUgAAABgAAAAPBAMAAAAMihLoAAAAJFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAADHJj5lAAAAC3RSTlMAEM3dMlTvq5l2ZtVdCTcAAAAJcEhZcwAA\nDsQAAA7EAZUrDhsAAAAqSURBVAgdY2DAClgTEcLi7RsRHAZOMjlCxiCgwkC2ATA3cJRtqoKxwTQA\nC0AL2ft3JesAAAAASUVORK5CYII=\n",
  277. "text/latex": [
  278. "$$-1$$"
  279. ],
  280. "text/plain": [
  281. "-1"
  282. ]
  283. },
  284. "execution_count": 13,
  285. "metadata": {},
  286. "output_type": "execute_result"
  287. }
  288. ],
  289. "source": [
  290. "I**2"
  291. ]
  292. },
  293. {
  294. "cell_type": "code",
  295. "execution_count": 14,
  296. "metadata": {},
  297. "outputs": [
  298. {
  299. "data": {
  300. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEwAAAAbBAMAAAAkMnRXAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRImr\nEDIioekeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABXElEQVQ4EY2SPUvEQBCG3z0xauKeQUEsg4i9\ngqVwYgqRIDZWWlhYaJcmWB1i40chXm2jlRaClYeVyJ2IpRHs/BHGykPQczYTwq0mXgayzLzzZIbZ\nHaC71WfC7hAse7BSADPs8nsR7Ex8FsCA/q9CmOEXwupECYeOPCvZlCkt0zFC330ehgZlLnEFzJHT\nzMQO6VZfgPLCwSxX1Kh9juTDE2GWj4F2O4KhumuWYMAOYbLGuVENUYGGYZHzAf0R+JDbjYsbVnRs\nhcVp6m/W8IpJfyMLm2BxExjrreAWd+FuFrbH4gkQDvkIMR/H16675bpe7KsR8JZiOFbxB8e/R0gw\nagpP0iV+Z2PnLNMIsmXhqC9ClRV90mQEen0zGjZbPZFwsrBVFlXRpiMfq8E4C+n1rp16DrDE6j+P\npQCxzli8TOwm53NnRE/PNtWp/vFpkdjUWuZbWkQ4+RDiJaf8DywZUcb5dpcnAAAAAElFTkSuQmCC\n",
  301. "text/latex": [
  302. "$$\\left(i x + 1\\right)^{2}$$"
  303. ],
  304. "text/plain": [
  305. " 2\n",
  306. "(ⅈ⋅x + 1) "
  307. ]
  308. },
  309. "execution_count": 14,
  310. "metadata": {},
  311. "output_type": "execute_result"
  312. }
  313. ],
  314. "source": [
  315. "(x * I + 1)**2"
  316. ]
  317. },
  318. {
  319. "cell_type": "markdown",
  320. "metadata": {},
  321. "source": [
  322. "### Rational numbers"
  323. ]
  324. },
  325. {
  326. "cell_type": "markdown",
  327. "metadata": {},
  328. "source": [
  329. "There are three different numerical types in SymPy: `Real`, `Rational`, `Integer`: "
  330. ]
  331. },
  332. {
  333. "cell_type": "code",
  334. "execution_count": 15,
  335. "metadata": {},
  336. "outputs": [],
  337. "source": [
  338. "r1 = Rational(4,5)\n",
  339. "r2 = Rational(5,4)"
  340. ]
  341. },
  342. {
  343. "cell_type": "code",
  344. "execution_count": 16,
  345. "metadata": {},
  346. "outputs": [
  347. {
  348. "data": {
  349. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAsAAAAqBAMAAACXcryGAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMpndu3bvImbNiRBU\nq0Qb3U6NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAkklEQVQYGWNgYGAQAmIgMAGTrClgqmIKmFoA\npjgKwNRWBjC1AEzxCICpXQxg6uzdu9+ugnVAtDN8AXOW/L8Bpski/oPAB6K0Tt0gdACoMP//L5Dy\nWVcLQNQFEAGnbrQqgnjeDPUPQDQDiwGYYvrOwMA7gYHrHwMD2wQGpt8MDEwMDMwTGBjYFRjaQMYU\nrdVmYAAALnIpDsFeUO4AAAAASUVORK5CYII=\n",
  350. "text/latex": [
  351. "$$\\frac{4}{5}$$"
  352. ],
  353. "text/plain": [
  354. "4/5"
  355. ]
  356. },
  357. "execution_count": 16,
  358. "metadata": {},
  359. "output_type": "execute_result"
  360. }
  361. ],
  362. "source": [
  363. "r1"
  364. ]
  365. },
  366. {
  367. "cell_type": "code",
  368. "execution_count": 17,
  369. "metadata": {},
  370. "outputs": [
  371. {
  372. "data": {
  373. "image/png": "iVBORw0KGgoAAAANSUhEUgAAABUAAAAqBAMAAACuFQ3dAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMpndu3bvImbNiRBU\nq0Qb3U6NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA5UlEQVQYGWNgYGAQAmIYMAEyjm0A81hTGLgv\n3YewK6YAheIh7AUINkcBgr2VAcFegGDzCCDYuxgQ7LN37367CjeTIQVhPsMXBHvJ/xsMuvlzG4Ai\nNAb/4eADZTYVqTgyMGxasRBoCvcFhvUPGOYwbC5gYODdwMCWwJHAwDWBgYHNgIH3I8sFBp7fDAyc\nv4Fs/gsMfH/A1jL/3q/AwPcVzH6/oH4BA+MvMNuWoV4BymZSYICrCWJgAOrlAenlUWAoZ3Fg4ACa\nCYrRcKBdTEC72K1W6Row2DBsEwDaBfSjAcOu0IsMDACGnlMXi4yUmQAAAABJRU5ErkJggg==\n",
  374. "text/latex": [
  375. "$$\\frac{41}{20}$$"
  376. ],
  377. "text/plain": [
  378. "41\n",
  379. "──\n",
  380. "20"
  381. ]
  382. },
  383. "execution_count": 17,
  384. "metadata": {},
  385. "output_type": "execute_result"
  386. }
  387. ],
  388. "source": [
  389. "r1+r2"
  390. ]
  391. },
  392. {
  393. "cell_type": "code",
  394. "execution_count": 18,
  395. "metadata": {},
  396. "outputs": [
  397. {
  398. "data": {
  399. "image/png": "iVBORw0KGgoAAAANSUhEUgAAABUAAAAqBAMAAACuFQ3dAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWaJMkS7\nIt2ZnNffAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA/klEQVQYGWNggICZmQtADCEDBgbzDawFDAzM\nrv5A9lEGngMg8XwDBu6/IAYQANk8CmAWmM1fNS0azAOK21cwMAmAOCD2ZwZWZSib/wEDx28om6+A\ngeMHlM2igBDnAqpXgIozeDIYgcwJ0S9pYOAM9QIJ0xj8h4MPlNl0NeYUA0OZwVKg+5kdGOZvYND/\n/xNoIosBA5MCQ6XbBSCb6QEDyy8GB7A97J8RbKAA32cGj7YosAzD/gkMhxnubwBznoBIngcgkjUA\nTIKjIxVocAEDJyhsGQMY7jIVMLB+BrKXMjDksgINK2Bg4H05M+QBbwBDE9BidqAfHzBcnRLMwAAA\nq1hKQiigoh8AAAAASUVORK5CYII=\n",
  400. "text/latex": [
  401. "$$\\frac{16}{25}$$"
  402. ],
  403. "text/plain": [
  404. "16\n",
  405. "──\n",
  406. "25"
  407. ]
  408. },
  409. "execution_count": 18,
  410. "metadata": {},
  411. "output_type": "execute_result"
  412. }
  413. ],
  414. "source": [
  415. "r1/r2"
  416. ]
  417. },
  418. {
  419. "cell_type": "markdown",
  420. "metadata": {},
  421. "source": [
  422. "## Numerical evaluation"
  423. ]
  424. },
  425. {
  426. "cell_type": "markdown",
  427. "metadata": {},
  428. "source": [
  429. "SymPy uses a library for artitrary precision as numerical backend, and has predefined SymPy expressions for a number of mathematical constants, such as: `pi`, `e`, `oo` for infinity.\n",
  430. "\n",
  431. "To evaluate an expression numerically we can use the `evalf` function (or `N`). It takes an argument `n` which specifies the number of significant digits."
  432. ]
  433. },
  434. {
  435. "cell_type": "code",
  436. "execution_count": 19,
  437. "metadata": {},
  438. "outputs": [
  439. {
  440. "data": {
  441. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgsAAAAPBAMAAACYf5HCAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIom7VJlmdt1E7xDN\nqzIhoty3AAAACXBIWXMAAA7EAAAOxAGVKw4bAAAGm0lEQVRIDe2X22tcVRTGv5lMJsmcmWQsVEQF\nh5G0ItaMVMEL2kHQB0UTW/PgpWb0wUJRTIUieEu0+GZJXkQRISmKaOvlIIiltiQoWKRURzHxGjMU\nCr5I2lqrbVLHb31rz+T4P3igO+ustddvfXudPfucAmvK1yJxHQ92/pneexFt3lBEanhjg87ykw0c\njo9XkSpfXoWHn+qfBD4uf4Pe3ZvLZVke9hyhP3nyPkMaN73+6kAzy52aI2RkNFlYu+WWJDJoeaQB\nRSBk4PYOGQgu1WW4w0q4ftPr2kyql/htrlwuieuzU0MYrMm8I7Y/u/jPrFyzWcKBWmoPDiF9Fjg4\n2TmLD5unqASZMx7uBL5D9DYuLmabzeZ5WR5WjqOHUKg6N/oSDzpNlpw+R0jRZEV1DEwmkNKSr0Yv\nQBEIGbjdFSCzDy5VOa5fJaTfkaYyIfAJCq6L69O7TqNvnIqiuUVrQ9ebwcpv2AH8BMzhZ2AvcB06\nKvjs+yIwVsXfUPh24FIUplEY6qS/LsvDyhE6U0NqVlx0DGGj02TJ6eWFFE1WIUZuOoFUse3AVVBE\nyMDF0xUc2rocpCrHV6IS0u9IU5kQeA9Q8EX49J53MUOZvMasDRd+HqyCuVaAAbwDLDZ6Ttp93YbX\nJ6MVMnhdDuxH3yzSJ9Lc8Q1ZHvYcQ6criMadO8VeOU2WnF5eSNFk5cZR+CeBVLGbgcHYI4YM3NRj\nFbaTbZBU5fhKVEJOIaUtIbAEXO2LCAsnvUZ54a6UbEP0B72Nr2O2oWPapqgN3IRnnDB1E9ZhpoKu\nfxh7tW0xrBw6B2s9f8TpGmDcG+nwiCx3hvLMEU3w/DLbwLktpNpwHpiqKiJk4Kbz3gaXqhxfiZVo\nOQmXypZU3gM9o/9tQ/QinbxsN2SL7TY8urOB97gbJhmaiPu+Ws+Tbn7bQzZzfwkFCxeaj9SQ427g\n2YFK22KY1wRxhl48sy5wV47tNBgjbnkxL29IownOsZsPuI20YtGfbMOoR4TUgIdDG9pSK5xiK1GJ\noJ9wqWxJlcAO+CJ8OlJXPMDMkPwJWm3oiFNn+YvA1zU27hRmvkCuiptwGRey5qUYCmNgJeYvAnl2\nl488WBZWjqPTzSOAcaOVGt5SJFgq5uWVYzTBOWmqlEBasRQP5yU6LSKkhmi01YYg1XaetcFLuNPg\n0vYfgXw4vgg/DYAruTRPRqndBjquR340M1Dlo6ljZhmdPI/RMc4h/S4HhjM/TtA6jFtPAzP0uOVh\n5vAi+q7Xzk2KGzVj3M+FdteD5cW8PJFOC/DdTE4gcX2Ku0FtYERIDWm02hCkWo7aoGLBaXqlLSEw\nOmEzuYiwG/hutPXpLtNItmGkiG3PDzSAYdjbJHuWkzp1VO7lajBSfBxd52JknzrGH/Kz9LjFFwvD\nzOGV25etY2yfc/8GnphURFYoFsrvjZ3m2Z1DTE4iRy4JPwpGhNSAu9ttCFItR4/Xi7l+EyRtCYFd\nszaTi/DpqSI6+DB5cSt9hHYbfgnHwmKMLmrqnkX2TGHWjoELgE1VhffwAVWZWeAPeZchzFJYOULn\niug97dyX2YaaIrLk9PLKEc2zsdNgbaSK8YgcrMIiQmqISqtt4CkUhxyuBF7MnAEplasC7XsjrNGm\n9y0n2nDXwsK5770977FTDOMocBtSxcI0d0NuFp3LaMZsg4U/PcF11zgnX0dElW4prByhbZfOO5dv\nce4Go8mS08tbzp2ieXZmiN1cRUrLRmbHsIiQGjILC4vvj+qFyTKU6jljFO7FzOlIqdTg9zN12LE6\nwqk2PVdB90lbge6AN4M1ZA3dXuw9CX6udhV7eTZM8zuPu4IzJooK8/l1FLN7sMQnzj3rlsLKEZpP\nDdeQSfcSzwanyZLTyytHNFn25b0jgXQt4DeoIkK2uASoDZKqHF+JSsgppLQlBGKJUHF9eraGwVF+\nD7XawE8FNWStrerZ+GANF5X7fwC+xYEqv3y3F/EoMn/xk5nhN2JsQ9eR6Au+7dkGtxRWjtA9R5Ad\nJZPcQil6y2my5NQcR4qm7NSL5a3jCaSKdVejD6CIkC1uX2iDpCrH9auEnEJKW0IgBtkDccPCXxm+\nAdgNbP3waI0fhs15t1Kb5/iaGb6Pr8xmk+dNevhX5m3gy7VneAv/C2Th3rn+SaB/mEPKXoWyFPYc\noX/fTIa46N/aCDSz3Kk5yhFNVp4f/OMJpIpF659rwCNCOje96Xyt86eVeZfqOb4SKyH9Qrq2VYG4\nuErRtoiwcMr5//oXWhd7due/PDYAAAAASUVORK5CYII=\n",
  442. "text/latex": [
  443. "$$3.1415926535897932384626433832795028841971693993751$$"
  444. ],
  445. "text/plain": [
  446. "3.1415926535897932384626433832795028841971693993751"
  447. ]
  448. },
  449. "execution_count": 19,
  450. "metadata": {},
  451. "output_type": "execute_result"
  452. }
  453. ],
  454. "source": [
  455. "pi.evalf(n=50)"
  456. ]
  457. },
  458. {
  459. "cell_type": "code",
  460. "execution_count": 20,
  461. "metadata": {},
  462. "outputs": [],
  463. "source": [
  464. "y = (x + pi)**2"
  465. ]
  466. },
  467. {
  468. "cell_type": "code",
  469. "execution_count": 21,
  470. "metadata": {},
  471. "outputs": [
  472. {
  473. "data": {
  474. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHUAAAAbBAMAAACw1N2lAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nqzLsm4+cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACJElEQVQ4EZ2UP2hTURTGv6RJ+sy7/aOigw6+\nis7GduqUFIKDU7A6CC1UqFS6+JYiIpKAi5Md6mClpW8SnHwiIYMgd7I4iEW6dChmcHOISKhLJT3n\n3HdfWnkUfQfyzrnnfL97T07eDZDO3OmZdCBRb7Gdmr2DzmhaeBEXgrQssKzTswvpUbdGbMajx//Y\nmIgv8/N0Epd5/65xKD/Mh7C5rQ8Y4gEXw2IbmOLc33YGzi/JOWvsCiWAI3UdN6EqlPn+9IlG1m7J\nGji+ONQb2OPo8+w+u4clEw3UMAG0KLPR69GW3EFsln0dqK4kB5nNXKJzOXoj4k9WftYG4i1LHZie\nhXVzETspolwQMUvkNx+fe+TLus9+DCUh7Jhluz+WAiBfkxIwThMIswuFiqxj9vxdLQlmlR+xquvh\nBZCtSAm4R4PX7r4zKuuYhftSEsy6sGxP47aGMxexJFFSI021eu15tbplKquaPbPPLMuzvxJg+KdR\nQLYf8aOVPfckUG5wjlgVxuw8sV6fpZ6BTpufZJal5mLW2d39tu5LBztybnFOtDIrR9cxqGVt2RXg\nvkyAewZOlEz3Hfq+h2bVpF+8UcYpQeNzL8L5jS8VQwAjETsUKppzPjRivKIX78HmDe8oW7w1HaCw\nhfxO9ysNsfzHM1Fztg3k6COW/E5GxWQXv4pH74KSL5mMxFm+C8au2uBfvdxBI068+8ftM9DvLeMd\nJ0yomf8cKhwAL6SHm0ESaMoAAAAASUVORK5CYII=\n",
  475. "text/latex": [
  476. "$$\\left(x + 3.1416\\right)^{2}$$"
  477. ],
  478. "text/plain": [
  479. " 2\n",
  480. "(x + 3.1416) "
  481. ]
  482. },
  483. "execution_count": 21,
  484. "metadata": {},
  485. "output_type": "execute_result"
  486. }
  487. ],
  488. "source": [
  489. "N(y, 5) # same as evalf"
  490. ]
  491. },
  492. {
  493. "cell_type": "markdown",
  494. "metadata": {},
  495. "source": [
  496. "When we numerically evaluate algebraic expressions we often want to substitute a symbol with a numerical value. In SymPy we do that using the `subs` function:"
  497. ]
  498. },
  499. {
  500. "cell_type": "code",
  501. "execution_count": 22,
  502. "metadata": {},
  503. "outputs": [
  504. {
  505. "data": {
  506. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFYAAAAbBAMAAAAUvmV2AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nqzLsm4+cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABlElEQVQ4EY2TO0jDUBSG/1QSLUkfKLqaQRA3\nLbh1qBBQlEoXJx901EGog651sro5u7STiyAKdlQiuFsFcdRFcFNBFxXiOffePBpEcyDn8Z+vNyfJ\nKZDQ2pNuQhJmPlNKyhr57FtitqV9JmWBvu/krFFLzrYJ1Wxyf1oqT+1UhdxAyE27T9thFWY3lB7h\nGJiiZM8Vjab3JWLcXQHZmd0in23dPUh27p7vxtaQQXmzhrTnvcLgdt0Vakf14qy1LxtDHP5hMSvZ\nzQh7O7oixWCGuud5H8CClAsRtojhllTVvOZFo3+DhhyR6mqEBXqqXAbzPuO095HKHbrIDtipeQGd\nl+nMcdYcp8wNjGdc8i+cdrG0oaZaJv+dZTsGQ4qNzJAuQVfL5LO6nXOJPeQfAJFn0wGjJMTgPVy7\nuRYp6tl4fXhe6x1aBWP8Zcj8c7eQPqFyUYji+OVm2cY6MHi+JMWALSDD7LyUxTdWRBj8c6WiVWUU\nexlCKrvsUmh3pE10yb8WtJPSIrvuS/EYHKfZ8Va8Fv8hEn8A9AZYsVBvIRkAAAAASUVORK5CYII=\n",
  507. "text/latex": [
  508. "$$\\left(1.5 + \\pi\\right)^{2}$$"
  509. ],
  510. "text/plain": [
  511. " 2\n",
  512. "(1.5 + π) "
  513. ]
  514. },
  515. "execution_count": 22,
  516. "metadata": {},
  517. "output_type": "execute_result"
  518. }
  519. ],
  520. "source": [
  521. "y.subs(x, 1.5)"
  522. ]
  523. },
  524. {
  525. "cell_type": "code",
  526. "execution_count": 23,
  527. "metadata": {},
  528. "outputs": [
  529. {
  530. "data": {
  531. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKAAAAAPBAMAAACRq9klAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpm7MhCriUTv3c12\nVGZoascqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAC7klEQVQ4Ea2UTWhUVxiGnzuTOz+ZmWTMRqwL\nb2MbFREjNqCCJGRhoZvclQtpyRCo+JsMURwU0UvBhbqIUiKxRRxc6KILZ2PrQnAMlFJoyVBKoRu9\nbhRRoqLRmDG5vufcaTbdeuC+95z7fueZ7zs/g9O9dYD/Wu7Xtk3qt3ktWVnZCV//th661n4BTuVI\nA9Inj7birXPHH2zg/jEe8NVIpVJmN+l5KEzamGwUldVp743F8XgQ4pFquCVOB3RRWMK9zUbZ//pY\nh6vRW0jAYZ5HUVTiW7jM7p45xUDu2D3z+t0AJflFOquFEKeW8sleYKbBAkmPrbgjYz7W4ZdDRbgP\nq/kUUvADjA2Qj4EaqzlPBTSSmWK4lu7FrWarpF5zNnCbTGi+2oyPdSiZ0RHYQxm0GHf9/wHTOQGt\noJIzr/x0mJszQC3NEtsNwAKtEwMn+jilj5m6sbjpL2c4Oz0ADw3QCu4NFbBkYmk3Rewp0/xyOlBP\nGcbO6LPPVGr0ONTHpB5htaitkpO+M49bF9AKzonPlWt0y4RNlGHlNd9thlzR0ACt08eaAE43NbZZ\n6qdLy0B920EaAa1oeDzgn3PvAvWu6yE95UY+GzTZAFtOskph380pcF+YGLr1tDJUb3PxbwO0omF2\nsqPEzKQOhqeRToS/AM8DC2w5JF7yiPw7LVzNhOQ9I/EuH1TuZ8oCukZwiiQXs0XaFmFaUSugv/GT\ngKEFWidVMwf5Igw14vPLX2ZeC/ijMvxm796xS38aqXfOCTgs0igFTzhV29/Yv5yhdbI1EnOm1lTI\ncEmxumb5ZaAHSoBsbyx6t79UHmxhEO7xvU5EcUhrKFtraJ2ENqFmMkwWGdJ8PqmMH4hLHq7pbnXI\notMAJR0hD+qZW3TUnRuVniqzFN6TKrutXY4djydFzvs806E1wLtRtEBif3PU7LazbsTXVva/CWP5\nrnsb7Fq3npyuaZVM99oAxnsGoOfqz6F16Dqmo9U2oj8HVjUE/NjtA/9e98ZPxvCDAAAAAElFTkSu\nQmCC\n",
  532. "text/latex": [
  533. "$$21.5443823618587$$"
  534. ],
  535. "text/plain": [
  536. "21.5443823618587"
  537. ]
  538. },
  539. "execution_count": 23,
  540. "metadata": {},
  541. "output_type": "execute_result"
  542. }
  543. ],
  544. "source": [
  545. "N(y.subs(x, 1.5))"
  546. ]
  547. },
  548. {
  549. "cell_type": "markdown",
  550. "metadata": {},
  551. "source": [
  552. "The `subs` function can of course also be used to substitute Symbols and expressions:"
  553. ]
  554. },
  555. {
  556. "cell_type": "code",
  557. "execution_count": 24,
  558. "metadata": {},
  559. "outputs": [
  560. {
  561. "data": {
  562. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFIAAAAbBAMAAAAdVcUMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nMqvFy5UvAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABm0lEQVQ4EY2TO0gDQRCG/8vrEu9OToSUkkKw\nja/OQuEQESRBCBZpUlppLGwEIY1ip4gIPgorQUSwSRWEFNYmpZXGRgsFY2OhgXP25nY1IZGbYmfn\n/7/sIzsHBIryZDUQB8Punw5GxmzrIyB5pn0FI4F4KygZKwYlywRqKRr+iZBNZihLw2A3SsuN16X+\nRJNLXAEzUvmb72Coy94C1tzOFK+roLh/8DfgSIpGEQnXbSImjqFCkofAu9ze3GM7qSgxkWSm+kti\nnpF1Slp+6ZQrSVK1WtVdiiyQY2+M0oUdaXaSfd+o3K+NDJA+zN4yYO4jmu4kYw2rZNibQt5m7xiI\ntuA9luE4sweO0/AMsWUY9B8Aj54AIhNp1OpcqXPqdD48oCBkn6Tda9fYFQqFIreg2ViE10Hn7NGN\naiVMxO020spCt80WvIfyb0RNEimGVgz+nVwzWSk/Qy/gRMh59mhp8+VmaKOdzLjuJ8IpvAp5gb3u\nr8kej1qBs9d5yjD5uKoWE+oQjlE/90zUdRxdO1maIqultJQoe4f3dZD9A6SlVff4q7eXAAAAAElF\nTkSuQmCC\n",
  563. "text/latex": [
  564. "$$\\left(a + 2 \\pi\\right)^{2}$$"
  565. ],
  566. "text/plain": [
  567. " 2\n",
  568. "(a + 2⋅π) "
  569. ]
  570. },
  571. "execution_count": 24,
  572. "metadata": {},
  573. "output_type": "execute_result"
  574. }
  575. ],
  576. "source": [
  577. "y.subs(x, a+pi)"
  578. ]
  579. },
  580. {
  581. "cell_type": "markdown",
  582. "metadata": {},
  583. "source": [
  584. "We can also combine numerical evolution of expressions with NumPy arrays:"
  585. ]
  586. },
  587. {
  588. "cell_type": "code",
  589. "execution_count": 25,
  590. "metadata": {},
  591. "outputs": [],
  592. "source": [
  593. "import numpy"
  594. ]
  595. },
  596. {
  597. "cell_type": "code",
  598. "execution_count": 26,
  599. "metadata": {},
  600. "outputs": [],
  601. "source": [
  602. "x_vec = numpy.arange(0, 10, 0.1)"
  603. ]
  604. },
  605. {
  606. "cell_type": "code",
  607. "execution_count": 27,
  608. "metadata": {},
  609. "outputs": [],
  610. "source": [
  611. "y_vec = numpy.array([N(((x + pi)**2).subs(x, xx)) for xx in x_vec])"
  612. ]
  613. },
  614. {
  615. "cell_type": "code",
  616. "execution_count": 28,
  617. "metadata": {},
  618. "outputs": [
  619. {
  620. "data": {
  621. "image/png": "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\n",
  622. "text/plain": [
  623. "<matplotlib.figure.Figure at 0x1093af4d0>"
  624. ]
  625. },
  626. "metadata": {},
  627. "output_type": "display_data"
  628. }
  629. ],
  630. "source": [
  631. "fig, ax = plt.subplots()\n",
  632. "ax.plot(x_vec, y_vec);"
  633. ]
  634. },
  635. {
  636. "cell_type": "markdown",
  637. "metadata": {},
  638. "source": [
  639. "However, this kind of numerical evolution can be very slow, and there is a much more efficient way to do it: Use the function `lambdify` to \"compile\" a Sympy expression into a function that is much more efficient to evaluate numerically:"
  640. ]
  641. },
  642. {
  643. "cell_type": "code",
  644. "execution_count": 29,
  645. "metadata": {},
  646. "outputs": [],
  647. "source": [
  648. "f = lambdify([x], (x + pi)**2, 'numpy') # the first argument is a list of variables that\n",
  649. " # f will be a function of: in this case only x -> f(x)"
  650. ]
  651. },
  652. {
  653. "cell_type": "code",
  654. "execution_count": 30,
  655. "metadata": {},
  656. "outputs": [],
  657. "source": [
  658. "y_vec = f(x_vec) # now we can directly pass a numpy array and f(x) is efficiently evaluated"
  659. ]
  660. },
  661. {
  662. "cell_type": "markdown",
  663. "metadata": {},
  664. "source": [
  665. "The speedup when using \"lambdified\" functions instead of direct numerical evaluation can be significant, often several orders of magnitude. Even in this simple example we get a significant speed up:"
  666. ]
  667. },
  668. {
  669. "cell_type": "code",
  670. "execution_count": 31,
  671. "metadata": {},
  672. "outputs": [
  673. {
  674. "name": "stdout",
  675. "output_type": "stream",
  676. "text": [
  677. "10 loops, best of 3: 28.2 ms per loop\n"
  678. ]
  679. }
  680. ],
  681. "source": [
  682. "%%timeit\n",
  683. "\n",
  684. "y_vec = numpy.array([N(((x + pi)**2).subs(x, xx)) for xx in x_vec])"
  685. ]
  686. },
  687. {
  688. "cell_type": "code",
  689. "execution_count": 32,
  690. "metadata": {},
  691. "outputs": [
  692. {
  693. "name": "stdout",
  694. "output_type": "stream",
  695. "text": [
  696. "The slowest run took 8.86 times longer than the fastest. This could mean that an intermediate result is being cached \n",
  697. "100000 loops, best of 3: 2.93 µs per loop\n"
  698. ]
  699. }
  700. ],
  701. "source": [
  702. "%%timeit\n",
  703. "\n",
  704. "y_vec = f(x_vec)"
  705. ]
  706. },
  707. {
  708. "cell_type": "markdown",
  709. "metadata": {},
  710. "source": [
  711. "## Algebraic manipulations"
  712. ]
  713. },
  714. {
  715. "cell_type": "markdown",
  716. "metadata": {},
  717. "source": [
  718. "One of the main uses of an CAS is to perform algebraic manipulations of expressions. For example, we might want to expand a product, factor an expression, or simply an expression. The functions for doing these basic operations in SymPy are demonstrated in this section."
  719. ]
  720. },
  721. {
  722. "cell_type": "markdown",
  723. "metadata": {},
  724. "source": [
  725. "### Expand and factor"
  726. ]
  727. },
  728. {
  729. "cell_type": "markdown",
  730. "metadata": {},
  731. "source": [
  732. "The first steps in an algebraic manipulation "
  733. ]
  734. },
  735. {
  736. "cell_type": "code",
  737. "execution_count": 33,
  738. "metadata": {},
  739. "outputs": [
  740. {
  741. "data": {
  742. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMEAAAAUBAMAAADGn0QzAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nqzLsm4+cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACtklEQVQ4EY2Vv2tTURTHv+/l10vyUmOlDrqk\nRZ2jf4B94sNBUIKlkxReQVERMQ6lg5XGRReHgi6KQybFyYCKQ4U+QSwihdZF3Lo4G6SoQzCec38k\n75QX6h1uzj3nez/f3PN+AU4NI8akyY+PqMOt6opTG6VQiAOjqqhogFNPU0zMnAS2dCUV4ay+amnE\nqbT98J4CfqBKWfNPhc7fxFobH3QuFTEB76dCuI3kTq+pVxtzPQreqsXRpAD39aoSo7iCspJLhFUs\nt/BLIfLiH1oHFNjhk6LNpzkUI1T+wl/hmkRYhxdtf0chDor90iHbpqITCYU5Q7bHDjjLNYmwDuAu\ngRALJFm/c+i2bo90yDWoWKDJX9x6rls23I88HXOWHSRiqPjYAQhxgvZ33Cv5gLWQDm5AqUwN+Ixj\nzUsU0zBnoOglAY5wSiIGisOXY8ANcBUox+WeVyXpbgcvolS+BbzDWnyXYhpDhxu0uscpiRgqyk8I\nGIFmH9k6K8theOZRGG5yrK70WJeiYhuIcZqTeB2G18LwnIpVC39wmEAIBR7HIASVgX1NnmnILg0c\ngN+6njgDdx/WIYGwZ9gPTLfYgY5Iwm2eaUiHUkQp7hLG6L7Rw3bJa4AYzzgpEdahH7MDIegyefEy\nCrECSAc3oCRf6QeFLpYopmEdvgO3hlc6gbCKh8DNKtwAb+imaE1jnHfvPkOuQ6lyA6U/ma5To5iG\ncXCur85FwEVOSYRVTMGj1hKCzrmxuH6hxtKhQ+7bzhd6XLYpRef0vy4tTHGZhnHI9vv9CDjPKYmw\nitLsTFsh5CM/6BLvNA/rvIrtZLuk1k7EPxJhHZSAEfK15Vd1Qc9pb773SUHqm08oGHE8uUXE5u2d\nEa5CYd7eeyBSPx+KY9BOXVCTC4PeA+HUknuS8aRZmPssWdLxf31F/wED/Kt4r5jyqgAAAABJRU5E\nrkJggg==\n",
  743. "text/latex": [
  744. "$$\\left(x + 1\\right) \\left(x + 2\\right) \\left(x + 3\\right)$$"
  745. ],
  746. "text/plain": [
  747. "(x + 1)⋅(x + 2)⋅(x + 3)"
  748. ]
  749. },
  750. "execution_count": 33,
  751. "metadata": {},
  752. "output_type": "execute_result"
  753. }
  754. ],
  755. "source": [
  756. "(x+1)*(x+2)*(x+3)"
  757. ]
  758. },
  759. {
  760. "cell_type": "code",
  761. "execution_count": 34,
  762. "metadata": {},
  763. "outputs": [
  764. {
  765. "data": {
  766. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKsAAAAWBAMAAABNknGBAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACJUlEQVQ4EZWSMWgUQRSG/7277K53u7klAcHm\nsomQLigStAlhG7E9LKyEXFaw8vA67SJ2dkEQPWNxgpVVUkt0K9sEDhEL5VKa6i4Y9IJwzu7M251x\nMxvd4s2b9733z9s3A/Av7HvCyy/tXT3LZ8sRt+Nuy3vZN4Pyprz/D99tWUNduh04P3TszLi+W7tZ\nOT6zXJfQiHQEqI70rJiUnhZw2y+AxSg3hLuLEVW0yfmn1QzvZXnOSebH3oWmS/dv7auITeWARRLz\nNwGMZ/hC0UZU+cn9qs/XXdS2Bb2F2yqb7bNhJ0ZkxAsV1vbxjsJ2YMUNsE/QqexNOS/f7igMKMV3\nmBgOYkuya0EWc8I7YidobZDC6clEvGmqLJR9zwtnLl5f9FMNOrT+KvwEnM6kbo2F5ZshL6Yzxx+X\nmmzCLeuxvZmTnXuO6Z6GSbLn8dB/osga4w4OAdMzR9UgLzuCe6Bhkuw67ntvVNmJh28eDJyjG2dn\ndLsvvne7l4H6I1jHGibJethKRLNC/AI22BRQ9/lx3IoRsblY7MmdyiRZ4IiKabZsJhsdFtyLiMSr\noOUB61bDZFnnNxWT7GrSbdW7hJJHLJV12GwHGibJvi4NMc+LSXaPzRZY633AjUyVusVVNHo6lr7b\nqZPasBL/MftIttwy2EuYXZj5LIBCza8rWuaujq8hNsaV+aUHSVkmi3Y/EiFpoUOlUOoWsbTbNFtx\njEDZKpsiBgX+AfzFj7EIR0Y4AAAAAElFTkSuQmCC\n",
  767. "text/latex": [
  768. "$$x^{3} + 6 x^{2} + 11 x + 6$$"
  769. ],
  770. "text/plain": [
  771. " 3 2 \n",
  772. "x + 6⋅x + 11⋅x + 6"
  773. ]
  774. },
  775. "execution_count": 34,
  776. "metadata": {},
  777. "output_type": "execute_result"
  778. }
  779. ],
  780. "source": [
  781. "expand((x+1)*(x+2)*(x+3))"
  782. ]
  783. },
  784. {
  785. "cell_type": "markdown",
  786. "metadata": {},
  787. "source": [
  788. "The `expand` function takes a number of keywords arguments which we can tell the functions what kind of expansions we want to have performed. For example, to expand trigonometric expressions, use the `trig=True` keyword argument:"
  789. ]
  790. },
  791. {
  792. "cell_type": "code",
  793. "execution_count": 35,
  794. "metadata": {},
  795. "outputs": [
  796. {
  797. "data": {
  798. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAAAUBAMAAAD7IecQAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMnZUZs0Qu91E7yKJ\nmaurDqYVAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABlklEQVQoFX2TTyiDYRzHv8s8tt45UE5qe8sN\nk1yIg7VSDg6jXpHwXrRSuJAiWhxcd5QcpISknMxFuTiudpELmbVcXLBFQ+b3vH/2PO82nnre5/v7\nPp/3eX+/Z78BZUMJlRl26D4zlWvfdoCEkEJFj0g/m7HrW/gTQkpqivSMFJvSnZKtGtWKcrT67MDy\nAI+VmWnYsPedYrZnmEqDuUfPi5LiwoZ9MR6Nw9USjiR+0HTa2KGSEeTuZbJV52sJrs0EO4F7RIEY\nKP8tVfmi7UWa3hNMc1TAC6OMNgewo0PFOrAC5Gl7k+ZsCLccFXC/DrqwHng+2sDhJeCNto9pPujY\noMWnaWMHmpYmeQNGcADsupji8LKAD8FeiaBhFzgJL11eAOdwFySY0qBDal6ccB71dHnb6AKyEkwF\nshzqIn2Okwu8DiqwV8cqz8FKI0nQCAbTVw44izWK77AbHor7i0/+4mP3Z5p/Cphvb87EHfBcMETx\nsOFJj+o/twEoMYkzpLORmNwplY1EBfw1Klu0evMb71c55r+/1S+z8V/W/OfTdQAAAABJRU5ErkJg\ngg==\n",
  799. "text/latex": [
  800. "$$\\sin{\\left (a + b \\right )}$$"
  801. ],
  802. "text/plain": [
  803. "sin(a + b)"
  804. ]
  805. },
  806. "execution_count": 35,
  807. "metadata": {},
  808. "output_type": "execute_result"
  809. }
  810. ],
  811. "source": [
  812. "sin(a+b)"
  813. ]
  814. },
  815. {
  816. "cell_type": "code",
  817. "execution_count": 36,
  818. "metadata": {},
  819. "outputs": [
  820. {
  821. "data": {
  822. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAP8AAAAUBAMAAACwpfa4AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMnZUZs0Qu91E7yKJ\nmaurDqYVAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEMElEQVRIDXWWX2gcVRTGv+nuzOxmNt21ImiE\nZoj6oCayiKDoQ5aCINTiKkTwX7s+lIK23SVYhBbtog+CFV3wRYqQqiUqpTJCMaVQXYOFljaypooP\nRlxDEUSkidWUaJv4nTszd26WyYU7893zO2fu2XPPzi7QO06EhmzQC8J1iNejOsarKLlVG9aIiCLG\n1ocJ9hqR/iOxGYp41ydcp9EBP3GcgrO/CWxM/xhTkWOMrWtJpB2H7ExshhK8nes0OthOHJ8B7C7g\nVBOToUjVSMPbYr+CHyvzLvgKp6b3mlTrbAcolrmc1iZDCA1HCj4UM+dIrMw7cX6JBk3TE8gFwESN\nfi+YwbEWGo4IezfEBnhNLZ/SKhGCC5xATI0EPi8JUOMkr2dF2S21XnsRGg5i67Yt1akV3HR80z0+\njRs6vJyeuasG/EyFPRcuwpkebmHTfXdwKdieHylHlJYoAWLvYNd6+ruheQkb4dw+dBHol+c5czNl\n7B46pzaLqDc3O6nwLqApbfWG7/1H5lZY42PYQfkwp/cRBoKbA4w7DeQiXH/SoadQGWECCrPrcuP4\nKqD1Je76T60eIFvl6lTZOmYdguurzRTF4cBegODDNfh4FdgP/E3fXJnnVsGPlA9w2lWMlt4CBm+Z\nxIYIj9bAb41QGWECecFuF+4RFCu0vg5kllBsI9PkagyZxVwb1qLaTFHnKPobdGoid/VuSAL7gL/o\n29cCfqnhNcpBznoHsNj1xfY740GEf4DDBITizNjYm2Nj8rUU7DKBKoo+l5+yulXUuekCa3GdlsEy\ncE1tFtIl5OhI7JxZ7UgCLycJfAxnUUI4J+iUWWYCjd075DGS33PIMyWVAC1RDwh2mUBDJ2B3MFFW\nCeTlk40y8qraTCXQ10C9pBL4AtllIwEeAT9fZoEh73HqCvxUw2N8BDFPqp9fRKEywgQ8wW6SAI+A\nR8FS5ptGBa6rzdQRsDijjCbmAy4ZCbAJnSus5ENhm7EHUD7OSrzrY2MFqkeXpUl6mjAj2E0SYBMW\nWzxn6TLpAWT6Osgvq81UE9bL2JdRPfpgDQek/tERFDrAE3ik2wbmGOodRSEYKOHZzCTcgO8A4kt4\nhUSojLACCrP+8RHM8Geg4tK5v02fUxWctz6A3VabAaS2n327oPD7Wx5tbV79bfPqr/f/21U1wd7h\nW+dbwOMMxd7Z8/Dmvm3lv7n9HJcsGfaMVKgU5T1MQLB1eeX5yys3HvyMVh6QM/s9hV3ixflzOMDp\nC79DNovo/Ndf3hlhWoyhX8XGOzEFaxomYHgoqV+2J3uJrDVFCt4WRxT8WJn3GGv6okm11j8309pk\nCE3TfqvkpNXYaUQkMsbpNPE7EEqnmpgMFVGkYf2HJHYy4ihjnE4T36lQxvkmQKmIqr7uQcCJ0LLe\nn64Qr0f107yKklu1YY2IqPwl+x/SgSmeCF1yWAAAAABJRU5ErkJggg==\n",
  823. "text/latex": [
  824. "$$\\sin{\\left (a \\right )} \\cos{\\left (b \\right )} + \\sin{\\left (b \\right )} \\cos{\\left (a \\right )}$$"
  825. ],
  826. "text/plain": [
  827. "sin(a)⋅cos(b) + sin(b)⋅cos(a)"
  828. ]
  829. },
  830. "execution_count": 36,
  831. "metadata": {},
  832. "output_type": "execute_result"
  833. }
  834. ],
  835. "source": [
  836. "expand(sin(a+b), trig=True)"
  837. ]
  838. },
  839. {
  840. "cell_type": "markdown",
  841. "metadata": {},
  842. "source": [
  843. "See `help(expand)` for a detailed explanation of the various types of expansions the `expand` functions can perform."
  844. ]
  845. },
  846. {
  847. "cell_type": "markdown",
  848. "metadata": {},
  849. "source": [
  850. "The opposite a product expansion is of course factoring. The factor an expression in SymPy use the `factor` function: "
  851. ]
  852. },
  853. {
  854. "cell_type": "code",
  855. "execution_count": 37,
  856. "metadata": {},
  857. "outputs": [
  858. {
  859. "data": {
  860. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMEAAAAUBAMAAADGn0QzAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nqzLsm4+cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACtklEQVQ4EY2Vv2tTURTHv+/l10vyUmOlDrqk\nRZ2jf4B94sNBUIKlkxReQVERMQ6lg5XGRReHgi6KQybFyYCKQ4U+QSwihdZF3Lo4G6SoQzCec38k\n75QX6h1uzj3nez/f3PN+AU4NI8akyY+PqMOt6opTG6VQiAOjqqhogFNPU0zMnAS2dCUV4ay+amnE\nqbT98J4CfqBKWfNPhc7fxFobH3QuFTEB76dCuI3kTq+pVxtzPQreqsXRpAD39aoSo7iCspJLhFUs\nt/BLIfLiH1oHFNjhk6LNpzkUI1T+wl/hmkRYhxdtf0chDor90iHbpqITCYU5Q7bHDjjLNYmwDuAu\ngRALJFm/c+i2bo90yDWoWKDJX9x6rls23I88HXOWHSRiqPjYAQhxgvZ33Cv5gLWQDm5AqUwN+Ixj\nzUsU0zBnoOglAY5wSiIGisOXY8ANcBUox+WeVyXpbgcvolS+BbzDWnyXYhpDhxu0uscpiRgqyk8I\nGIFmH9k6K8theOZRGG5yrK70WJeiYhuIcZqTeB2G18LwnIpVC39wmEAIBR7HIASVgX1NnmnILg0c\ngN+6njgDdx/WIYGwZ9gPTLfYgY5Iwm2eaUiHUkQp7hLG6L7Rw3bJa4AYzzgpEdahH7MDIegyefEy\nCrECSAc3oCRf6QeFLpYopmEdvgO3hlc6gbCKh8DNKtwAb+imaE1jnHfvPkOuQ6lyA6U/ma5To5iG\ncXCur85FwEVOSYRVTMGj1hKCzrmxuH6hxtKhQ+7bzhd6XLYpRef0vy4tTHGZhnHI9vv9CDjPKYmw\nitLsTFsh5CM/6BLvNA/rvIrtZLuk1k7EPxJhHZSAEfK15Vd1Qc9pb773SUHqm08oGHE8uUXE5u2d\nEa5CYd7eeyBSPx+KY9BOXVCTC4PeA+HUknuS8aRZmPssWdLxf31F/wED/Kt4r5jyqgAAAABJRU5E\nrkJggg==\n",
  861. "text/latex": [
  862. "$$\\left(x + 1\\right) \\left(x + 2\\right) \\left(x + 3\\right)$$"
  863. ],
  864. "text/plain": [
  865. "(x + 1)⋅(x + 2)⋅(x + 3)"
  866. ]
  867. },
  868. "execution_count": 37,
  869. "metadata": {},
  870. "output_type": "execute_result"
  871. }
  872. ],
  873. "source": [
  874. "factor(x**3 + 6 * x**2 + 11*x + 6)"
  875. ]
  876. },
  877. {
  878. "cell_type": "markdown",
  879. "metadata": {},
  880. "source": [
  881. "### Simplify"
  882. ]
  883. },
  884. {
  885. "cell_type": "markdown",
  886. "metadata": {},
  887. "source": [
  888. "The `simplify` tries to simplify an expression into a nice looking expression, using various techniques. More specific alternatives to the `simplify` functions also exists: `trigsimp`, `powsimp`, `logcombine`, etc. \n",
  889. "\n",
  890. "The basic usages of these functions are as follows:"
  891. ]
  892. },
  893. {
  894. "cell_type": "code",
  895. "execution_count": 38,
  896. "metadata": {},
  897. "outputs": [
  898. {
  899. "data": {
  900. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMEAAAAUBAMAAADGn0QzAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nqzLsm4+cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACtklEQVQ4EY2Vv2tTURTHv+/l10vyUmOlDrqk\nRZ2jf4B94sNBUIKlkxReQVERMQ6lg5XGRReHgi6KQybFyYCKQ4U+QSwihdZF3Lo4G6SoQzCec38k\n75QX6h1uzj3nez/f3PN+AU4NI8akyY+PqMOt6opTG6VQiAOjqqhogFNPU0zMnAS2dCUV4ay+amnE\nqbT98J4CfqBKWfNPhc7fxFobH3QuFTEB76dCuI3kTq+pVxtzPQreqsXRpAD39aoSo7iCspJLhFUs\nt/BLIfLiH1oHFNjhk6LNpzkUI1T+wl/hmkRYhxdtf0chDor90iHbpqITCYU5Q7bHDjjLNYmwDuAu\ngRALJFm/c+i2bo90yDWoWKDJX9x6rls23I88HXOWHSRiqPjYAQhxgvZ33Cv5gLWQDm5AqUwN+Ixj\nzUsU0zBnoOglAY5wSiIGisOXY8ANcBUox+WeVyXpbgcvolS+BbzDWnyXYhpDhxu0uscpiRgqyk8I\nGIFmH9k6K8theOZRGG5yrK70WJeiYhuIcZqTeB2G18LwnIpVC39wmEAIBR7HIASVgX1NnmnILg0c\ngN+6njgDdx/WIYGwZ9gPTLfYgY5Iwm2eaUiHUkQp7hLG6L7Rw3bJa4AYzzgpEdahH7MDIegyefEy\nCrECSAc3oCRf6QeFLpYopmEdvgO3hlc6gbCKh8DNKtwAb+imaE1jnHfvPkOuQ6lyA6U/ma5To5iG\ncXCur85FwEVOSYRVTMGj1hKCzrmxuH6hxtKhQ+7bzhd6XLYpRef0vy4tTHGZhnHI9vv9CDjPKYmw\nitLsTFsh5CM/6BLvNA/rvIrtZLuk1k7EPxJhHZSAEfK15Vd1Qc9pb773SUHqm08oGHE8uUXE5u2d\nEa5CYd7eeyBSPx+KY9BOXVCTC4PeA+HUknuS8aRZmPssWdLxf31F/wED/Kt4r5jyqgAAAABJRU5E\nrkJggg==\n",
  901. "text/latex": [
  902. "$$\\left(x + 1\\right) \\left(x + 2\\right) \\left(x + 3\\right)$$"
  903. ],
  904. "text/plain": [
  905. "(x + 1)⋅(x + 2)⋅(x + 3)"
  906. ]
  907. },
  908. "execution_count": 38,
  909. "metadata": {},
  910. "output_type": "execute_result"
  911. }
  912. ],
  913. "source": [
  914. "# simplify expands a product\n",
  915. "simplify((x+1)*(x+2)*(x+3))"
  916. ]
  917. },
  918. {
  919. "cell_type": "code",
  920. "execution_count": 39,
  921. "metadata": {},
  922. "outputs": [
  923. {
  924. "data": {
  925. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAPBAMAAAArJJMAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAVO8Qq5l2zWYZcMvdAAAACXBIWXMAAA7EAAAOxAGV\nKw4bAAAAHUlEQVQIHWNgAANGZQYGk5DJQDYbqQSr03QPsBkAJYgIYEZbtZEAAAAASUVORK5CYII=\n",
  926. "text/latex": [
  927. "$$1$$"
  928. ],
  929. "text/plain": [
  930. "1"
  931. ]
  932. },
  933. "execution_count": 39,
  934. "metadata": {},
  935. "output_type": "execute_result"
  936. }
  937. ],
  938. "source": [
  939. "# simplify uses trigonometric identities\n",
  940. "simplify(sin(a)**2 + cos(a)**2)"
  941. ]
  942. },
  943. {
  944. "cell_type": "code",
  945. "execution_count": 40,
  946. "metadata": {},
  947. "outputs": [
  948. {
  949. "data": {
  950. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAD4AAAAvBAMAAABJZWRJAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWZE3Yki\nMrsGmOkjAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABaElEQVQ4EWNgIA0IGeBTz+zqj1eegSF/VB5f\nABIKnxD9kga8+kec5H/8YDCGxwmoo3qwO47nAVSc5QCIwQnlwSn2A1AmcwGIYQrlwalWOGsbiIXg\nQsXXwOWNgCzGr3AuhMGzAC7APoGBoeWXiwBDW3YCw3XVaykJQCm2AAYG5jSfaUDDWYFMhqVAM9Yw\nhDAwrEvg+QPk8zUwMFgzdCUsZ2DgADkQJK/LMN+A4REDww8gn0uAgWEzw34DGaD4Aog8A292/AGG\n5wwM34B8pgkMDAYMdUAWA+8HiDxz3YH7FxjeIeQhLJh8At8ChvuXDaDyIPMZeP+C9HMuABIlDAH8\nGxjkb16AyoPcJ8z2gSEZ6r4ohgCmBwz7b8D0cwcwcH7k+8ADVMa6AaifxfsAj2u2WdmV/75ynxzA\nhjK7Jad2AKXYLwAJDIAI31MYciABRISA4wdDDd8BqBAkfjHk4ekDrhBNyQkoH5S+AKXTe9mWCL8r\nAAAAAElFTkSuQmCC\n",
  951. "text/latex": [
  952. "$$\\frac{1}{\\tan{\\left (x \\right )}}$$"
  953. ],
  954. "text/plain": [
  955. " 1 \n",
  956. "──────\n",
  957. "tan(x)"
  958. ]
  959. },
  960. "execution_count": 40,
  961. "metadata": {},
  962. "output_type": "execute_result"
  963. }
  964. ],
  965. "source": [
  966. "simplify(cos(x)/sin(x))"
  967. ]
  968. },
  969. {
  970. "cell_type": "markdown",
  971. "metadata": {},
  972. "source": [
  973. "### apart and together"
  974. ]
  975. },
  976. {
  977. "cell_type": "markdown",
  978. "metadata": {},
  979. "source": [
  980. "To manipulate symbolic expressions of fractions, we can use the `apart` and `together` functions:"
  981. ]
  982. },
  983. {
  984. "cell_type": "code",
  985. "execution_count": 41,
  986. "metadata": {},
  987. "outputs": [],
  988. "source": [
  989. "f1 = 1/((a+1)*(a+2))"
  990. ]
  991. },
  992. {
  993. "cell_type": "code",
  994. "execution_count": 42,
  995. "metadata": {},
  996. "outputs": [
  997. {
  998. "data": {
  999. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIIAAAAvBAMAAADdrw/+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWYiu91E\niTJVJ+QZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB/klEQVRIDe2UP0gjQRjF37pu/phEjgMLK0EL\nz1NwCekT7lAEC1OohSCGAzvlUohBLJJWbLbQ5mzs7k91gtgqtjY2sVPS2ikWFnca38xs3Gwcs0UQ\nhGSamfm+37z55u3MAm/ePtqtbWFOzLSoAHzvKMiP0PFB3cV34MPs+FqptYfRWd1mDlRbbW3mV7Pj\nRkuvZbdUIhD48ZoAuh2Z0gLRuT+VGrChVTCGADMvU1oghcR/F4hk6xWMnJqlZu84uBATPfAVGHSB\nmCpVLURNASGhkBRRPTAKzFQUsOeuVZ1fIXzCqB4o2kJBAsuEoovzPLZofgVLnFAA2C1/s0XvAcCx\nDQn8YvjUCd/IvAfIU0TyjAogPoJiA4D4Az0SwAE9/wRrn0M2fw3GX4YIIFnCgkjXAYhlOBPAGGDd\nIZbjMFEobA4XCsxAOdl7wxEBLNk4YlcPYI6BGtC1j3SFczZ/DTUAn2E+NgJZBiTAItPnGFD5BoW4\newrzAYYoh+15iz5EHUiARqU/4Kfh+AGfk+YtevL9PqA3i5CjnCwD4VzkMCHz3hZSwTpnlADWsZ0R\nY6+GvcvyNB0UwTN+i8mrnRWZf1awvtxPUbrCKAGkVq8nT9h7CsVq9Z8L6C+tpNV1DAT8D8dUdigB\n3cvSAPjt4i8793UHAtofiJTrUQUFAoE/sebAE+USwojXIqQHAAAAAElFTkSuQmCC\n",
  1000. "text/latex": [
  1001. "$$\\frac{1}{\\left(a + 1\\right) \\left(a + 2\\right)}$$"
  1002. ],
  1003. "text/plain": [
  1004. " 1 \n",
  1005. "───────────────\n",
  1006. "(a + 1)⋅(a + 2)"
  1007. ]
  1008. },
  1009. "execution_count": 42,
  1010. "metadata": {},
  1011. "output_type": "execute_result"
  1012. }
  1013. ],
  1014. "source": [
  1015. "f1"
  1016. ]
  1017. },
  1018. {
  1019. "cell_type": "code",
  1020. "execution_count": 43,
  1021. "metadata": {},
  1022. "outputs": [
  1023. {
  1024. "data": {
  1025. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAI4AAAAsBAMAAABBB53eAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMlTvq5l2ZiKJ\nRLuWvIZ2AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABsElEQVRIDWNgoCEIEyDGcNZE/KoYK+qJMUe8\n/SN+cxgY5hNjDgPnqDl4A3I0fPAGD/3ST3u++gL8TgHJcpR9qiKsarCrYJ1AHReOmoM/HAmGj5Ax\nCKgwMPzHDj4AzedRUlJOUlIqADL5sav6j98VCFmC7kEoxcsaNQdL8OzoewITpSR8GAsYzl+AGsS4\nAWYiJo2zoo+EqGUXYGBLwNQGF4Eqw13RQxWwGTCwf4HrwmRAleEuqKEKmD6SZQ53Tye0RQOziIGB\nGbNNsePENAGI22DK0CrWaxuYPqAqYGC4fwDdO7zZDPpQMezmMGYxcDyAqIApYGAwRzeGQWwBQx9e\nczg+MjBPAKo4pKRkpqSkDlbL0QDVgqD6BRgsQTwkZaj+YnvAIO8AUQ93zwwIH5nMY2CExSFMGao5\n8gcY4qEaYApYGxh2I5sBZDP+YWCFhiIDTBmaOQEMj1g3gLXBFHgwMMxGN+crA59CNEQQpgzVHKYJ\nXOY8KAq4bc60G6CZw6DJsLjgAIoytHTIWHlk+1wUBUzAMhTDHPE53pUXUJThruhhDoYox0kSVCaN\nUyuKBLIyAOpdmg617KB4AAAAAElFTkSuQmCC\n",
  1026. "text/latex": [
  1027. "$$- \\frac{1}{a + 2} + \\frac{1}{a + 1}$$"
  1028. ],
  1029. "text/plain": [
  1030. " 1 1 \n",
  1031. "- ───── + ─────\n",
  1032. " a + 2 a + 1"
  1033. ]
  1034. },
  1035. "execution_count": 43,
  1036. "metadata": {},
  1037. "output_type": "execute_result"
  1038. }
  1039. ],
  1040. "source": [
  1041. "apart(f1)"
  1042. ]
  1043. },
  1044. {
  1045. "cell_type": "code",
  1046. "execution_count": 44,
  1047. "metadata": {},
  1048. "outputs": [],
  1049. "source": [
  1050. "f2 = 1/(a+2) + 1/(a+3)"
  1051. ]
  1052. },
  1053. {
  1054. "cell_type": "code",
  1055. "execution_count": 45,
  1056. "metadata": {},
  1057. "outputs": [
  1058. {
  1059. "data": {
  1060. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAHwAAAAsBAMAAABVvsF6AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWYiiUS7\n3TIuwQ1sAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAB30lEQVRIDe2Wv0sCYRzGHzs0zx8ZQUGTUENF\nRRIuTSdF0RIKaUMESWMNNUQ3hf4DwQ21BIEEEQRFBO01NdQQEQ0tubYpDpFR9nrv+173+l4m1NDg\nDfe+3+d5Pu99+eqhwJ9dHZFGjnL1OqaUyXgjeDRZcsSB1UZweJq4PL/m6OSZiMp3X5vkyHpWTDpV\n7vGXaSf9H2qu9K+aauJ1xldxvgoE8en6Zp+ux8g25Jyq1Dm4ajUn/8OAauzdo0uu1BmdmrrJ85h9\nVRMIZ5mgGHZH2EfhexOELlp5igjdCoZQ8IYmgB7BYLh/ENqaYAgFx4eBeN7uMJxIVvN2m+05nomY\nuDo/x36xLVx5lLGdg6WIqXKcFE9EOTNaCzTNcfV4VsL9A8hQ8Qv3lwGlH+4LEQf2T2v50SwWavFg\nDHCXEEwT41DX73R9nUZapD8gixE8EM/2EgIpIrRcQMtTiDWvGggUqfJ1H4LyQSureU+CCFoOYZZi\neKgk40oZLjYhC+8EeZDWjiuXYR7AcNJP8JWdyBeliMBat1lxvC0Bj4HWtPfeR1MM92YRTnOOrxvY\niuXMguN7RwczZPJTJ9srNMRwnKeuOWWt0eXnKfpxcDxTqbxbdnXDcUGUCo5LxpikOAnCS/gJnQmX\nnOfh0q8AAAAASUVORK5CYII=\n",
  1061. "text/latex": [
  1062. "$$\\frac{1}{a + 3} + \\frac{1}{a + 2}$$"
  1063. ],
  1064. "text/plain": [
  1065. " 1 1 \n",
  1066. "───── + ─────\n",
  1067. "a + 3 a + 2"
  1068. ]
  1069. },
  1070. "execution_count": 45,
  1071. "metadata": {},
  1072. "output_type": "execute_result"
  1073. }
  1074. ],
  1075. "source": [
  1076. "f2"
  1077. ]
  1078. },
  1079. {
  1080. "cell_type": "code",
  1081. "execution_count": 46,
  1082. "metadata": {},
  1083. "outputs": [
  1084. {
  1085. "data": {
  1086. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIIAAAAvBAMAAADdrw/+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpm7MhCriUTv3c12\nVGZoascqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACs0lEQVRIDe2WzWsTQRjGn02y+dpuSCMo9LQk\nYC9KK3pS0OhfsKdCvSQIXrRgiGIugrnWi5YiWAsSPNSDivVqhKQFUU9G/wHr1UPpwdDi1/rOzs42\n231NFkoPgnPYd/eZ3zz77uzMvguEW6F0KiwCxpvEcU4Pa3oVt5thGRnHqTEyIyVtZO4N6GZXXhg3\n1wbUYaeZFpLfBgDlkBzQhp8a/f06kH+2D23y2H15Jz+HzfWyVCIc79Ywnze2JKkc4ra2E2GsRFag\nP0JsOuhAV6ejOsQsxPrIdolPtduvltvtqhw6lZdx5HEdyEyjUpageoqr4NcJY2daGK/U8NnrUg7L\nwJTN4Ix0AVir9HDGlDkrBwt4ytCMpD1pHG0Z3dxKSnYqhwJyCwzOSIbjOC197sbhd0EHbfJSxIfY\na6py2KtHv9ajvsLolv/JA5oBWj77aweU179oq238LesvsmMkcIgz0Iony0jKPcUDjes9BbzkHGaQ\n2oG+6naxQAHmbw/IWYMO6mNwGVgCbokuHvjQw3cPyAa2v3J4CFwrY1Y48MB8U/8BCUwIym/KoWML\nB6NJHTwA8RQSoOLAFEkSX9ig0gMIAIX6e1tEqFsAF2uQwFmSw0USSG/TFIipFEB6AR0K1HyHI4/J\n0gWegy+S2SrhLRpDAGY3UKJAzXdA6oEHUGSLZJHwxBYdCBDF6hmFYBVdsn2AKZIYs2iE77AI3fut\nUTmMA+d6EqAkmSKJT9DySLfIhgB9G6ZIh5pycGzh4AI0UUyRTFgYy/szqf9CfPVjwGGRXpYH1Omt\nhovkRKN+hSaoRqMIwGt8rYrz3Rw2Yf70gDuUZLhIdhyHFq1RpjEEYObt+bkmxV2HdLFEggvwi9al\n5XIcCQQ3TrBIMjuLAXBC3o85ert7JMB+QFy/eN4NI4GRH7HhwB+u8vuFvy0h3AAAAABJRU5ErkJg\ngg==\n",
  1087. "text/latex": [
  1088. "$$\\frac{2 a + 5}{\\left(a + 2\\right) \\left(a + 3\\right)}$$"
  1089. ],
  1090. "text/plain": [
  1091. " 2⋅a + 5 \n",
  1092. "───────────────\n",
  1093. "(a + 2)⋅(a + 3)"
  1094. ]
  1095. },
  1096. "execution_count": 46,
  1097. "metadata": {},
  1098. "output_type": "execute_result"
  1099. }
  1100. ],
  1101. "source": [
  1102. "together(f2)"
  1103. ]
  1104. },
  1105. {
  1106. "cell_type": "markdown",
  1107. "metadata": {},
  1108. "source": [
  1109. "Simplify usually combines fractions but does not factor: "
  1110. ]
  1111. },
  1112. {
  1113. "cell_type": "code",
  1114. "execution_count": 47,
  1115. "metadata": {},
  1116. "outputs": [
  1117. {
  1118. "data": {
  1119. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAIIAAAAvBAMAAADdrw/+AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpm7MhCriUTv3c12\nVGZoascqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACs0lEQVRIDe2WzWsTQRjGn02y+dpuSCMo9LQk\nYC9KK3pS0OhfsKdCvSQIXrRgiGIugrnWi5YiWAsSPNSDivVqhKQFUU9G/wHr1UPpwdDi1/rOzs42\n231NFkoPgnPYd/eZ3zz77uzMvguEW6F0KiwCxpvEcU4Pa3oVt5thGRnHqTEyIyVtZO4N6GZXXhg3\n1wbUYaeZFpLfBgDlkBzQhp8a/f06kH+2D23y2H15Jz+HzfWyVCIc79Ywnze2JKkc4ra2E2GsRFag\nP0JsOuhAV6ejOsQsxPrIdolPtduvltvtqhw6lZdx5HEdyEyjUpageoqr4NcJY2daGK/U8NnrUg7L\nwJTN4Ix0AVir9HDGlDkrBwt4ytCMpD1pHG0Z3dxKSnYqhwJyCwzOSIbjOC197sbhd0EHbfJSxIfY\na6py2KtHv9ajvsLolv/JA5oBWj77aweU179oq238LesvsmMkcIgz0Iony0jKPcUDjes9BbzkHGaQ\n2oG+6naxQAHmbw/IWYMO6mNwGVgCbokuHvjQw3cPyAa2v3J4CFwrY1Y48MB8U/8BCUwIym/KoWML\nB6NJHTwA8RQSoOLAFEkSX9ig0gMIAIX6e1tEqFsAF2uQwFmSw0USSG/TFIipFEB6AR0K1HyHI4/J\n0gWegy+S2SrhLRpDAGY3UKJAzXdA6oEHUGSLZJHwxBYdCBDF6hmFYBVdsn2AKZIYs2iE77AI3fut\nUTmMA+d6EqAkmSKJT9DySLfIhgB9G6ZIh5pycGzh4AI0UUyRTFgYy/szqf9CfPVjwGGRXpYH1Omt\nhovkRKN+hSaoRqMIwGt8rYrz3Rw2Yf70gDuUZLhIdhyHFq1RpjEEYObt+bkmxV2HdLFEggvwi9al\n5XIcCQQ3TrBIMjuLAXBC3o85ert7JMB+QFy/eN4NI4GRH7HhwB+u8vuFvy0h3AAAAABJRU5ErkJg\ngg==\n",
  1120. "text/latex": [
  1121. "$$\\frac{2 a + 5}{\\left(a + 2\\right) \\left(a + 3\\right)}$$"
  1122. ],
  1123. "text/plain": [
  1124. " 2⋅a + 5 \n",
  1125. "───────────────\n",
  1126. "(a + 2)⋅(a + 3)"
  1127. ]
  1128. },
  1129. "execution_count": 47,
  1130. "metadata": {},
  1131. "output_type": "execute_result"
  1132. }
  1133. ],
  1134. "source": [
  1135. "simplify(f2)"
  1136. ]
  1137. },
  1138. {
  1139. "cell_type": "markdown",
  1140. "metadata": {},
  1141. "source": [
  1142. "## Calculus"
  1143. ]
  1144. },
  1145. {
  1146. "cell_type": "markdown",
  1147. "metadata": {},
  1148. "source": [
  1149. "In addition to algebraic manipulations, the other main use of CAS is to do calculus, like derivatives and integrals of algebraic expressions."
  1150. ]
  1151. },
  1152. {
  1153. "cell_type": "markdown",
  1154. "metadata": {},
  1155. "source": [
  1156. "### Differentiation"
  1157. ]
  1158. },
  1159. {
  1160. "cell_type": "markdown",
  1161. "metadata": {},
  1162. "source": [
  1163. "Differentiation is usually simple. Use the `diff` function. The first argument is the expression to take the derivative of, and the second argument is the symbol by which to take the derivative:"
  1164. ]
  1165. },
  1166. {
  1167. "cell_type": "code",
  1168. "execution_count": 48,
  1169. "metadata": {},
  1170. "outputs": [
  1171. {
  1172. "data": {
  1173. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEgAAAAbBAMAAAAt2dQtAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIma7zZnddlTvRIkQ\nqzLsm4+cAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABYElEQVQoFY2SMUjEQBBFf+4kiSTGqGBhlUKw\nVcFO8IQUIihyYGWTTu1iIRaiXqWW1tpY2Qhq4VU2EQ6usrDWwtJG1FYCcXZn4xI8kptidubvY3aW\nGaDK2nNJFQLHH2pUQqbvfVdDl8ZPJQTYaR+QGfcBtYkxAnK9reaTXlsjN9YbkOoz+WvcAIslUAfw\nlk7nuZrmTnRIkRNjMMu+YIp3tRUh94xvxjUgoiKEZb7dpaN7MLEfc6ogKyOjb62zOgu4d7VNs1GA\nHt53pkZImWR1i9pLnNRWrXElr+X4h+L+mKFzqoSBaZnch+F2GK6IuI5XcXwKBxAEDKuOdOMfiMSF\ngug5it+EF5b/rgk5+ytWqXE7OYKVcKogN4XcItU4zfi2tYBRZvJKVoQLoWywTAWf9rrNgLMcqgd4\nEcoqy6VjMSKG5LpwKPyjDimiAbPNFORi0snTsqX7K2AEOf7vlOtL6i9nYkLvuMXjdgAAAABJRU5E\nrkJggg==\n",
  1174. "text/latex": [
  1175. "$$\\left(x + \\pi\\right)^{2}$$"
  1176. ],
  1177. "text/plain": [
  1178. " 2\n",
  1179. "(x + π) "
  1180. ]
  1181. },
  1182. "execution_count": 48,
  1183. "metadata": {},
  1184. "output_type": "execute_result"
  1185. }
  1186. ],
  1187. "source": [
  1188. "y"
  1189. ]
  1190. },
  1191. {
  1192. "cell_type": "code",
  1193. "execution_count": 49,
  1194. "metadata": {},
  1195. "outputs": [
  1196. {
  1197. "data": {
  1198. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFgAAAAbBAMAAAAKd1XFAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMpndu3bvImbNiRBU\nq0Qb3U6NAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABl0lEQVQ4EZWTvUvDUBTFTz9CY1swOCsWpyII\nHdTJoZtuVkEEQXRwUpCABTtJFgc3BUUyKEHsoCBkSUVBKIijoyhKJ/8AHUSEivXel5eWp1XjGU7u\nue+X5D7yAoRVecANiyJqRfPhYUd/Dg0D0fw/4IoRHtZ2wrPqGAnrxzt1k5ci7+xdbCgKb2+3QMVI\nvPHioCB223OiewbETH2Jam2BG3qGvamrZsVFsoBI+YSHKW1zjom5uBJS4dS8bMMR8EoQ/asKY1+u\n6qaAJyl6s2szBQXWGqQM0CdhDwIeA1KOPhTbVODj7un1VepsSNjx4RHahpusp+Xo/hiRatKcYO7S\nh9OGDy/Tk9GRF80j2x627T2u43jgSy8bcI4mDHTKiYFggz3IMSXh61rt9YYijUE9g50VwFnUOT6y\nCYmPQhtMu3PQXL8n4VQdH9wINgi8cDwAnqrjKHFNkrCWwyLHfjbWYeOOnF50MeVlLe6QJBy3cM9x\ni62lXz93QuyyBX85SKetFaroIKkaVaOS6IiqKqpRSd8e9OdvBXwCt6VWuiSpHUoAAAAASUVORK5C\nYII=\n",
  1199. "text/latex": [
  1200. "$$4 \\left(x + \\pi\\right)^{3}$$"
  1201. ],
  1202. "text/plain": [
  1203. " 3\n",
  1204. "4⋅(x + π) "
  1205. ]
  1206. },
  1207. "execution_count": 49,
  1208. "metadata": {},
  1209. "output_type": "execute_result"
  1210. }
  1211. ],
  1212. "source": [
  1213. "diff(y**2, x)"
  1214. ]
  1215. },
  1216. {
  1217. "cell_type": "markdown",
  1218. "metadata": {},
  1219. "source": [
  1220. "For higher order derivatives we can do:"
  1221. ]
  1222. },
  1223. {
  1224. "cell_type": "code",
  1225. "execution_count": 50,
  1226. "metadata": {},
  1227. "outputs": [
  1228. {
  1229. "data": {
  1230. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAAAbBAMAAACekfw3AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWYiuzKJ\nRN0MreaOAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAByElEQVQ4EZWTPUjDYBCG3/6bNqmKKOgi6OCm\nQToKFgV/Fi2oi5NQFFy0W8HBdhF0kY5OtaM41cnRgigUBTs5d1I6iBVRB3/i3Zd8bVO1knfId/fe\nPbkcfAGcSF1ecNJOvUVMOyQqOMs4Qx5wWHJGAP26U+LOKaDGmomDZqOe73G4I3Nl6TjPsZKTzs/T\nmwG0gkZ9rkEgAvWTewLk/iVPAjjt7NMRWXwGJoEB7qwNFZhrRRzycQmMGAZlfiKGgXkah4qsirOJ\nGJVFJlK6IJSyNH8jAiWrygTpUadxMcCzNntL81lyxqZhGC+Aj6pCJqF9UBJMA2PYX7k3KxahXvUc\nrGeAtoRpiz2AcJTScAdwjhu910acoOjPk+Mqm7ZFLHHmLgE6tkRBTSa3h5LJKCc5r07PUJVjkvgq\n3sAkgFcOWXKPUDTMqZ3ohpIxvwqhdy6zJOFLt/MMrcwmiWeEYvATwZt3+auIi0KNGNfbS+TYNs9e\nX8yRRzdTewpWFQJZcsYG3AVKffwg+SbeZpAyjC+Kaa5nKr66Kwp14gjeAlmBvOU3Hi1vSbaxU8b2\nm+ih1Rpk3YQGh8KgvcdW5Nv+U63+qD/e9t9fS0O+AbbpaS6aluDxAAAAAElFTkSuQmCC\n",
  1231. "text/latex": [
  1232. "$$12 \\left(x + \\pi\\right)^{2}$$"
  1233. ],
  1234. "text/plain": [
  1235. " 2\n",
  1236. "12⋅(x + π) "
  1237. ]
  1238. },
  1239. "execution_count": 50,
  1240. "metadata": {},
  1241. "output_type": "execute_result"
  1242. }
  1243. ],
  1244. "source": [
  1245. "diff(y**2, x, x)"
  1246. ]
  1247. },
  1248. {
  1249. "cell_type": "code",
  1250. "execution_count": 51,
  1251. "metadata": {},
  1252. "outputs": [
  1253. {
  1254. "data": {
  1255. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGEAAAAbBAMAAACekfw3AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWYiuzKJ\nRN0MreaOAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAByElEQVQ4EZWTPUjDYBCG3/6bNqmKKOgi6OCm\nQToKFgV/Fi2oi5NQFFy0W8HBdhF0kY5OtaM41cnRgigUBTs5d1I6iBVRB3/i3Zd8bVO1knfId/fe\nPbkcfAGcSF1ecNJOvUVMOyQqOMs4Qx5wWHJGAP26U+LOKaDGmomDZqOe73G4I3Nl6TjPsZKTzs/T\nmwG0gkZ9rkEgAvWTewLk/iVPAjjt7NMRWXwGJoEB7qwNFZhrRRzycQmMGAZlfiKGgXkah4qsirOJ\nGJVFJlK6IJSyNH8jAiWrygTpUadxMcCzNntL81lyxqZhGC+Aj6pCJqF9UBJMA2PYX7k3KxahXvUc\nrGeAtoRpiz2AcJTScAdwjhu910acoOjPk+Mqm7ZFLHHmLgE6tkRBTSa3h5LJKCc5r07PUJVjkvgq\n3sAkgFcOWXKPUDTMqZ3ohpIxvwqhdy6zJOFLt/MMrcwmiWeEYvATwZt3+auIi0KNGNfbS+TYNs9e\nX8yRRzdTewpWFQJZcsYG3AVKffwg+SbeZpAyjC+Kaa5nKr66Kwp14gjeAlmBvOU3Hi1vSbaxU8b2\nm+ih1Rpk3YQGh8KgvcdW5Nv+U63+qD/e9t9fS0O+AbbpaS6aluDxAAAAAElFTkSuQmCC\n",
  1256. "text/latex": [
  1257. "$$12 \\left(x + \\pi\\right)^{2}$$"
  1258. ],
  1259. "text/plain": [
  1260. " 2\n",
  1261. "12⋅(x + π) "
  1262. ]
  1263. },
  1264. "execution_count": 51,
  1265. "metadata": {},
  1266. "output_type": "execute_result"
  1267. }
  1268. ],
  1269. "source": [
  1270. "diff(y**2, x, 2) # same as above"
  1271. ]
  1272. },
  1273. {
  1274. "cell_type": "markdown",
  1275. "metadata": {},
  1276. "source": [
  1277. "To calculate the derivative of a multivariate expression, we can do:"
  1278. ]
  1279. },
  1280. {
  1281. "cell_type": "code",
  1282. "execution_count": 52,
  1283. "metadata": {},
  1284. "outputs": [],
  1285. "source": [
  1286. "x, y, z = symbols(\"x,y,z\")"
  1287. ]
  1288. },
  1289. {
  1290. "cell_type": "code",
  1291. "execution_count": 53,
  1292. "metadata": {},
  1293. "outputs": [],
  1294. "source": [
  1295. "f = sin(x*y) + cos(y*z)"
  1296. ]
  1297. },
  1298. {
  1299. "cell_type": "markdown",
  1300. "metadata": {},
  1301. "source": [
  1302. "$\\frac{d^3f}{dxdy^2}$"
  1303. ]
  1304. },
  1305. {
  1306. "cell_type": "code",
  1307. "execution_count": 54,
  1308. "metadata": {},
  1309. "outputs": [
  1310. {
  1311. "data": {
  1312. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPgAAAAUBAMAAABSee3BAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMnarIkSJZlS7\nme8N5bApAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADlElEQVRIDYVWXYhMYRh+zszsnvnbcVKrlJiG\ncOFiIzY/F5twpz0ulqRhifyUGrkg7DYlF27sUBsuZCKJUiPJjdjkpySmDUVkibhRu7V+1t943u/8\nzJzv7PLUO/u+z/d8z3vOe77ZM0AIB0JMkDDLjfXFxuIfecA1WQAkQjAHQlSQOBQom3WPnld3XUHs\nQ12puW7nioSOiO6mC+YECCMbKGF042zRoWJj9SXNdTJXJHRc0QmtTlaDRL9bpmyVNFvIDAUVUmmu\nCYoldLTrhFZHC0Fiulu6zTNtaB4NKqTSXI0hQEKD2aYRerlXIyJFh3CbR0b85uYKXxpyncslCQdG\n1/YjMsGmKq9J5a3PYL5l8eJMBVO7TiG24UKWgjyjde3+9baRt9FroYUbBG5zZtERKPGhr1j+eeVa\nm1TI9TVJCQdTcd6ezzRdBpy8dAtNw0BvJfYx1o60PQ1oo+Ahr6eUXBjNJlJD2MSvTJYkUW/eVwKU\neDawzDa/cTHkeo6khIPjOGvdYBqtACo3K4NIDwA5pEajJcRGj1mwKVjKo2IlRlKFgy1ZPGJTuSKi\n3nwRKyW+DzwGfrAMuV4jeQ2TFwhmwcI81kCmCCc38AGTbBi/SXbyisaiv9aJ4BPvHJEBqjI2vnDA\nwyQTudzMd7lcN1PnOSgxm9+BaEKu6CQp4UFEjszZEB9BZwfiQt8uAr+ME7UqczaHXBXQZ8V4rlVz\nVv6dy6GAErM5R+M1b3TVm4sRIQPijPnBqW6ki3fnv/cg+Z00x86L7uDHIJqGgHgbU8JrnqpiH6DE\n9ea6Kw5zh4SDqzxca5jK0XDydDe4m88cqUwV8e/XgV2seeBS1iY0WVylJHTgVgN8PEpcbx5ylcMm\noRD/mR42y0wT7OPkLQNxOSu9ZZyMvUekdMvCA9ZnOO/KE/BF8Qp93NFSIkm4d24uPv2cs1Biztwd\ne8j1BXdIKBjb1uQvS8YpurmxM/+NhLF7fQE9p3fg6IVLRdYc1pSu1pdl/ul/UwAiHVBwm0dqtRqb\ni3hVbfOq2tabf7rHcZ3FPRIa2us1n3oYjf9eB7ns/cdzm4c3KEZzNXl9EjqueMQWzCh6ecNf/8XS\nnDXkAPa7awanMDE014leLGnPZAnujWsmD14QLadtPpUs0/9Dc53oleq/9o/kO8Y19X5MxLuect13\nHVfrk5qr3IB3E75GksAPnsCKU6gvhc9f9LN/JwHXJKfL+AuGGQ+nZudVwQAAAABJRU5ErkJggg==\n",
  1313. "text/latex": [
  1314. "$$- x \\left(x y \\cos{\\left (x y \\right )} + 2 \\sin{\\left (x y \\right )}\\right)$$"
  1315. ],
  1316. "text/plain": [
  1317. "-x⋅(x⋅y⋅cos(x⋅y) + 2⋅sin(x⋅y))"
  1318. ]
  1319. },
  1320. "execution_count": 54,
  1321. "metadata": {},
  1322. "output_type": "execute_result"
  1323. }
  1324. ],
  1325. "source": [
  1326. "diff(f, x, 1, y, 2)"
  1327. ]
  1328. },
  1329. {
  1330. "cell_type": "markdown",
  1331. "metadata": {},
  1332. "source": [
  1333. "## Integration"
  1334. ]
  1335. },
  1336. {
  1337. "cell_type": "markdown",
  1338. "metadata": {},
  1339. "source": [
  1340. "Integration is done in a similar fashion:"
  1341. ]
  1342. },
  1343. {
  1344. "cell_type": "code",
  1345. "execution_count": 55,
  1346. "metadata": {},
  1347. "outputs": [
  1348. {
  1349. "data": {
  1350. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKAAAAAUBAMAAAD4uit9AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMnZUZs0Qu91E7yKJ\nmaurDqYVAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACz0lEQVQ4EXVVX0hTURz+rtvu3bybWRD1pBcD\nH6rV6KHCoIYUBCqsh1ERxCWIIKRECqFBDCoifBk+SQSaYCARDJIMIRiDgihpBeKL0YoKwgKtSFaa\nfffsnvtnzQN35/t9v+/3nfu75547oHZMeokub1AX60kPHcxXA2XMJfU+FwNNtsLL+fGUL1yoRsqK\ny4Z8FmrKzdRHp3z0WV8kgh4/VbTDgOHnZRQsSSTmqOELrWDQz5y3w/UMw76GoI4Kvb7RcdGzDhQg\nlKvG6xk+9stxEsq2ztTUX2x+sGmXwWQDW1DbFoaKOPMG+j3E7JakoTo/k0Bv23NRR32c8riBaRPD\nE0oSeItzQBangZuG/ocCjWQvjho3UOhAwyKCKZIc0nA6odxXBqEZog64BEQDo9gNtT8+R90R3DZh\n4CpwBfhJIpwAnuGVeUBPzELrQyBLkkMaphFYChegLIk64BrwMJbCAFSIF24/wss7YBleBr6zsDEH\nmDjORjCGDQaURZLRdPrEeDpdJrvKsJWLrog6YILyRkOUbjGtHNSnayXLcMA1rKLIL7Q2Vw0ptO8w\nYi16iIsuizphiBFTWQIiZaZo+AjBisfQapkN8YeNbKcsS8hhGzp3uCrqRMuYRcMocFDohrEH+Ogx\ntDZlLzejHVrZoms3JU3vxhIiFVEnNoUyagMlNMHalA4TGatfu+UoxT+0RR75WF+EuxQrUMUhN2U6\niRfKXYQKog6YYW4OI0ls7e68RTyPO53duZa1zy1r7/f9LosW1Q/t8cN8/l/jfI9CzVRxSEP12848\nnrz8IurID/O6UHyXRyk4zkeLY7z8w3P0+BQhT4I09Iv5muUtZlbStQeNfI/MfcJFLlm0Q1UUypw7\n8+PQlFIrkogaEjmzJiuvo599p5zEOiCDcFIzZLLO58v5wA7Fm3kSpb2s+G+eQqTttcNmHOSCSRcC\nXd6gLq79C/gHf4qzfkFAyyAAAAAASUVORK5CYII=\n",
  1351. "text/latex": [
  1352. "$$\\sin{\\left (x y \\right )} + \\cos{\\left (y z \\right )}$$"
  1353. ],
  1354. "text/plain": [
  1355. "sin(x⋅y) + cos(y⋅z)"
  1356. ]
  1357. },
  1358. "execution_count": 55,
  1359. "metadata": {},
  1360. "output_type": "execute_result"
  1361. }
  1362. ],
  1363. "source": [
  1364. "f"
  1365. ]
  1366. },
  1367. {
  1368. "cell_type": "code",
  1369. "execution_count": 56,
  1370. "metadata": {},
  1371. "outputs": [
  1372. {
  1373. "data": {
  1374. "image/png": "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\nojUnOm7/Aywn7A6s7fMGAAAAAElFTkSuQmCC\n",
  1375. "text/latex": [
  1376. "$$x \\cos{\\left (y z \\right )} + \\begin{cases} 0 & \\text{for}\\: y = 0 \\\\- \\frac{1}{y} \\cos{\\left (x y \\right )} & \\text{otherwise} \\end{cases}$$"
  1377. ],
  1378. "text/plain": [
  1379. " ⎛⎧ 0 for y = 0⎞\n",
  1380. " ⎜⎪ ⎟\n",
  1381. "x⋅cos(y⋅z) + ⎜⎨-cos(x⋅y) ⎟\n",
  1382. " ⎜⎪────────── otherwise⎟\n",
  1383. " ⎝⎩ y ⎠"
  1384. ]
  1385. },
  1386. "execution_count": 56,
  1387. "metadata": {},
  1388. "output_type": "execute_result"
  1389. }
  1390. ],
  1391. "source": [
  1392. "integrate(f, x)"
  1393. ]
  1394. },
  1395. {
  1396. "cell_type": "markdown",
  1397. "metadata": {},
  1398. "source": [
  1399. "By providing limits for the integration variable we can evaluate definite integrals:"
  1400. ]
  1401. },
  1402. {
  1403. "cell_type": "code",
  1404. "execution_count": 57,
  1405. "metadata": {},
  1406. "outputs": [
  1407. {
  1408. "data": {
  1409. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFAAAAAUBAMAAADo9qfkAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAIpm7MhCriUTv3c12\nVGZoascqAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABuElEQVQoFXWTP2hTURTGf695r3lNkxgUh2Z6\ntEMHHVIKTqUEurkkINihQlNBLBU0Zqngkk0MDgotpNWh3bqoFToUOjRmKYKF4CBEBLN1aIb+kxYR\n43dNW/NK8sE57/u+c7jv3Hfvgw6wai2FaAys/uFki3VOr5wzQ6bgNsETn3cqPvjMCbgHCz6vKaKe\nzwyWWIRHSZ/5T4Q0VQucl2ym2zbGW7oMXTfpfRqcwVyF8c9PsLfrq/LKijvXseYpFO0a9Eu7x0p9\nFfuVvUygdAuWpEcV2SrhPWekPCC+qwhllDaIHIWy2EfP05Sk3+rDVa4RSDhYCelvCrOqc6CUqsBx\n6PCjKEV5vOFSCcY0GSkIe3q6v5V+5OHQedowhhpxf5JK4mZETeMXrNj/FQ+uEjUHoFfTtcon+Gr6\nKGB7hGNmRiI9Hu7Jd3iogtlMIMMNIh7d4rvEZ3MzIn01Httz9GaraYakc4quhPuHmzv1FfFBNhuN\nXyLO3a0Yl2eneVbfyUsXjHe/vI8XfW30mqItmkeoKZuwltp2yTSX4gGT+dO6LkUnaNB3jJxVdc06\nQRf3RTl5VjX764CLv8JfPcJj8HGPsdwAAAAASUVORK5CYII=\n",
  1410. "text/latex": [
  1411. "$$2 \\cos{\\left (y z \\right )}$$"
  1412. ],
  1413. "text/plain": [
  1414. "2⋅cos(y⋅z)"
  1415. ]
  1416. },
  1417. "execution_count": 57,
  1418. "metadata": {},
  1419. "output_type": "execute_result"
  1420. }
  1421. ],
  1422. "source": [
  1423. "integrate(f, (x, -1, 1))"
  1424. ]
  1425. },
  1426. {
  1427. "cell_type": "markdown",
  1428. "metadata": {},
  1429. "source": [
  1430. "and also improper integrals"
  1431. ]
  1432. },
  1433. {
  1434. "cell_type": "code",
  1435. "execution_count": 58,
  1436. "metadata": {},
  1437. "outputs": [
  1438. {
  1439. "data": {
  1440. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB0AAAAVBAMAAABI7vhRAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAInarRM2ZVBDdiWbv\nuzJCz3LGAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAr0lEQVQYGWNggADG/2DwAcplYHaAsSC0KCqX\nIR2VzzEBlc9WgMrvROUyrEblg7TrAx3wDSrMtIGBa12RtKIAkO8CxJwMDM8ZFjI9ADKZjgIJJSBm\nuMDcACQl9B0YGEC28xkAVQFB/wUG7gVAmm0DfwOQYmD7yMAJYvQ38DsAKQbGbwy7QLQmA88CEM1g\n3zADRN1mYF4AohneL08A0zCC9WgDjAmm2WGuhIkGwhhAGgDwdic2xV4k0wAAAABJRU5ErkJggg==\n",
  1441. "text/latex": [
  1442. "$$\\sqrt{\\pi}$$"
  1443. ],
  1444. "text/plain": [
  1445. " ___\n",
  1446. "╲╱ π "
  1447. ]
  1448. },
  1449. "execution_count": 58,
  1450. "metadata": {},
  1451. "output_type": "execute_result"
  1452. }
  1453. ],
  1454. "source": [
  1455. "integrate(exp(-x**2), (x, -oo, oo))"
  1456. ]
  1457. },
  1458. {
  1459. "cell_type": "markdown",
  1460. "metadata": {},
  1461. "source": [
  1462. "Remember, `oo` is the SymPy notation for inifinity."
  1463. ]
  1464. },
  1465. {
  1466. "cell_type": "markdown",
  1467. "metadata": {},
  1468. "source": [
  1469. "### Sums and products"
  1470. ]
  1471. },
  1472. {
  1473. "cell_type": "markdown",
  1474. "metadata": {},
  1475. "source": [
  1476. "We can evaluate sums and products using the functions: 'Sum'"
  1477. ]
  1478. },
  1479. {
  1480. "cell_type": "code",
  1481. "execution_count": 59,
  1482. "metadata": {},
  1483. "outputs": [],
  1484. "source": [
  1485. "n = Symbol(\"n\")"
  1486. ]
  1487. },
  1488. {
  1489. "cell_type": "code",
  1490. "execution_count": 60,
  1491. "metadata": {},
  1492. "outputs": [
  1493. {
  1494. "data": {
  1495. "image/png": "iVBORw0KGgoAAAANSUhEUgAAADsAAAA9BAMAAADhUgydAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMs2Zq91U7yJ2iWZE\nELuNX9C8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAACFklEQVQ4Ec2Vz2sTQRTHv/nRpMnuklBPnhK8\niYdW2lMlpgjSBg+KFytEsgVbb017bEESUARBSaBKoafgqT25oCh4ykWEXsxB8OTFP8AmodpYLOPs\nzr7ZTXYz577Dznvfz763MzszPMC2KSB10HLckMeFm8AnPAwhQloFysh0xvFVGD0kzfE4MsCEpcBn\nmGgq8ABJBebfzrTHZytn/gjYGb/uJ5US0vMFf+3EY3806n+bOxuVhuLUecDTzLO/cnpyalWWdcQf\nL97XToI4zu6QqFVMcmU2KsekIZYn18M5ZpGIq+R5WGMDEpFyvdhi/xaJR7/JCx2/s5lQ3RV19keF\n8fako+JRlldho3aqwqiytorHmPJooeKrnvF2sOvWbDxQFcduXYX1XpCmrxdIzJnkeeM+briBseWp\n0ltGri6C6IIYh55lNNpC+Dmky6AqdiLtrSohGXfui+BjXYofpAekxSnwrUrf8OF3wm+YpBlFJ+Fw\n6fmrJvSWnuXA2Cb67La4ETO/msYAU2vrHU6i/UuO3eM74ZzJiHkXkz3UGLPzit4GMeeOGcY/aF0q\nGRwTXcTzQZkUfpUylv3dcEu2UO20whlX+b9+o9mLGjXeFbh9Bp76fx+9ZXcFlfGuoLIg1q5d3JEZ\nIfirlazH7d96BQjil699LSiIUcIXRXFsYjbiFL8cVnyyi/IKpfOuMGL6AvYsV7O7wrD9B0+roo4Z\nb2oXAAAAAElFTkSuQmCC\n",
  1496. "text/latex": [
  1497. "$$\\sum_{n=1}^{10} \\frac{1}{n^{2}}$$"
  1498. ],
  1499. "text/plain": [
  1500. " 10 \n",
  1501. " ____ \n",
  1502. " ╲ \n",
  1503. " ╲ 1 \n",
  1504. " ╲ ──\n",
  1505. " ╱ 2\n",
  1506. " ╱ n \n",
  1507. " ╱ \n",
  1508. " ‾‾‾‾ \n",
  1509. "n = 1 "
  1510. ]
  1511. },
  1512. "execution_count": 60,
  1513. "metadata": {},
  1514. "output_type": "execute_result"
  1515. }
  1516. ],
  1517. "source": [
  1518. "Sum(1/n**2, (n, 1, 10))"
  1519. ]
  1520. },
  1521. {
  1522. "cell_type": "code",
  1523. "execution_count": 61,
  1524. "metadata": {},
  1525. "outputs": [
  1526. {
  1527. "data": {
  1528. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJ8AAAAPBAMAAAAIUwCQAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWbdMoki\nu0RRNjIpAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACUElEQVQ4Ea2TP2gTUQDGf+k1TZo/7eHoYvwD\nXaqeRShODaVB0aEVmqn+CYoUVEiGDuJicNAOgg6Kk5jVyQ5FxCAJgpMOtzg4NSg4C61WQRu/995d\nrt09wpfL+77fl/fevYPoylzNnddtbgFvab3Li0q7vQbtG63c46V22wqF9ls/zttv2TZDQkPqsPWG\n+n0VMBoy1SxM8rDf75eZ7qUbWd1tWeE9qV8xsC/A2k4SmpOLm7Yws37TfF8JmYUKF2AYPlEM010o\nW6Hu89sBXmVehcZ2ktAw4gqF6yrcD9mGDprtG8b+aCivT8sKX3qeTAfUA2fbjPnziI79aCifCb2/\nUG/BWI1iycTg20DMkgeF1nYZVyhayXiGq9da8EBDE5phD4owfvvVJSUwMSenNPNBobVdZnhAxz7F\noLCDV1NhB+404TXM3GLI14r1y8mHJ0EMaMnWdpmEjn0hfNZ+qTBTS3V8vO8q3CStMzBjTCvkj8WA\nKTR2lBnQsW+Yy939ppB71zstRhpa8iOyO7BsTCtwKNi1ZGNHmYSO9/C0du7rmi0EnQkdSEYbZPUU\nnplCIx9hw08Kre0yu+nooUzoP07Mzc0fqYlc0RLLOoklM0NvSyNW+sGeQmu7zG46KlyApwKHQu52\nczp/LzWQ0yaVyP3QuJWj8LybzNDaLpPQbg9nGnqtspMCx0OWg+kmHFCGc0z5pEyhlVVSP+NN10Nx\nts0kNOnZ7TOMliksVRTJb2w181Vz+N75knz1rN6eg7qzMla92HMAi8dXms52mQGt7P+9/gFEfua1\nt0ciqgAAAABJRU5ErkJggg==\n",
  1529. "text/latex": [
  1530. "$$1.54976773116654$$"
  1531. ],
  1532. "text/plain": [
  1533. "1.54976773116654"
  1534. ]
  1535. },
  1536. "execution_count": 61,
  1537. "metadata": {},
  1538. "output_type": "execute_result"
  1539. }
  1540. ],
  1541. "source": [
  1542. "Sum(1/n**2, (n,1, 10)).evalf()"
  1543. ]
  1544. },
  1545. {
  1546. "cell_type": "code",
  1547. "execution_count": 62,
  1548. "metadata": {},
  1549. "outputs": [
  1550. {
  1551. "data": {
  1552. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJ8AAAAPBAMAAAAIUwCQAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWbdiTJE\nuyIU2bFIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACpklEQVQ4Ea1TQWsTQRh9223TdLPZ5FBPHmqt\nIEIrS62V9tJQo1Q8ZNEGoShEoQp6aKQeDV0U1JPVgwiCGMRKrZTsQS9ejIIHT1bP1u5FUA9KGmna\nYhvffNMUf4ALeftm3puXmfm+BRqP9fQ5aczTYI49CYEfcx+V/BI4OKtU8Qj0Xzy9pQhzsosBnLn5\nJCeNLqXAvIpTfLUtaOj1nf1wPHT4HD8ELmMg1B5t9NCsFlMR1gfrD77CWAX6RqsUgLiHRb7OqUDC\nMHAEkQoSd4BID6K7YOW1R4yGDycvimaHgd2YSGKNqyM68ENIDucmAxXUgBLsbgxx2bcC4ikYVYhH\nwFqAyb+iotk+IBO8LZtc1gj8pPJgtTKQYG4AEwEn1JGLBSRSsCsQj4C94Vpa0WzKZSCvj0duBNZe\njZeB2ypQwV7ukGPzARANCxjyYK9APNqYWZ3VCoQx55ELDBRJ9JHNmo9OmDlmCZSAKd7Ts5NAPwr4\nVURsXTzaCKs+qRXNAHudTXGPoY3AuosTrgUGCrTmjFKS6uMyiirQU4HKc0CMaH+/rBXN2B4puq3u\n7UBVn+nyThUogBuXSgHVpi4jYKA+sngEoilMaEUYjVn+WGpucavK9xl4vchAU4ESM64TIl4ZBANZ\nFKMC5fEFmkLEtCKMKR7wE1hKbgey8abfpNOZPWcV5Bh4BYkqA9vT6eWj8QVEq6o5p8sCQ9RHRBEG\n7IAT8jL+CXzN+6GrSW2OcC2Mbap32ybH0tgteYhHgPvCF1E04xcbCXtYas6rI7N9m4tmJx0JFUi4\n4B7yEfXRkeOYTXkXvYH2iNGeRFQrmn2fmzmGWzBWgJbh2oiUaGY0YJmWfvsCVlZ9/O+yn4nz9REM\nnj9OJh6BF2NKV4qwqXp9DXb2TJmT//n5CzSjDuDy+pXbAAAAAElFTkSuQmCC\n",
  1553. "text/latex": [
  1554. "$$1.64493406684823$$"
  1555. ],
  1556. "text/plain": [
  1557. "1.64493406684823"
  1558. ]
  1559. },
  1560. "execution_count": 62,
  1561. "metadata": {},
  1562. "output_type": "execute_result"
  1563. }
  1564. ],
  1565. "source": [
  1566. "Sum(1/n**2, (n, 1, oo)).evalf()"
  1567. ]
  1568. },
  1569. {
  1570. "cell_type": "markdown",
  1571. "metadata": {},
  1572. "source": [
  1573. "Products work much the same way:"
  1574. ]
  1575. },
  1576. {
  1577. "cell_type": "code",
  1578. "execution_count": 63,
  1579. "metadata": {},
  1580. "outputs": [
  1581. {
  1582. "data": {
  1583. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAC8AAAA9BAMAAADPFy0PAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMs2Zq91U7yJ2iWZE\nELuNX9C8AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABXElEQVQ4EWNgAAEhBgbOlQvATBRC2JWBYRdD\nCooYhJPKwBDDwH8BUyaVgfcjA3sCNgnGHwysG7BK/GVgnYBV4gcDO1YJoB38B7DpwOGqdAaGydj8\n0RzvycBlZYtp0iAUYf+PAB+R3cdx5P+/DhDY/19NAFmCgeH9FzA///8FVHGG9VCJr2jiQ1zilEfn\nFEiCQfOgwbsJvD/AfkWVYEwIYuCAhCaqBC/vHwbuD1h0MLB9YGBRwCbBrMDAvwEc0KhGMbAvYMi/\nsACkBU2i/wDDIm4BLBJHGRhatoHE0XWAxQZe4j0k3axHS1ccwv//v2lg4JX6/1+tAeFUBgZw2v3A\nwAdKwShpF1kRPdjAkg4rAJV02AGwpMMOkCW4rSUnw1WhSJzfwN7AogQE2gwMyBK9U5GKT2QJBk+G\n41iNYihkMGYEG6WJahTHB4aYRJgWYEkHBzwODLM2QHmgkg4GAOSmp5CzUioBAAAAAElFTkSuQmCC\n",
  1584. "text/latex": [
  1585. "$$\\prod_{n=1}^{10} n$$"
  1586. ],
  1587. "text/plain": [
  1588. " 10 \n",
  1589. "┬───┬ \n",
  1590. "│ │ n\n",
  1591. "│ │ \n",
  1592. "n = 1 "
  1593. ]
  1594. },
  1595. "execution_count": 63,
  1596. "metadata": {},
  1597. "output_type": "execute_result"
  1598. }
  1599. ],
  1600. "source": [
  1601. "Product(n, (n, 1, 10)) # 10!"
  1602. ]
  1603. },
  1604. {
  1605. "cell_type": "markdown",
  1606. "metadata": {},
  1607. "source": [
  1608. "## Limits"
  1609. ]
  1610. },
  1611. {
  1612. "cell_type": "markdown",
  1613. "metadata": {},
  1614. "source": [
  1615. "Limits can be evaluated using the `limit` function. For example, "
  1616. ]
  1617. },
  1618. {
  1619. "cell_type": "code",
  1620. "execution_count": 64,
  1621. "metadata": {},
  1622. "outputs": [
  1623. {
  1624. "data": {
  1625. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAPBAMAAAArJJMAAAAAHlBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAACGjDitAAAACXRSTlMAVO8Qq5l2zWYZcMvdAAAACXBIWXMAAA7EAAAOxAGV\nKw4bAAAAHUlEQVQIHWNgAANGZQYGk5DJQDYbqQSr03QPsBkAJYgIYEZbtZEAAAAASUVORK5CYII=\n",
  1626. "text/latex": [
  1627. "$$1$$"
  1628. ],
  1629. "text/plain": [
  1630. "1"
  1631. ]
  1632. },
  1633. "execution_count": 64,
  1634. "metadata": {},
  1635. "output_type": "execute_result"
  1636. }
  1637. ],
  1638. "source": [
  1639. "limit(sin(x)/x, x, 0)"
  1640. ]
  1641. },
  1642. {
  1643. "cell_type": "markdown",
  1644. "metadata": {},
  1645. "source": [
  1646. "We can use 'limit' to check the result of derivation using the `diff` function:"
  1647. ]
  1648. },
  1649. {
  1650. "cell_type": "code",
  1651. "execution_count": 65,
  1652. "metadata": {},
  1653. "outputs": [
  1654. {
  1655. "data": {
  1656. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKAAAAAUBAMAAAD4uit9AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAMnZUZs0Qu91E7yKJ\nmaurDqYVAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACz0lEQVQ4EXVVX0hTURz+rtvu3bybWRD1pBcD\nH6rV6KHCoIYUBCqsh1ERxCWIIKRECqFBDCoifBk+SQSaYCARDJIMIRiDgihpBeKL0YoKwgKtSFaa\nfffsnvtnzQN35/t9v+/3nfu75547oHZMeokub1AX60kPHcxXA2XMJfU+FwNNtsLL+fGUL1yoRsqK\ny4Z8FmrKzdRHp3z0WV8kgh4/VbTDgOHnZRQsSSTmqOELrWDQz5y3w/UMw76GoI4Kvb7RcdGzDhQg\nlKvG6xk+9stxEsq2ztTUX2x+sGmXwWQDW1DbFoaKOPMG+j3E7JakoTo/k0Bv23NRR32c8riBaRPD\nE0oSeItzQBangZuG/ocCjWQvjho3UOhAwyKCKZIc0nA6odxXBqEZog64BEQDo9gNtT8+R90R3DZh\n4CpwBfhJIpwAnuGVeUBPzELrQyBLkkMaphFYChegLIk64BrwMJbCAFSIF24/wss7YBleBr6zsDEH\nmDjORjCGDQaURZLRdPrEeDpdJrvKsJWLrog6YILyRkOUbjGtHNSnayXLcMA1rKLIL7Q2Vw0ptO8w\nYi16iIsuizphiBFTWQIiZaZo+AjBisfQapkN8YeNbKcsS8hhGzp3uCrqRMuYRcMocFDohrEH+Ogx\ntDZlLzejHVrZoms3JU3vxhIiFVEnNoUyagMlNMHalA4TGatfu+UoxT+0RR75WF+EuxQrUMUhN2U6\niRfKXYQKog6YYW4OI0ls7e68RTyPO53duZa1zy1r7/f9LosW1Q/t8cN8/l/jfI9CzVRxSEP12848\nnrz8IurID/O6UHyXRyk4zkeLY7z8w3P0+BQhT4I09Iv5muUtZlbStQeNfI/MfcJFLlm0Q1UUypw7\n8+PQlFIrkogaEjmzJiuvo599p5zEOiCDcFIzZLLO58v5wA7Fm3kSpb2s+G+eQqTttcNmHOSCSRcC\nXd6gLq79C/gHf4qzfkFAyyAAAAAASUVORK5CYII=\n",
  1657. "text/latex": [
  1658. "$$\\sin{\\left (x y \\right )} + \\cos{\\left (y z \\right )}$$"
  1659. ],
  1660. "text/plain": [
  1661. "sin(x⋅y) + cos(y⋅z)"
  1662. ]
  1663. },
  1664. "execution_count": 65,
  1665. "metadata": {},
  1666. "output_type": "execute_result"
  1667. }
  1668. ],
  1669. "source": [
  1670. "f"
  1671. ]
  1672. },
  1673. {
  1674. "cell_type": "code",
  1675. "execution_count": 66,
  1676. "metadata": {},
  1677. "outputs": [
  1678. {
  1679. "data": {
  1680. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFMAAAAUBAMAAAADwRznAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHaZIu+JVM27RDKr\nZt2dj8xZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABlUlEQVQoFXWTPUvDUBSG31jbfDUxFBQEh9BK\nXYRmEkXEiBRRUDo46RJaEXEKgrMZHDo6uAiKXXS0/gMFN0EIRZyLCK5qQWg76IlJ9V6jBxLOc86T\n+8G9Af6Lfp/t3LPwO1/kCmmbQx72ORQ8DjnQLA5R5pEl3WYJGOSRpRUWKJdqEHImigYgTFRcDGW3\noY41PGrl6MmML+XNSEhYSIklFKhcdNVV9QmyOQw0iU/oa0d71L1I0DwsJDwcUasKsas7ULtnBkzi\nZyBlpF5FOxLEJoykiTcaoUXtKxd419ujlGKNapAO0BPUF6BuqF1AIR17NaAtbH1YoQoMmJSFQqBO\noq/EjNqag9YhgRZA01zSKxSUJnAM+ZoKVUBMWlA6O8AdMW1LNAroMyKBtoUp1H1qFX1sqOuQnF0D\nh8QVmtk9xXJPSDjASHnWppZwk7cxv3mL88ZDjfiCOtnMDI0SClKwFlrMH8EebCDQ6aU9IdhFLL6v\nSyTQddF92Yx5QSFYcBChEFxCJTv9VYm9elc7FGQ7JvwUYj/MJ3CTXM0O35peAAAAAElFTkSuQmCC\n",
  1681. "text/latex": [
  1682. "$$y \\cos{\\left (x y \\right )}$$"
  1683. ],
  1684. "text/plain": [
  1685. "y⋅cos(x⋅y)"
  1686. ]
  1687. },
  1688. "execution_count": 66,
  1689. "metadata": {},
  1690. "output_type": "execute_result"
  1691. }
  1692. ],
  1693. "source": [
  1694. "diff(f, x)"
  1695. ]
  1696. },
  1697. {
  1698. "cell_type": "markdown",
  1699. "metadata": {},
  1700. "source": [
  1701. "$\\displaystyle \\frac{\\mathrm{d}f(x,y)}{\\mathrm{d}x} = \\frac{f(x+h,y)-f(x,y)}{h}$"
  1702. ]
  1703. },
  1704. {
  1705. "cell_type": "code",
  1706. "execution_count": 67,
  1707. "metadata": {},
  1708. "outputs": [],
  1709. "source": [
  1710. "h = Symbol(\"h\")"
  1711. ]
  1712. },
  1713. {
  1714. "cell_type": "code",
  1715. "execution_count": 68,
  1716. "metadata": {},
  1717. "outputs": [
  1718. {
  1719. "data": {
  1720. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAFMAAAAUBAMAAAADwRznAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHaZIu+JVM27RDKr\nZt2dj8xZAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABlUlEQVQoFXWTPUvDUBSG31jbfDUxFBQEh9BK\nXYRmEkXEiBRRUDo46RJaEXEKgrMZHDo6uAiKXXS0/gMFN0EIRZyLCK5qQWg76IlJ9V6jBxLOc86T\n+8G9Af6Lfp/t3LPwO1/kCmmbQx72ORQ8DjnQLA5R5pEl3WYJGOSRpRUWKJdqEHImigYgTFRcDGW3\noY41PGrl6MmML+XNSEhYSIklFKhcdNVV9QmyOQw0iU/oa0d71L1I0DwsJDwcUasKsas7ULtnBkzi\nZyBlpF5FOxLEJoykiTcaoUXtKxd419ujlGKNapAO0BPUF6BuqF1AIR17NaAtbH1YoQoMmJSFQqBO\noq/EjNqag9YhgRZA01zSKxSUJnAM+ZoKVUBMWlA6O8AdMW1LNAroMyKBtoUp1H1qFX1sqOuQnF0D\nh8QVmtk9xXJPSDjASHnWppZwk7cxv3mL88ZDjfiCOtnMDI0SClKwFlrMH8EebCDQ6aU9IdhFLL6v\nSyTQddF92Yx5QSFYcBChEFxCJTv9VYm9elc7FGQ7JvwUYj/MJ3CTXM0O35peAAAAAElFTkSuQmCC\n",
  1721. "text/latex": [
  1722. "$$y \\cos{\\left (x y \\right )}$$"
  1723. ],
  1724. "text/plain": [
  1725. "y⋅cos(x⋅y)"
  1726. ]
  1727. },
  1728. "execution_count": 68,
  1729. "metadata": {},
  1730. "output_type": "execute_result"
  1731. }
  1732. ],
  1733. "source": [
  1734. "limit((f.subs(x, x+h) - f)/h, h, 0)"
  1735. ]
  1736. },
  1737. {
  1738. "cell_type": "markdown",
  1739. "metadata": {},
  1740. "source": [
  1741. "OK!"
  1742. ]
  1743. },
  1744. {
  1745. "cell_type": "markdown",
  1746. "metadata": {},
  1747. "source": [
  1748. "We can change the direction from which we approach the limiting point using the `dir` keywork argument:"
  1749. ]
  1750. },
  1751. {
  1752. "cell_type": "code",
  1753. "execution_count": 69,
  1754. "metadata": {},
  1755. "outputs": [
  1756. {
  1757. "data": {
  1758. "image/png": "iVBORw0KGgoAAAANSUhEUgAAABMAAAALBAMAAABv+6sJAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEKvvZom7mXYyzVQi\n3UQ6SGZXAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAaklEQVQIHWNgYBBgAAIQwaj82YGBIayogYGB\nbQLHLwapDQxTGRg8GRj2J6xkYGA5wACUYP0LJBgcQEyGfBDRAGYm/wNqd2BwZGDgiDE+wMBxgIGd\ngSGcYb4dgytQolxtAwNjvXEAUDncNgBJUBUwaYAbUgAAAABJRU5ErkJggg==\n",
  1759. "text/latex": [
  1760. "$$\\infty$$"
  1761. ],
  1762. "text/plain": [
  1763. "∞"
  1764. ]
  1765. },
  1766. "execution_count": 69,
  1767. "metadata": {},
  1768. "output_type": "execute_result"
  1769. }
  1770. ],
  1771. "source": [
  1772. "limit(1/x, x, 0, dir=\"+\")"
  1773. ]
  1774. },
  1775. {
  1776. "cell_type": "code",
  1777. "execution_count": 70,
  1778. "metadata": {},
  1779. "outputs": [
  1780. {
  1781. "data": {
  1782. "image/png": "iVBORw0KGgoAAAANSUhEUgAAACMAAAALBAMAAAAHCCkxAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEM3dMqvvZom7mXZU\nIkRJD0iWAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAfklEQVQIHWNggAMBEAtMQIUYw74VMDB0Lt0A\nV8LA6cD9iUHoAIMHQqiEgeH8BBUGBvYLDELGIKDCANTA8RmkC6gdCkC8+SAChCEAxJr2j4GBsQAm\nwlDIwMDdm3aBgfsCXIiLgaGLwT+PoQIuwsC4KvIAA+P6tAaEENThAgwMAMSLGqu/gFQwAAAAAElF\nTkSuQmCC\n",
  1783. "text/latex": [
  1784. "$$-\\infty$$"
  1785. ],
  1786. "text/plain": [
  1787. "-∞"
  1788. ]
  1789. },
  1790. "execution_count": 70,
  1791. "metadata": {},
  1792. "output_type": "execute_result"
  1793. }
  1794. ],
  1795. "source": [
  1796. "limit(1/x, x, 0, dir=\"-\")"
  1797. ]
  1798. },
  1799. {
  1800. "cell_type": "markdown",
  1801. "metadata": {},
  1802. "source": [
  1803. "## Series"
  1804. ]
  1805. },
  1806. {
  1807. "cell_type": "markdown",
  1808. "metadata": {},
  1809. "source": [
  1810. "Series expansion is also one of the most useful features of a CAS. In SymPy we can perform a series expansion of an expression using the `series` function:"
  1811. ]
  1812. },
  1813. {
  1814. "cell_type": "code",
  1815. "execution_count": 71,
  1816. "metadata": {},
  1817. "outputs": [
  1818. {
  1819. "data": {
  1820. "image/png": "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\n",
  1821. "text/latex": [
  1822. "$$1 + x + \\frac{x^{2}}{2} + \\frac{x^{3}}{6} + \\frac{x^{4}}{24} + \\frac{x^{5}}{120} + \\mathcal{O}\\left(x^{6}\\right)$$"
  1823. ],
  1824. "text/plain": [
  1825. " 2 3 4 5 \n",
  1826. " x x x x ⎛ 6⎞\n",
  1827. "1 + x + ── + ── + ── + ─── + O⎝x ⎠\n",
  1828. " 2 6 24 120 "
  1829. ]
  1830. },
  1831. "execution_count": 71,
  1832. "metadata": {},
  1833. "output_type": "execute_result"
  1834. }
  1835. ],
  1836. "source": [
  1837. "series(exp(x), x)"
  1838. ]
  1839. },
  1840. {
  1841. "cell_type": "markdown",
  1842. "metadata": {},
  1843. "source": [
  1844. "By default it expands the expression around $x=0$, but we can expand around any value of $x$ by explicitly include a value in the function call:"
  1845. ]
  1846. },
  1847. {
  1848. "cell_type": "code",
  1849. "execution_count": 72,
  1850. "metadata": {},
  1851. "outputs": [
  1852. {
  1853. "data": {
  1854. "image/png": "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\n",
  1855. "text/latex": [
  1856. "$$e + e \\left(x - 1\\right) + \\frac{e}{2} \\left(x - 1\\right)^{2} + \\frac{e}{6} \\left(x - 1\\right)^{3} + \\frac{e}{24} \\left(x - 1\\right)^{4} + \\frac{e}{120} \\left(x - 1\\right)^{5} + \\mathcal{O}\\left(\\left(x - 1\\right)^{6}; x\\rightarrow1\\right)$$"
  1857. ],
  1858. "text/plain": [
  1859. " 2 3 4 5 \n",
  1860. " ℯ⋅(x - 1) ℯ⋅(x - 1) ℯ⋅(x - 1) ℯ⋅(x - 1) ⎛ 6\n",
  1861. "ℯ + ℯ⋅(x - 1) + ────────── + ────────── + ────────── + ────────── + O⎝(x - 1) \n",
  1862. " 2 6 24 120 \n",
  1863. "\n",
  1864. " \n",
  1865. " ⎞\n",
  1866. "; x → 1⎠\n",
  1867. " "
  1868. ]
  1869. },
  1870. "execution_count": 72,
  1871. "metadata": {},
  1872. "output_type": "execute_result"
  1873. }
  1874. ],
  1875. "source": [
  1876. "series(exp(x), x, 1)"
  1877. ]
  1878. },
  1879. {
  1880. "cell_type": "markdown",
  1881. "metadata": {},
  1882. "source": [
  1883. "And we can explicitly define to which order the series expansion should be carried out:"
  1884. ]
  1885. },
  1886. {
  1887. "cell_type": "code",
  1888. "execution_count": 73,
  1889. "metadata": {},
  1890. "outputs": [
  1891. {
  1892. "data": {
  1893. "image/png": "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\nYII=\n",
  1894. "text/latex": [
  1895. "$$e + e \\left(x - 1\\right) + \\frac{e}{2} \\left(x - 1\\right)^{2} + \\frac{e}{6} \\left(x - 1\\right)^{3} + \\frac{e}{24} \\left(x - 1\\right)^{4} + \\frac{e}{120} \\left(x - 1\\right)^{5} + \\frac{e}{720} \\left(x - 1\\right)^{6} + \\frac{e}{5040} \\left(x - 1\\right)^{7} + \\frac{e}{40320} \\left(x - 1\\right)^{8} + \\frac{e}{362880} \\left(x - 1\\right)^{9} + \\mathcal{O}\\left(\\left(x - 1\\right)^{10}; x\\rightarrow1\\right)$$"
  1896. ],
  1897. "text/plain": [
  1898. " 2 3 4 5 6\n",
  1899. " ℯ⋅(x - 1) ℯ⋅(x - 1) ℯ⋅(x - 1) ℯ⋅(x - 1) ℯ⋅(x - 1) \n",
  1900. "ℯ + ℯ⋅(x - 1) + ────────── + ────────── + ────────── + ────────── + ──────────\n",
  1901. " 2 6 24 120 720 \n",
  1902. "\n",
  1903. " 7 8 9 \n",
  1904. " ℯ⋅(x - 1) ℯ⋅(x - 1) ℯ⋅(x - 1) ⎛ 10 ⎞\n",
  1905. " + ────────── + ────────── + ────────── + O⎝(x - 1) ; x → 1⎠\n",
  1906. " 5040 40320 362880 "
  1907. ]
  1908. },
  1909. "execution_count": 73,
  1910. "metadata": {},
  1911. "output_type": "execute_result"
  1912. }
  1913. ],
  1914. "source": [
  1915. "series(exp(x), x, 1, 10)"
  1916. ]
  1917. },
  1918. {
  1919. "cell_type": "markdown",
  1920. "metadata": {},
  1921. "source": [
  1922. "The series expansion includes the order of the approximation, which is very useful for keeping track of the order of validity when we do calculations with series expansions of different order:"
  1923. ]
  1924. },
  1925. {
  1926. "cell_type": "code",
  1927. "execution_count": 74,
  1928. "metadata": {},
  1929. "outputs": [
  1930. {
  1931. "data": {
  1932. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMQAAAAwBAMAAAC8i8hXAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVO8Qq5l2zWbdMiJE\nibtHdKBDAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADm0lEQVRYCcVW30sUURQ+2+zu7M7O6IbYg0JZ\n1kMQNJT4EpKUWOaDC7YRQTZk+hYJBUsQOQ9FhVBQpPQDWnrpLbc3g9B9yB56yIWwiJCG/oBU3BL7\nwXbu3Lkzs7v3JosDHfDe73zfveebmftjBRCFNtAvksASKjUJn+GIaHxoRaTUxj+CyZxgRkdAFo9h\nJi+wGAzIAmCbzrdQGgKzGOc7gCYFZaGlBBZjgVlcFzhIRlAWakHNck1C6fR3k6vUSj7bvFWw3JDY\n8FpIw71vPsDeUqnqqagCt4vJKqk2ogNuGRPcKWKFO1xMvocvejNXFivc4WJSh6sCUaxwJijHpkwO\n7VA/hJJYqZqilopVnEsoP11YAcSKN1DJU6w24Y40PN6PGqJLMOgnXCxW3CEAzx2s5hG89gkeVJfr\nlhKml3tIrHhjAC46iXpiSAfN9EsMS92DQzdZUtaLFYDZ/Z9W82R0xCAtRiIfswDu2TiIJpp69/bM\nb1JpxrsTlF8AQ0iFWoOw6FZbIbpKKs2zcmFdQs8ZgLbj6184W9isqp4pkc59eQD7xtnOBm3Kkbss\nbgJEg7CY0wew8ih+I8Utp+nkFydiBWRxH5JosYh/sRZsaCycxj7aEoyFSs/qVywZGcGm/dyr8wb2\nGCq+VRAfKkK/zi4sWWcBSIXYeJxYYZD7IAiLuiW7Gtm0cicArsJKKEcoPB1IUgvp8gOMiSyS9SU3\nyMyPmczdTOYSIrEi229RRx48nsK3ANlCaEdimVkwhtuzrVktOkrYXgv7v0fyFvgwBmlJeG9Bc0G7\nroVGrm3pCplOLSazBJMgJzyItZBKJsB0npQMW3hh6BcgqpMsuB0Fd4rNs712SXIO5pKLMGVn9jmJ\nHFo96mTCbt0PBUrP2ik6nZyDtuH2k6ZTjZxubiTS37Ke4Fo4tIK7hoarMAJgjwcJko3y3M3aQCOb\n3IkDDDh03GKEqzACgNwavjjorImPovAwwI4qEsChz1ocjVFPGaD9tfLUy3YD9GW9lCFKJ25YjOD0\n4WQZ+bAs8yV4LfMsKK3Jlm9oJZRG/Eys4M8q8BP+R0R6TLYqxpaljf5s2p9UYPVPBUFTpCVDtuAf\nEcr7xH4froTxzkrGzpHWQLZsvNEmzS+AdBPIFl+sjY2muOORlgogW1yxRrIREjnOFKRfdHX17TQ4\nWo0UXhFRjoVDb7JqLMcb/nJhvofDO3R9EBajpdIax4LS2mLR5Ij/kfoLzgzy5MB/1+MAAAAASUVO\nRK5CYII=\n",
  1933. "text/latex": [
  1934. "$$1 - \\frac{x^{2}}{2} + \\frac{x^{4}}{24} + \\mathcal{O}\\left(x^{5}\\right)$$"
  1935. ],
  1936. "text/plain": [
  1937. " 2 4 \n",
  1938. " x x ⎛ 5⎞\n",
  1939. "1 - ── + ── + O⎝x ⎠\n",
  1940. " 2 24 "
  1941. ]
  1942. },
  1943. "execution_count": 74,
  1944. "metadata": {},
  1945. "output_type": "execute_result"
  1946. }
  1947. ],
  1948. "source": [
  1949. "s1 = cos(x).series(x, 0, 5)\n",
  1950. "s1"
  1951. ]
  1952. },
  1953. {
  1954. "cell_type": "code",
  1955. "execution_count": 75,
  1956. "metadata": {},
  1957. "outputs": [
  1958. {
  1959. "data": {
  1960. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAF8AAAAcBAMAAAD1rn4EAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACCUlEQVQ4EY1Sv2tTURT+Xsx7SV5+9FKh0MnX\nCm61obhYB99SHBv8A0wUwbFO6qJDUcShtCiCwcEIuuhglg7i0Afi4CBJ7SDSwS4OTiYiCCLEc867\n971cSfFdOOd833fOx7l5N0DG4+3vZpzUY5dxOpvhnR67jV6Yy2CpdPXQHaw23Pr/HSWVzLxSuJKQ\nf4C7O7P5ULSPaWcdKKb2VGe04G5/GDUI5IdJw+sDOYpJ50hwQWFxi1o8pc9NqvmBYVL9QNM95ysw\nxc1aR0twW24E3DVUqjG4w2oXKPFtespMvH/xkvC+oZah2PeJl3nDrWTg+2hE+CTF9PGVE4HoZkMz\nYlo+oPSZwpk/df4SVT5NBadVWC9uCTOGL3KPWp/ENxQzuBHckwG6YgRPeUM/FG4MO8J6DSoPKC5i\nTT0TCfTacFDqMvPa7Uff2u06wSeKhdecNigUHjOUs9qhMhUIBsyGsxEJlZ+s8gbgh2ROtEHuFQvG\nsMZrZrkVGyp/4j7lXghfLSInd0g2HPtFb7otQ2coP80NMKct9JWanR2ci6nZUBgtr+yFotF3d3+X\nB/mr2kDvcnR++pOmxoC3mxtRPMHffWlu4bqeP+SlTZdqTX5JKtxPISEntCiTasuSnPTfbukpqRyk\nmFChbtFJZNkSi5FFJ5FZS7xmsYnE74/J+e4YOQw+H2tU1RjJCv8Cl4Bl3Hr5MZEAAAAASUVORK5C\nYII=\n",
  1961. "text/latex": [
  1962. "$$x + \\mathcal{O}\\left(x^{2}\\right)$$"
  1963. ],
  1964. "text/plain": [
  1965. " ⎛ 2⎞\n",
  1966. "x + O⎝x ⎠"
  1967. ]
  1968. },
  1969. "execution_count": 75,
  1970. "metadata": {},
  1971. "output_type": "execute_result"
  1972. }
  1973. ],
  1974. "source": [
  1975. "s2 = sin(x).series(x, 0, 2)\n",
  1976. "s2"
  1977. ]
  1978. },
  1979. {
  1980. "cell_type": "code",
  1981. "execution_count": 76,
  1982. "metadata": {},
  1983. "outputs": [
  1984. {
  1985. "data": {
  1986. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAF8AAAAcBAMAAAD1rn4EAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACCUlEQVQ4EY1Sv2tTURT+Xsx7SV5+9FKh0MnX\nCm61obhYB99SHBv8A0wUwbFO6qJDUcShtCiCwcEIuuhglg7i0Afi4CBJ7SDSwS4OTiYiCCLEc867\n971cSfFdOOd833fOx7l5N0DG4+3vZpzUY5dxOpvhnR67jV6Yy2CpdPXQHaw23Pr/HSWVzLxSuJKQ\nf4C7O7P5ULSPaWcdKKb2VGe04G5/GDUI5IdJw+sDOYpJ50hwQWFxi1o8pc9NqvmBYVL9QNM95ysw\nxc1aR0twW24E3DVUqjG4w2oXKPFtespMvH/xkvC+oZah2PeJl3nDrWTg+2hE+CTF9PGVE4HoZkMz\nYlo+oPSZwpk/df4SVT5NBadVWC9uCTOGL3KPWp/ENxQzuBHckwG6YgRPeUM/FG4MO8J6DSoPKC5i\nTT0TCfTacFDqMvPa7Uff2u06wSeKhdecNigUHjOUs9qhMhUIBsyGsxEJlZ+s8gbgh2ROtEHuFQvG\nsMZrZrkVGyp/4j7lXghfLSInd0g2HPtFb7otQ2coP80NMKct9JWanR2ci6nZUBgtr+yFotF3d3+X\nB/mr2kDvcnR++pOmxoC3mxtRPMHffWlu4bqeP+SlTZdqTX5JKtxPISEntCiTasuSnPTfbukpqRyk\nmFChbtFJZNkSi5FFJ5FZS7xmsYnE74/J+e4YOQw+H2tU1RjJCv8Cl4Bl3Hr5MZEAAAAASUVORK5C\nYII=\n",
  1987. "text/latex": [
  1988. "$$x + \\mathcal{O}\\left(x^{2}\\right)$$"
  1989. ],
  1990. "text/plain": [
  1991. " ⎛ 2⎞\n",
  1992. "x + O⎝x ⎠"
  1993. ]
  1994. },
  1995. "execution_count": 76,
  1996. "metadata": {},
  1997. "output_type": "execute_result"
  1998. }
  1999. ],
  2000. "source": [
  2001. "expand(s1 * s2)"
  2002. ]
  2003. },
  2004. {
  2005. "cell_type": "markdown",
  2006. "metadata": {},
  2007. "source": [
  2008. "If we want to get rid of the order information we can use the `removeO` method:"
  2009. ]
  2010. },
  2011. {
  2012. "cell_type": "code",
  2013. "execution_count": 77,
  2014. "metadata": {},
  2015. "outputs": [
  2016. {
  2017. "data": {
  2018. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAG8AAAAwBAMAAADtMzlxAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACRUlEQVRIDc2Vv2vUYBjHv8klubt4XsMVOqdV\nCg6HtS3oIJhBORfx8B/o6XCLSG/TSQ8VsTjo2MOhFR0VuiuYyU0aFNqhFBwVRe78hagYn8vv5p6n\noA76Dnmf5/t9PnnfhDxvgGBUjjY6YZS/GvVDeSmb6/7HbJqJN7GVyUZC/aE1ooXCBq4ITiDrTdnd\nfcUXdWlJ5Z18T0BrFtcE/4AtGJFc+ST5u261YCmfJXB9VXJIrzragLXpCU93WCcUDcvwePs6Lguv\nrbbvxLSN9sYIp0zNnzmHZ9PzI04gKK3i1dIdzpvAJXuJM0KNNjkwHc4/i0XrAWeEmoLyGu9auMsb\nsTpmx1F+/pAXdubr7s48ySo/kpAJTOsgVPaF31P7mGSISFpYfYoGZ+vf9vS1DueE2vhUbZO1ldnJ\n+kWZ+78d0/7D/f07MOyn39h2tFW5n6R7RWDUT346CFCWb9JYcikcS40+pUavt/ym15uhGrGfqIwd\nyVuV+4nlkIBiP/FcDMr9JHAxKPaTxMVg3E+ntp4MS59z9dr2YzfVk2cMJGUGi02KbqUFaTQOI/Nn\nUJzUAQoWqq8A9W1WjGP6i7+P4/xc7aJAh1KDPQpfA8fcPBHl5UEAtlhwxZJB4ksDFB0WJPO2JaxI\n8kILNenU1r/IHK4BLQks0Vctjb0eTFcCtyWK9DowAQFUPRk0PRy/Pzf3c5YreQTN4fShRt/afprY\nD6DiQXXI5IZ2o/2yS8Z3zjzZvnCE04damU6ILnDeP8xUrPj+V0b+K+kXPYuKl+Zu0xMAAAAASUVO\nRK5CYII=\n",
  2019. "text/latex": [
  2020. "$$\\frac{x^{5}}{24} - \\frac{x^{3}}{2} + x$$"
  2021. ],
  2022. "text/plain": [
  2023. " 5 3 \n",
  2024. "x x \n",
  2025. "── - ── + x\n",
  2026. "24 2 "
  2027. ]
  2028. },
  2029. "execution_count": 77,
  2030. "metadata": {},
  2031. "output_type": "execute_result"
  2032. }
  2033. ],
  2034. "source": [
  2035. "expand(s1.removeO() * s2.removeO())"
  2036. ]
  2037. },
  2038. {
  2039. "cell_type": "markdown",
  2040. "metadata": {},
  2041. "source": [
  2042. "But note that this is not the correct expansion of $\\cos(x)\\sin(x)$ to $5$th order:"
  2043. ]
  2044. },
  2045. {
  2046. "cell_type": "code",
  2047. "execution_count": 78,
  2048. "metadata": {},
  2049. "outputs": [
  2050. {
  2051. "data": {
  2052. "image/png": "iVBORw0KGgoAAAANSUhEUgAAANsAAAAwBAMAAABqLhIyAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAEHarIkSJZt3NVLsy\nme8Q6PJIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAEdklEQVRYCb1XXWgcVRQ+s5n9/xsSKPSl2aRF\nn2K3IqgVdR6M+lKzCIIodbcpRF9i9skKggSFah5KgiI2+NAI+uCDNC8FtUJHqo8lGxcqWkIjtGB9\nkF1pqwZlPHdmzp17Z++d7G7ECzP3nO875zs7s3PvmQHYZcy2rZiIy9+eimEHp4rN4npMVt2txrCD\nU8VGuhOT9cI3MeRQVOzVPTeUZFzSASeGPT65GcP2Sx279jWFJt4ji8/m1kUncKbhDQ4PbRhVWKhR\ndu/NHIPUHWJhw+bmsMaIBaVtSi7skEXzEYDfAvsIjPPfRfTAc2kRRv72sw445h/R/F8AHnd88AbM\nWFF6YD/b5eUydvrnaP45i5c7AfNRdig/04XRg9P3VAqzJ22FwLJlTD7w7Cyk5hsKdnCo3jAa6bcy\nK+rM5F3YB69XltTsEOjbkLJS3ZytTs1U4QQsWJ+o2cHRYgsMyK7rErcALPhIx6rwuXtVKGFTzChX\nyI3MiRYDfo+gcW629kwMnWvBEwAbjibkczBtKARLRRPjw98F7EEYhYQ28grAoZx1GBLKRVVoQcL+\nONGBCa1AQBTo7/gVgWRVE26enmsv1tcuwVPKgKfn5h9K7uQ7ZlNJC2CWfu4O28pfFhjRzLquuzg2\nOfqDWu+c6/5p3D8xpWvkyc19yx94et8HquY/8DxAhoqLtfZuTyUvXHFrqGN2AzFjB8o18J+wvevL\nCiOVlyw4vIJgqkXMHSg3weyQ28+cq8RGcbpt3MRFxKRLa5TxIbs6eIfcfmaupw4mOtllHRJ3eVxJ\nFoW+CJ+heY3cfmbS08QSnWnlMCLPru5NHpq+ik8m3IeHt/FzPMYgPU0I0XWHBeS38fQjHn7nQANH\n3YK4jd8PojPpkR+Zib7u3cFSC+mLeIidA7epuI1fFiQ9GeUe0Zc8ZKOG0/t4iJ1jpsY3fuPsuziW\nHBaMq1waCKVWV8/eWl2tolmWONftyDT2ehxfstMZPMTOMbOGgHbjR04c9PNFTLCJ9l5jCrcZw65O\n7Bx4dTEbvxccnkgvRCSL6AV2B/YzYb+c0Dk2bNBv/JIYOqQXxQOf6HF8czMveOAjeBY7Bz6Z+o0/\nKkt6UTzwiU67R6fbtgfiOpM6B65D/cYflSW9KB74nL68fMbxMbbOxM4Ru6s8OfeVpMz1CM1OFH4i\nW3mvS94/GIb0fm6EnNmC883Qxf3BFrwcvuyWXLcRQhLtw0WBRsSgfhQmhVYCe9Ri6MrWWBtTsycP\nyWjUK2xLSJo9s7qRvAnjKzoSElhuRMsScZQMb844ktvjyDdTovsrt1/KeU3yehzjdA/EAa/cqSmH\nA0oj1xJgc11wek3zlc1ekBBWLm+Z4WclEfL8qeAWLcFRma/WVKiHsXI4vvDO/9Gp1PNpx4WDctdt\njuzRwPfyfM93Mtdk5R4G4ROeM0Ma5e5u5W4B+K17yApSWmkdMl7XklBy2NXhY7dE/p7ndBPOV7Qq\nrNwxSN/QBgxMHN/yu5YqsfjYXw+CefXR3Z5tVe7/iP0Lu0QQYvWiWkQAAAAASUVORK5CYII=\n",
  2053. "text/latex": [
  2054. "$$x - \\frac{2 x^{3}}{3} + \\frac{2 x^{5}}{15} + \\mathcal{O}\\left(x^{6}\\right)$$"
  2055. ],
  2056. "text/plain": [
  2057. " 3 5 \n",
  2058. " 2⋅x 2⋅x ⎛ 6⎞\n",
  2059. "x - ──── + ──── + O⎝x ⎠\n",
  2060. " 3 15 "
  2061. ]
  2062. },
  2063. "execution_count": 78,
  2064. "metadata": {},
  2065. "output_type": "execute_result"
  2066. }
  2067. ],
  2068. "source": [
  2069. "(cos(x)*sin(x)).series(x, 0, 6)"
  2070. ]
  2071. },
  2072. {
  2073. "cell_type": "markdown",
  2074. "metadata": {},
  2075. "source": [
  2076. "## Linear algebra"
  2077. ]
  2078. },
  2079. {
  2080. "cell_type": "markdown",
  2081. "metadata": {},
  2082. "source": [
  2083. "### Matrices"
  2084. ]
  2085. },
  2086. {
  2087. "cell_type": "markdown",
  2088. "metadata": {},
  2089. "source": [
  2090. "Matrices are defined using the `Matrix` class:"
  2091. ]
  2092. },
  2093. {
  2094. "cell_type": "code",
  2095. "execution_count": 79,
  2096. "metadata": {},
  2097. "outputs": [],
  2098. "source": [
  2099. "m11, m12, m21, m22 = symbols(\"m11, m12, m21, m22\")\n",
  2100. "b1, b2 = symbols(\"b1, b2\")"
  2101. ]
  2102. },
  2103. {
  2104. "cell_type": "code",
  2105. "execution_count": 80,
  2106. "metadata": {},
  2107. "outputs": [
  2108. {
  2109. "data": {
  2110. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAGgAAAAyBAMAAABCJ4MDAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhBEqyJ2u93N\nZplQnf8bAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABo0lEQVRIDe2WsUrDUBSGf5s0VmNF1MXJbuJS\nKT5AFeuewb1FfABXnQoubnYSfAAFFyk+QcAH0c2hFqpg7Rbvudfc60lPh9ZJyIEL4f73a8pP8hFs\nJh+YanaSd6w1DqdicNSoYX06hE7v55ApTRcRbF3enAXbd1KPUqahwuI9mteoAX5slsN5Vn2IVKSh\ngzDGVQXP8F+7ejkGLCu059WvGihqtlCPcA54XbMcxbKw7Y9SCHWgB2xIEMvCVmlooTfgEcGoKNwJ\nLIP3aaFVFIdYji8kiGUIOymk7lkeYKlSESCeoaoYU0TQxcIpvP6eAPGs/GIhujAz3l6amJKOcaI2\nMq+Gt6JCtaRR+/7T7u0YVOp9dWhJDO3PJclgDJIOC3uZvyecELZy6KeUvIg/FyEJMX3kpExX7oRI\nMiRhuuGZJEuSIQnz11hZUibKUsuQXnk3VpaUibLUMuSQlSVlsixJhhnIylKLUpIlyTADWVlqUUqy\nJBlyyMlSi1KSJcmQQ06WlImyJBlyyPVImSRLLcMJsqRMlCXJcJIsKfsvspzp022Wj8RvbKDHm//7\nt/sAAAAASUVORK5CYII=\n",
  2111. "text/latex": [
  2112. "$$\\left[\\begin{matrix}m_{11} & m_{12}\\\\m_{21} & m_{22}\\end{matrix}\\right]$$"
  2113. ],
  2114. "text/plain": [
  2115. "⎡m₁₁ m₁₂⎤\n",
  2116. "⎢ ⎥\n",
  2117. "⎣m₂₁ m₂₂⎦"
  2118. ]
  2119. },
  2120. "execution_count": 80,
  2121. "metadata": {},
  2122. "output_type": "execute_result"
  2123. }
  2124. ],
  2125. "source": [
  2126. "A = Matrix([[m11, m12],[m21, m22]])\n",
  2127. "A"
  2128. ]
  2129. },
  2130. {
  2131. "cell_type": "code",
  2132. "execution_count": 81,
  2133. "metadata": {},
  2134. "outputs": [
  2135. {
  2136. "data": {
  2137. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAB4AAAAyBAMAAAC5cHbcAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhC73c2rRHaZ\nImaqCQggAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA9klEQVQoFWOQ//+JAQb0/39kEHZxhXEZQlwM\nGUTgPBDDEcRnTSyACYL5DBwTUPn8Bqj89QGofHUYF2IeQ+fuw1ARiPk/AuIvMHiAhMB85q8M/Ao+\n0+F8ngaGeAUGczif4wDDegMkPv8DhvMByPwFrHIMSHzOB2wHkPmsp88BzUKYB+Rg4RuCBCH+BbHu\n1M9G4YPEkOXpyKdLfDAdOwrzHzg+dBlmwPjg+Khl8L8A9T84PqoY7i+A8iHxwWAPTAXg8OMHxwdD\nNUw/JD6YDsD4kPh4A+QihTeXApcDMt/D2AxmHkghg/z//0ASET9gQSL46OkdLT8AAPfcTiuXVltr\nAAAAAElFTkSuQmCC\n",
  2138. "text/latex": [
  2139. "$$\\left[\\begin{matrix}b_{1}\\\\b_{2}\\end{matrix}\\right]$$"
  2140. ],
  2141. "text/plain": [
  2142. "⎡b₁⎤\n",
  2143. "⎢ ⎥\n",
  2144. "⎣b₂⎦"
  2145. ]
  2146. },
  2147. "execution_count": 81,
  2148. "metadata": {},
  2149. "output_type": "execute_result"
  2150. }
  2151. ],
  2152. "source": [
  2153. "b = Matrix([[b1], [b2]])\n",
  2154. "b"
  2155. ]
  2156. },
  2157. {
  2158. "cell_type": "markdown",
  2159. "metadata": {},
  2160. "source": [
  2161. "With `Matrix` class instances we can do the usual matrix algebra operations:"
  2162. ]
  2163. },
  2164. {
  2165. "cell_type": "code",
  2166. "execution_count": 82,
  2167. "metadata": {},
  2168. "outputs": [
  2169. {
  2170. "data": {
  2171. "image/png": "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\nN3P+AQTjoqnEhDFNAAAAAElFTkSuQmCC\n",
  2172. "text/latex": [
  2173. "$$\\left[\\begin{matrix}m_{11}^{2} + m_{12} m_{21} & m_{11} m_{12} + m_{12} m_{22}\\\\m_{11} m_{21} + m_{21} m_{22} & m_{12} m_{21} + m_{22}^{2}\\end{matrix}\\right]$$"
  2174. ],
  2175. "text/plain": [
  2176. "⎡ 2 ⎤\n",
  2177. "⎢ m₁₁ + m₁₂⋅m₂₁ m₁₁⋅m₁₂ + m₁₂⋅m₂₂⎥\n",
  2178. "⎢ ⎥\n",
  2179. "⎢ 2 ⎥\n",
  2180. "⎣m₁₁⋅m₂₁ + m₂₁⋅m₂₂ m₁₂⋅m₂₁ + m₂₂ ⎦"
  2181. ]
  2182. },
  2183. "execution_count": 82,
  2184. "metadata": {},
  2185. "output_type": "execute_result"
  2186. }
  2187. ],
  2188. "source": [
  2189. "A**2"
  2190. ]
  2191. },
  2192. {
  2193. "cell_type": "code",
  2194. "execution_count": 83,
  2195. "metadata": {},
  2196. "outputs": [
  2197. {
  2198. "data": {
  2199. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAJEAAAAyBAMAAACufiRQAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMA74lUMhC73c2rRHaZ\nImaqCQggAAAACXBIWXMAAA7EAAAOxAGVKw4bAAACnklEQVRIDe2Xv2sTYRjHvya5Jj3TJqjgIOht\nKnaoOHRwqNAKDg7n4qQEBxftEP0HPBAhBYdOdQhIKO7tbDsEHFoRasBVMf+BJaWggXg+z/O+6f16\ncx6mk+0LB+/7vN9+evfcm3wILvk9jD1yvl/F2cXbY4NgLS5UcW58DhMKQrIe1TPh7p8fHVMklFZG\nR8I7y+FFdK5JldloOb66qQv78Y1grUnrblAyzTTJPjBtqpomXR6dkB1NyqW0U5OWNz/IX9hXv202\n7WtP4mBNKjW3VBsMOUWyfrq1Du4AuYmnqL3HdXqpnroUU5Nqr6wBZpbcWI4r+hTkD1Bx7r4BFooe\nvjv4gcLHulwKBE2ad9HLdSa9aE4qmlT2UHMwB7i1Fii+CuSpJXzRuNJoPGs0+ADswOoVO4VBNCcV\nTSq1sT7LJMwD28CFCInK+p5ew94vtqb60ZyqqD5VuvjsCmkHeA57YIXvKSD9RpnOAfWC7i6Uk4om\ntayLENIZWH2UvS9mUh/3ukBxA4jkpKJIk92JtpDoxqf3UHIcM+ktlgDMANEcV4af4E+7NKc+2XWc\nXkF+95aZ9GCrC0y34zmuaBJNaHDHD0fo3VFNd1x21/DuMKXejFTU06kdOo/ByFcpRZcaD4cT+t8v\nbzwOVpxRlRDp64tmkJja/rXBV1AZzk75/t5wTg2jjKqESMH2P81OSNnadhz6dGJOPgv/jTnZhgWP\nnkiG/qYzmJNzqeZkG7I9o6SkOTmXbk6xYQZzci7dnGJDTaL70k+XNCfn/mJOtmGCZDCnWJNdqr4L\nKklzsg0TJIM5xZrsUkUymJNtmCAZzCnWTDUn2zBBMpiTc+nmZBsmSHImoubkVao5xYYZzMm5dHOy\nDbOYk3PHxJxH96vsyH4p/gHeHTH4ApAfnQAAAABJRU5ErkJggg==\n",
  2200. "text/latex": [
  2201. "$$\\left[\\begin{matrix}b_{1} m_{11} + b_{2} m_{12}\\\\b_{1} m_{21} + b_{2} m_{22}\\end{matrix}\\right]$$"
  2202. ],
  2203. "text/plain": [
  2204. "⎡b₁⋅m₁₁ + b₂⋅m₁₂⎤\n",
  2205. "⎢ ⎥\n",
  2206. "⎣b₁⋅m₂₁ + b₂⋅m₂₂⎦"
  2207. ]
  2208. },
  2209. "execution_count": 83,
  2210. "metadata": {},
  2211. "output_type": "execute_result"
  2212. }
  2213. ],
  2214. "source": [
  2215. "A * b"
  2216. ]
  2217. },
  2218. {
  2219. "cell_type": "markdown",
  2220. "metadata": {},
  2221. "source": [
  2222. "And calculate determinants and inverses, and the like:"
  2223. ]
  2224. },
  2225. {
  2226. "cell_type": "code",
  2227. "execution_count": 84,
  2228. "metadata": {},
  2229. "outputs": [
  2230. {
  2231. "data": {
  2232. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAKYAAAAMBAMAAAAaIdvMAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMARImrIna7EFTvMt3N\nZpneUCSWAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABq0lEQVQoFWWTsWvUYBjGf0mvvVxij3CjDgbU\ntTh4Xexwg4KTvVJ01kHdSv4AoZ2kUugVwdmOHYqeopOCoVPpn+BghUIdesKdVhyv7/udfm9iH3jg\ne35JHt43IQRXbt1rB9ce4nWe+Et6aN24vdxt3U8NniPhzCNWl3gOcTGxkbmVHHVF2eNu/XcabcEu\nhMffwROXhO4kBYsZh8RHfWcjYWeqUFcq47VP1H4yO+T1TbjKAkY0Kc1XU3o58xD1J/Yk6cSnau18\n+lF1APX6iOgPUw9gA97zpmNEk1J6cAIvrdOTJK2N1HJTSdGQZp9G13W+ZTHFE5e0cwDvCE7rfk4j\nOpBzqZJmQZJxuZO7iXRHI5q08wWyTbO4Y52ekMg06rIaGfK6BrW1SecHMIIk6ZTV5H1fyDLfaYQ5\nKVOXJcsewl7onib8hq7/l2iSzqDP9HWiH9u+08is3KKu6BIsw+aXSedXuWZEk+7u9e+7e0CLi85G\nKiedKAu2jblU7dySDyL2ivfXn6g9+O8g/8nu+rPcqEtCvWonv7pqD2iMx0O1kcrp7uc2r8bjEtMk\n9AyNtKqM6qgiUQAAAABJRU5ErkJggg==\n",
  2233. "text/latex": [
  2234. "$$m_{11} m_{22} - m_{12} m_{21}$$"
  2235. ],
  2236. "text/plain": [
  2237. "m₁₁⋅m₂₂ - m₁₂⋅m₂₁"
  2238. ]
  2239. },
  2240. "execution_count": 84,
  2241. "metadata": {},
  2242. "output_type": "execute_result"
  2243. }
  2244. ],
  2245. "source": [
  2246. "A.det()"
  2247. ]
  2248. },
  2249. {
  2250. "cell_type": "code",
  2251. "execution_count": 85,
  2252. "metadata": {},
  2253. "outputs": [
  2254. {
  2255. "data": {
  2256. "image/png": "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\n",
  2257. "text/latex": [
  2258. "$$\\left[\\begin{matrix}\\frac{1}{m_{11}} + \\frac{m_{12} m_{21}}{m_{11}^{2} \\left(m_{22} - \\frac{m_{12} m_{21}}{m_{11}}\\right)} & - \\frac{m_{12}}{m_{11} \\left(m_{22} - \\frac{m_{12} m_{21}}{m_{11}}\\right)}\\\\- \\frac{m_{21}}{m_{11} \\left(m_{22} - \\frac{m_{12} m_{21}}{m_{11}}\\right)} & \\frac{1}{m_{22} - \\frac{m_{12} m_{21}}{m_{11}}}\\end{matrix}\\right]$$"
  2259. ],
  2260. "text/plain": [
  2261. "⎡ 1 m₁₂⋅m₂₁ -m₁₂ ⎤\n",
  2262. "⎢─── + ──────────────────── ───────────────────⎥\n",
  2263. "⎢m₁₁ 2 ⎛ m₁₂⋅m₂₁⎞ ⎛ m₁₂⋅m₂₁⎞⎥\n",
  2264. "⎢ m₁₁ ⋅⎜m₂₂ - ───────⎟ m₁₁⋅⎜m₂₂ - ───────⎟⎥\n",
  2265. "⎢ ⎝ m₁₁ ⎠ ⎝ m₁₁ ⎠⎥\n",
  2266. "⎢ ⎥\n",
  2267. "⎢ -m₂₁ 1 ⎥\n",
  2268. "⎢ ─────────────────── ───────────── ⎥\n",
  2269. "⎢ ⎛ m₁₂⋅m₂₁⎞ m₁₂⋅m₂₁ ⎥\n",
  2270. "⎢ m₁₁⋅⎜m₂₂ - ───────⎟ m₂₂ - ─────── ⎥\n",
  2271. "⎣ ⎝ m₁₁ ⎠ m₁₁ ⎦"
  2272. ]
  2273. },
  2274. "execution_count": 85,
  2275. "metadata": {},
  2276. "output_type": "execute_result"
  2277. }
  2278. ],
  2279. "source": [
  2280. "A.inv()"
  2281. ]
  2282. },
  2283. {
  2284. "cell_type": "markdown",
  2285. "metadata": {},
  2286. "source": [
  2287. "## Solving equations"
  2288. ]
  2289. },
  2290. {
  2291. "cell_type": "markdown",
  2292. "metadata": {},
  2293. "source": [
  2294. "For solving equations and systems of equations we can use the `solve` function:"
  2295. ]
  2296. },
  2297. {
  2298. "cell_type": "code",
  2299. "execution_count": 86,
  2300. "metadata": {},
  2301. "outputs": [
  2302. {
  2303. "data": {
  2304. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAEoAAAAUBAMAAADYerbFAAAALVBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAOrOgAAAADnRSTlMAdt3NMolEEFTvq5lmIsfa\npuIAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAB3SURBVCgVYxAyYSAEDqsxhBFSA5QPQ1bFMR2Ljs4C\nVFVVu55jqGJfvQ5NFQMjpioGBrlBrqpYCQSAgTuYXV9ngBb+6KHKvfLxGgYmdVRVu+ZZHUCNbbB8\nL6oqMA8lTYBFAohRxS5AjCoeLIqA7hJSwSaOIiakBgD0ZimSClhTrgAAAABJRU5ErkJggg==\n",
  2305. "text/latex": [
  2306. "$$\\left [ -1, \\quad 1\\right ]$$"
  2307. ],
  2308. "text/plain": [
  2309. "[-1, 1]"
  2310. ]
  2311. },
  2312. "execution_count": 86,
  2313. "metadata": {},
  2314. "output_type": "execute_result"
  2315. }
  2316. ],
  2317. "source": [
  2318. "solve(x**2 - 1, x)"
  2319. ]
  2320. },
  2321. {
  2322. "cell_type": "code",
  2323. "execution_count": 87,
  2324. "metadata": {},
  2325. "outputs": [
  2326. {
  2327. "data": {
  2328. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjEAAABLCAMAAAC2lyZIAAAAPFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAo1xBWAAAAE3RSTlMA\nMquZdlQQQOkwRM3du2aJ7yJs4cVMPgAAAAlwSFlzAAAOxAAADsQBlSsOGwAACPhJREFUeAHtnOna\noygQhYkmTk8WTcb7v9fBpUpFwTosytNJfjSYTlEvh/MpIom6tP2rUPJXM4Sk+FcOYXwyBczQppHI\n4zCiXnD2iLlJjktbXvXrBrA8gc8e9dEcmajvZ7LFy113NilapS7thXomLR/SDx74uRyZqPtnskXO\nXXs55lKSFPmUOTKROmeyxc7t55i6Ji3yKXNkInXOZIud288xJXwZI+3SlTkyUW/PZIud288xkS+N\nJGxQmSMTdehMtti5/RwTb/pNmoaXOTJRr85ki53byzEfZOmGVEtc5shEXT6TLXpuL8fcrqRFPmWO\nTKTOmWzRc3s5prmTFvmUOTKROmeyRc/t5ZhXRVrEKD/X2fq+d4ORmWIgcV/C2D5BLIG512Pj5Zi4\nk6kiyhkrRyayTBhbmD7Rc/s4pnqRFDHKT5TbvxyZSJ0wtjB94uf2ccy9IS1ilCXyBNSaMEcmgg1j\nC9Mnfm4fx0BPuUk2W1n1p83HtVKXEG3iMwUjcY+D2Hp9/FnCcysjuY9jig+LYVZub3RSPNjk3c3u\nQk5ddiYcSfVMwUiszcR2PEt4bmUI4eMY22SqKsqiBR0znGLUoymudh+y9vaKhckHSY2nvVAkhh3Z\nTmEJz22OjY9jHFPVK+qYZngKHryIbGeCkdTAFIzEjpnYjmcJz60MITwc49pwgUoynmJMKhZbWnEw\noUjjKSYYidFnbIezRMhtCuHhGNeGC1SS67jRpqjra8hjeQcTiqRGplAkdsyM7XCWCLmVIYSHY1wj\nK5TkTot2NP3oViY/Lb3LYosrDiYhkjKZQpGYfcZ2OEuE3MoQwsMx06WRReGKTJLre2zjunik+SL/\ncHPiioNJhqS2mQKQmH3GdjhLrNxqEsLDMa5xFUnyqa7j6WTZVNl63y4tG+LB6ioiJGVhCkBiiBnb\n4SyxcqtJCNwxzg0XMklU1fYPGmpagSn6v4XG+7LkYhIimUyhSGyYOdvRLBFyK1MI3DHODRdSSQbL\nPmnxZrhKleitOY+Ki0mKNP4ZEVMo0ibb0SxzXTxzK1MI3DHODRdSrE+rv7/Cpxg1fJnlObvqsuCi\niotJiqRn3nOmUCTmnrMdzRIh92pscMc4N1yIJekWh+nPWd8mdeNTv72nMS4mMZJaMIUisWPmbEez\nRMi9GhvcMbPJFKsyVsri3T4K0XeZLm1zG/6M+9hP2RQlXaPMZveP7UwAkv5u6JwpEImhJ7bjWWLk\n1pZZjM2eYwpzL0zYhgvWUT3eD1+H5Mg0dcyo+eoVoA8TJMm96xjzjBG24YI7o27drMHvtTqLZcBk\n7YkvW4A+zJIk955jKDtPMfANF/MJOzWnywc3OXsTqnIDGTFRBwC26PqkzS10zDQm04YLEmevtCiy\nF7b7/zkyETTCFlufxLmFjnnTWpuaJlOkzl4ZWxHKlyOTD1tsfRBdPHI7HVNdy+HBTz2s0Wo9KnzN\nxIOKhN8oc2RaYUJ6xdVHpc7tdEyj7u9Ojap+9qWuzjZcrHSyvBFXkRyZzI5jesXVJ3lul2M+N1X2\np5RaL26Nqsw2XJg62Y6jKpIj06rjmF5R9VHJc3eO+efPv0Onq8eTX4+L0usl7bgd4Uo/fFbQL8cY\nn9UNrL+61zy61/PdF7z5b/a5VXUlvvmGi0mCpFIwLWXrkNd6bciTgiV97v/+uH4H70bPBm/tuC6D\nT2NU3L8hvZAzrvxlxGT6WkPK9YqsT+rcrquSXjMpuhONfvVP6boKfqsU2zE5MnXKLF6IXrEdkzi3\n0zFVe1PjbfV4s3Tha8tCIOdBXEVyZNroPqBXXH00S9rcTsfcW/Whs+tws1QvtlluKLXxFqpI1bou\nfacwuZE2+qwfm/XvSvQC9dlnSZe765PTMd028lGO8atrpcfmbVARfeWbtkGM2efFKUxupDkerheq\nzy4LMFZobt07t2MmKcadue7nzZ+yfL3oZopjHVTbAerGT0a4ka2KhMmWwXqutAXIkBhzi83WtJVF\nbzTYFHSHJWVuuWPuw+TfOfGtuknOerNuZe2gJYDmTiy/pSJgsmWwMtkC+CmJhcV8e4PN1rSVRVki\n9lhS5pY7puo3J3zM3TILoYr+vupNy8OL/9s8sARU9j+6RTMCJkuGRTOLA0uAFInb2mCzNM0h68p2\nxC5LwtyaUXpVUv109Oa097s/AxW02LdWwHzHEkBzJ/Pjq+N9JkuGVUv8hiVAjMQNrdksTXPEurId\nsc+SLrdmFDvm0T0naJy/DvTo19YAx8ABhqj7THAGOMBA4sM1G940HjGkT5pb7Jj++yIv65SElVJP\nWpOd3nLX4ABuTsoEZ4ADGIkrNja8aTwiaW6xY+ru62fOie8g1h394SA4gAdFnyBFTHAGOGBC4pqF\nDW8aj7Dpgre0FSF2zF0/lJRsjnmiq8JwAA+KEjLBGeCACYlrFja8aTzCpgve0laE2DFVW6j7/mbu\ncv8jLGpfgQNm4TImOAMcMEPi6jYb3jQeofczbY4V3tJmhNgxSk/c6ddeWJZV5YoaBg5YpJQwwRng\ngAUSH2yx4U3jER1Aytxyx7xaxZtjWBaj0n9p7SOYHlMcHECBQylggjPAAUskPtpgw5vGI/r8KXPL\nHaMn4HsT32FLJ/ATiHAAj8dQ2WeCM8ABBhIfrtnwpvEImy54S7YIuWPq9rbjmM+zaZqy2PkUS6p3\n3aABs9i+ussEZ4ADTCQ+XrHhTeMRY/aUueWOubSvndugx7AJU+4YOICHY6zsMsEZ4AATiY9XbHjT\neIRNF7wla4TcMXqjqvB5D4uWvpIjE/X6TLaEuQHHPL1/Qoo0jF/myES9PJMtYW7AMS90+Z+kS1jm\nyETdPZMtYW7AMY18GwOJlrzMkYk6fSZbwtyAY27OzTGk07FljkykwJlsCXMDjrHvFSONji9zZCIV\nzmRLmBtwDCnxK79agZ9jvnr4PTr/c4yHaF8d8nPMVw+/R+d/jvEQ7atDfo756uH36PzPMR6ifXXI\nzzFfPfwenf85xkO0rw75Oearh9+j84Nj+q1QO/ulPBr/hfxdCjyHLXP6ywrX/uXx0zB/lyC/3uwo\nUA9GUf8DYe6QJALMc1YAAAAASUVORK5CYII=\n",
  2329. "text/latex": [
  2330. "$$\\left [ - i \\sqrt{- \\frac{1}{2} + \\frac{\\sqrt{5}}{2}}, \\quad i \\sqrt{- \\frac{1}{2} + \\frac{\\sqrt{5}}{2}}, \\quad - \\sqrt{\\frac{1}{2} + \\frac{\\sqrt{5}}{2}}, \\quad \\sqrt{\\frac{1}{2} + \\frac{\\sqrt{5}}{2}}\\right ]$$"
  2331. ],
  2332. "text/plain": [
  2333. "⎡ _____________ _____________ ___________ ________\n",
  2334. "⎢ ╱ ___ ╱ ___ ╱ ___ ╱ _\n",
  2335. "⎢ ╱ 1 ╲╱ 5 ╱ 1 ╲╱ 5 ╱ 1 ╲╱ 5 ╱ 1 ╲╱ \n",
  2336. "⎢-ⅈ⋅ ╱ - ─ + ───── , ⅈ⋅ ╱ - ─ + ───── , - ╱ ─ + ───── , ╱ ─ + ───\n",
  2337. "⎣ ╲╱ 2 2 ╲╱ 2 2 ╲╱ 2 2 ╲╱ 2 2\n",
  2338. "\n",
  2339. "___⎤\n",
  2340. "__ ⎥\n",
  2341. "5 ⎥\n",
  2342. "── ⎥\n",
  2343. " ⎦"
  2344. ]
  2345. },
  2346. "execution_count": 87,
  2347. "metadata": {},
  2348. "output_type": "execute_result"
  2349. }
  2350. ],
  2351. "source": [
  2352. "solve(x**4 - x**2 - 1, x)"
  2353. ]
  2354. },
  2355. {
  2356. "cell_type": "markdown",
  2357. "metadata": {},
  2358. "source": [
  2359. "System of equations:"
  2360. ]
  2361. },
  2362. {
  2363. "cell_type": "code",
  2364. "execution_count": 88,
  2365. "metadata": {},
  2366. "outputs": [
  2367. {
  2368. "data": {
  2369. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAH4AAAAVBAMAAAByPkciAAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAZpkQ3Ynvq81UMrtE\ndiLw+n06AAAACXBIWXMAAA7EAAAOxAGVKw4bAAABrklEQVQ4EZ2UMUjDUBCG/+Sl2NI2uugqHcQu\nQiY7lSoiTpWAi4sguIgg1EFxDIK4Zupog6tDuzmI2KmbtFS0k6i7g1pEJ/HeS1KTl4iQGy69/97H\nXe5eCkApIJmd3XKOLSejieo45JTXBDybmSRWtQhNbZKTLLMlCXKYttkqoQukx/Cl2aEMSPEUsO6h\nMTzy//EXQMNwSyfiP4GuHeDLg5e7HvWo1USjMfXLc9DFVFboBHsnvufyYxbFplLV6Il57hDXv1lH\nnm+KbZPTP4Cm6a6u7tAgjNQw80QJz6L1dbuIbMvP61SfeBwB5zskMqRHOX4myjPsYrzn817/GKt6\nlyiQi+eRG6Lp+Dxofg0bOCGBvz9143DvW7Q+VAv3fhq4BKYN9/35JcoYj8gbv+kYPlsDLd03uj/F\nwP3p2td45rnA/CuWf1g81Vbujf8Q84dmM5qbuDrclR7KhQmedfevHnztQVviwsjYfv9bBHz/YBsD\nJ8CLhOxOJYEmINmovqS7oRlSD1FphwQKBP/X9896oeOLuArFPHA7Oo7oQlDC8k3fCQsUddpcyiT+\n/1sDfgDNr2XH9LJoSQAAAABJRU5ErkJggg==\n",
  2370. "text/latex": [
  2371. "$$\\left \\{ x : 1, \\quad y : 0\\right \\}$$"
  2372. ],
  2373. "text/plain": [
  2374. "{x: 1, y: 0}"
  2375. ]
  2376. },
  2377. "execution_count": 88,
  2378. "metadata": {},
  2379. "output_type": "execute_result"
  2380. }
  2381. ],
  2382. "source": [
  2383. "solve([x + y - 1, x - y - 1], [x,y])"
  2384. ]
  2385. },
  2386. {
  2387. "cell_type": "markdown",
  2388. "metadata": {},
  2389. "source": [
  2390. "In terms of other symbolic expressions:"
  2391. ]
  2392. },
  2393. {
  2394. "cell_type": "code",
  2395. "execution_count": 89,
  2396. "metadata": {},
  2397. "outputs": [
  2398. {
  2399. "data": {
  2400. "image/png": "iVBORw0KGgoAAAANSUhEUgAAAOAAAAAmBAMAAAAvsop7AAAAMFBMVEX///8AAAAAAAAAAAAAAAAA\nAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAv3aB7AAAAD3RSTlMAVLsyIs3dRBCZ76tm\niXbIwtSaAAAACXBIWXMAAA7EAAAOxAGVKw4bAAADrElEQVRYCc2XS0hUURjH/6N3nDvqjLNoUS5q\n6LEpiIEiaNUsQrA2gzASBGmCFdnDRbRooXcRQUqNGC1EsrAHlRUTVLTJXLlJUoggIXWgIEfIlKIM\nKzvn3MfM/c65M7OQ6CzOOd/v/L/vf1/nzh0A8G1i3T9or9pNE63RmuR71k/OGfmxmIfmP0iMAu3a\nwF3KgOn5GBBeNsTKhagsCNxCk0S1w0hKkIJzcf8CZaiL+BMM7uMdcN0Qg6vrGkGvC/CgcgKPJUiA\n/gDBKGHAQ1RFGAz8Eiut0ro4iFMSVh0ZFQWXUJFRQBP9FMMgXWfxIPSvElYJqagyilRMAU00JAZF\nHf03fAs0jcHiLTWBDZKKQbOZVirDRZQl1tBEdgd8lNE4FcEWX5zQmhGA30N24XK9mDrdIYym7cNy\nYD/0K07gMfFnqttCdC2YxsUYh96G3Z93DrfTvND71xRJsT78Zv8niU6NZQTzNpRSVgf8p4brV+fs\neJXSznAVDVvEsS8XOYNVNBSvYt8iM9Tnn3RMc+OKtGRf2PDyADTx89AmJcpgxmCsIsG6SxjNiHdq\nF4/crbDhRC3CCyxBv+3OUkZd7HS0BoOtvcOMIb1ZrJyChlrkKsqilrLooLUZqI1wmYGGfHXNCm+c\nvE0mjyeTB/lUMH4y+U3HI9RkcsQR6Y1HWGuNsaVcNVTfRPdmU/0nl0RmBc8QgSXs4VVLa2d7gPF2\nri2Xf43sEoUNgwnM2cqiY5i7hJZYt5bd+FkPfWHDsjS2eSTKuHOEMZ1dzMBi2YLGAxR/SlMJrnNa\nMGp+OJT0lG4VafeY6fBsdkwExfdhxTHHjE/0F9lvApSyD82tM+QqYAZa30bnSXAuaX2v+ICl24fd\nxbxmifII23p2Ne93aTdCP+yc89ZET2OGP2AT9oIYnyLFod1skR2L0anmbfgcuO/KYUGVgcob7Bpm\nXAsnsD0/tkT5CHCqeRveAV7G3FmobEYVe6yr3bgj69JZIrfGqeZt2GTIhv4lYeiuRSOlyKnmbcjq\nnDZoMfai53u2WFOKzGqFDAOqr9BO9wOjtlaJrGqFDBUbEihlrylFVjXTsEV5oH0KGuxRQIqUIqua\nadhIU3gcVtXOqpSUqURWNd38MzMeoTksXgctTrGvB3spk2KlyKoWMn+SgvyjhrTyHoTjhGE38JEy\nKVaJ7GpfRkx57QEprW5q8hmF2smp/mYKaawUWdV2HbXVZ+yJMzatrHx3AmviZ58PzRTSWCmyqu3g\n4r9Q1gIGAlZHdQAAAABJRU5ErkJggg==\n",
  2401. "text/latex": [
  2402. "$$\\left \\{ x : \\frac{a}{2} + \\frac{c}{2}, \\quad y : \\frac{a}{2} - \\frac{c}{2}\\right \\}$$"
  2403. ],
  2404. "text/plain": [
  2405. "⎧ a c a c⎫\n",
  2406. "⎨x: ─ + ─, y: ─ - ─⎬\n",
  2407. "⎩ 2 2 2 2⎭"
  2408. ]
  2409. },
  2410. "execution_count": 89,
  2411. "metadata": {},
  2412. "output_type": "execute_result"
  2413. }
  2414. ],
  2415. "source": [
  2416. "solve([x + y - a, x - y - c], [x,y])"
  2417. ]
  2418. },
  2419. {
  2420. "cell_type": "markdown",
  2421. "metadata": {},
  2422. "source": [
  2423. "## Further reading"
  2424. ]
  2425. },
  2426. {
  2427. "cell_type": "markdown",
  2428. "metadata": {},
  2429. "source": [
  2430. "* http://sympy.org/en/index.html - The SymPy projects web page.\n",
  2431. "* https://github.com/sympy/sympy - The source code of SymPy.\n",
  2432. "* http://live.sympy.org - Online version of SymPy for testing and demonstrations."
  2433. ]
  2434. },
  2435. {
  2436. "cell_type": "markdown",
  2437. "metadata": {},
  2438. "source": [
  2439. "## Versions"
  2440. ]
  2441. },
  2442. {
  2443. "cell_type": "code",
  2444. "execution_count": 90,
  2445. "metadata": {},
  2446. "outputs": [
  2447. {
  2448. "data": {
  2449. "application/json": {
  2450. "Software versions": [
  2451. {
  2452. "module": "Python",
  2453. "version": "2.7.10 64bit [GCC 4.2.1 (Apple Inc. build 5577)]"
  2454. },
  2455. {
  2456. "module": "IPython",
  2457. "version": "3.2.1"
  2458. },
  2459. {
  2460. "module": "OS",
  2461. "version": "Darwin 14.1.0 x86_64 i386 64bit"
  2462. },
  2463. {
  2464. "module": "numpy",
  2465. "version": "1.9.2"
  2466. },
  2467. {
  2468. "module": "matplotlib",
  2469. "version": "1.4.3"
  2470. },
  2471. {
  2472. "module": "sympy",
  2473. "version": "0.7.6"
  2474. }
  2475. ]
  2476. },
  2477. "text/html": [
  2478. "<table><tr><th>Software</th><th>Version</th></tr><tr><td>Python</td><td>2.7.10 64bit [GCC 4.2.1 (Apple Inc. build 5577)]</td></tr><tr><td>IPython</td><td>3.2.1</td></tr><tr><td>OS</td><td>Darwin 14.1.0 x86_64 i386 64bit</td></tr><tr><td>numpy</td><td>1.9.2</td></tr><tr><td>matplotlib</td><td>1.4.3</td></tr><tr><td>sympy</td><td>0.7.6</td></tr><tr><td colspan='2'>Sat Aug 15 11:37:37 2015 JST</td></tr></table>"
  2479. ],
  2480. "text/latex": [
  2481. "\\begin{tabular}{|l|l|}\\hline\n",
  2482. "{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n",
  2483. "Python & 2.7.10 64bit [GCC 4.2.1 (Apple Inc. build 5577)] \\\\ \\hline\n",
  2484. "IPython & 3.2.1 \\\\ \\hline\n",
  2485. "OS & Darwin 14.1.0 x86\\_64 i386 64bit \\\\ \\hline\n",
  2486. "numpy & 1.9.2 \\\\ \\hline\n",
  2487. "matplotlib & 1.4.3 \\\\ \\hline\n",
  2488. "sympy & 0.7.6 \\\\ \\hline\n",
  2489. "\\hline \\multicolumn{2}{|l|}{Sat Aug 15 11:37:37 2015 JST} \\\\ \\hline\n",
  2490. "\\end{tabular}\n"
  2491. ],
  2492. "text/plain": [
  2493. "Software versions\n",
  2494. "Python 2.7.10 64bit [GCC 4.2.1 (Apple Inc. build 5577)]\n",
  2495. "IPython 3.2.1\n",
  2496. "OS Darwin 14.1.0 x86_64 i386 64bit\n",
  2497. "numpy 1.9.2\n",
  2498. "matplotlib 1.4.3\n",
  2499. "sympy 0.7.6\n",
  2500. "Sat Aug 15 11:37:37 2015 JST"
  2501. ]
  2502. },
  2503. "execution_count": 90,
  2504. "metadata": {},
  2505. "output_type": "execute_result"
  2506. }
  2507. ],
  2508. "source": [
  2509. "%reload_ext version_information\n",
  2510. "\n",
  2511. "%version_information numpy, matplotlib, sympy"
  2512. ]
  2513. }
  2514. ],
  2515. "metadata": {
  2516. "kernelspec": {
  2517. "display_name": "Python 3",
  2518. "language": "python",
  2519. "name": "python3"
  2520. },
  2521. "language_info": {
  2522. "codemirror_mode": {
  2523. "name": "ipython",
  2524. "version": 3
  2525. },
  2526. "file_extension": ".py",
  2527. "mimetype": "text/x-python",
  2528. "name": "python",
  2529. "nbconvert_exporter": "python",
  2530. "pygments_lexer": "ipython3",
  2531. "version": "3.5.2"
  2532. }
  2533. },
  2534. "nbformat": 4,
  2535. "nbformat_minor": 1
  2536. }

机器学习越来越多应用到飞行器、机器人等领域,其目的是利用计算机实现类似人类的智能,从而实现装备的智能化与无人化。本课程旨在引导学生掌握机器学习的基本知识、典型方法与技术,通过具体的应用案例激发学生对该学科的兴趣,鼓励学生能够从人工智能的角度来分析、解决飞行器、机器人所面临的问题和挑战。本课程主要内容包括Python编程基础,机器学习模型,无监督学习、监督学习、深度学习基础知识与实现,并学习如何利用机器学习解决实际问题,从而全面提升自我的《综合能力》。

Contributors (1)