EuroSciPy2008 examples
From SymPy
Contents |
Integration
<source lang="python"> In [1]: integrate(LambertW(x), x) Out[1]:
x
-x + x⋅LambertW(x) + ───────────
LambertW(x)
In [2]: _.diff(x) Out[2]:
LambertW(x) 1 1
-1 + ─────────────── + LambertW(x) + ─────────── - ───────────────────────────
1 + LambertW(x) LambertW(x) (1 + LambertW(x))â‹…LambertW(
──
x)
In [3]: trim(_) Out[3]: LambertW(x)
In [4]: var('a b') Out[4]: (a, b)
In [5]: integrate(a*LambertW(b*x), x) Out[5]:
⎛ x ⎞
a⋅⎜-x + x⋅LambertW(b⋅x) + ─────────────⎟
⎠LambertW(bâ‹…x)âŽ
In [6]: _.diff(x) Out[6]:
⎛ LambertW(b⋅x) 1 1
-a⋅⎜1 - LambertW(b⋅x) - ───────────────── - ───────────── + ──────────────────
⎠1 + LambertW(b⋅x) LambertW(b⋅x) (1 + LambertW(b⋅x)
⎞
───────────────⎟ )â‹…LambertW(bâ‹…x)âŽ
In [7]: trim(_) Out[7]: aâ‹…LambertW(bâ‹…x)
In [8]: integrate(sin(2*sqrt(x)), x) Out[8]:
⎛ ⎽⎽⎽⎞
sinâŽ2⋅╲╱ x ⎠⎽⎽⎽ ⎛ ⎽⎽⎽⎞ ──────────── - ╲╱ x â‹…cosâŽ2⋅╲╱ x âŽ
2
In [9]: f = (x-tan(x))/tan(x)**2 + tan(x)
In [10]: integrate(f, x) Out[10]:
⎛ 2 ⎞ 2
logâŽ1 + tan (x)⎠x x ──────────────── - ────── - ──
2 tan(x) 2
</source>
Linear Solving
<source lang="python"> In [11]: var('a b c d e f g h i') Out[11]: (a, b, c, d, e, f, g, h, i)
In [12]: f_1 = a*x + b*y + c*z - 1
In [13]: f_2 = d*x + e*y + f*z - 1
In [14]: f_3 = g*x + h*y + i*z - 1
In [15]: s = solve([f_1, f_2, f_3], x, y, z)
In [16]: s Out[16]: ⎧ a⋅i + c⋅d + f⋅g - a⋅f - c⋅g - d⋅i b⋅f + c⋅h + e⋅i - ⎨y: ─────────────────────────────────────────────, x: ──────────────────────── ⎩ a⋅e⋅i + b⋅f⋅g + c⋅d⋅h - a⋅f⋅h - b⋅d⋅i - c⋅e⋅g a⋅e⋅i + b⋅f⋅g + c⋅d⋅h -
bâ‹…i - câ‹…e - fâ‹…h aâ‹…e + bâ‹…g + dâ‹…h - aâ‹…h - bâ‹…d - eâ‹…g ⎫ ─────────────────────, z: ─────────────────────────────────────────────⎬ aâ‹…fâ‹…h - bâ‹…dâ‹…i - câ‹…eâ‹…g aâ‹…eâ‹…i + bâ‹…fâ‹…g + câ‹…dâ‹…h - aâ‹…fâ‹…h - bâ‹…dâ‹…i - câ‹…eâ‹…gâŽ
In [17]: f_1.subs(s) Out[17]:
aâ‹…(bâ‹…f + câ‹…h + eâ‹…i - bâ‹…i - câ‹…e - fâ‹…h) bâ‹…(aâ‹…i + câ‹…d + fâ‹…g -
-1 + ───────────────────────────────────────────── + ─────────────────────────
aâ‹…eâ‹…i + bâ‹…fâ‹…g + câ‹…dâ‹…h - aâ‹…fâ‹…h - bâ‹…dâ‹…i - câ‹…eâ‹…g aâ‹…eâ‹…i + bâ‹…fâ‹…g + câ‹…dâ‹…h - a
a⋅f - c⋅g - d⋅i) c⋅(a⋅e + b⋅g + d⋅h - a⋅h - b⋅d - e⋅g) ──────────────────── + ───────────────────────────────────────────── ⋅f⋅h - b⋅d⋅i - c⋅e⋅g a⋅e⋅i + b⋅f⋅g + c⋅d⋅h - a⋅f⋅h - b⋅d⋅i - c⋅e⋅g
In [18]: simplify(f_1.subs(s)) Out[18]: 0
In [19]: simplify(f_2.subs(s)) Out[19]: 0
In [20]: simplify(f_3.subs(s)) Out[20]: 0 </source>
Nonlinear Solving
<source lang="python"> In [21]: f_1 = x**2 + y + z - 1
In [22]: f_2 = x + y**2 + z - 1
In [23]: f_3 = x + y + z**2 - 1
In [24]: solve([f_1, f_2, f_3], x, y, z) Out[24]: ⎡⎛ ⎽⎽⎽ ⎽⎽⎽ ⎽⎽⎽⎞ ⎛ ⎽⎽⎽ ⎣âŽ-1 - ╲╱ 2 , -1 - ╲╱ 2 , -1 - ╲╱ 2 ⎠, (0, 0, 1), (0, 1, 0), âŽ-1 + ╲╱ 2 , -1 +
⎽⎽⎽ ⎽⎽⎽⎞ ⎤ ╲╱ 2 , -1 + ╲╱ 2 ⎠, (1, 0, 0)⎦
</source>
Factorization
<source lang="python"> In [1]: factor(x**56-1, x) Out[1]:
⎛ 2⎞ ⎛ 4⎞ ⎛ 2 3 4 5 6⎞ ⎛
-(1 + x)â‹…(1 - x)â‹…âŽ1 + x ⎠⋅âŽ1 + x ⎠⋅âŽ1 + x + x + x + x + x + x ⎠⋅âŽ1 - x + x
2 3 4 5 6⎞ ⎛ 2 4 6 8 10 12⎞ ⎛ 4 8 12
- x + x - x + x ⎠⋅âŽ1 - x + x - x + x - x + x ⎠⋅âŽ1 - x + x - x
16 20 24⎞
+ x - x + x âŽ
In [2]: f = x**16+4*x**15+14*x**14+32*x**13+47*x**12+92*x**11+66*x**10+120*x**9 \
...: -50*x**8-24*x**7-132*x**6-40*x**5-52*x**4-64*x**3-64*x**2-32*x+16
In [3]: f Out[3]:
2 3 4 5 6 7 8 9
16 - 32â‹…x - 64â‹…x - 64â‹…x - 52â‹…x - 40â‹…x - 132â‹…x - 24â‹…x - 50â‹…x + 120â‹…x +
10 11 12 13 14 15 16
66â‹…x + 92â‹…x + 47â‹…x + 32â‹…x + 14â‹…x + 4â‹…x + x
In [4]: factor(f, x) Out[4]: ⎛ 2 4 6 8⎞ ⎛ 2 3 4 5 6 âŽ4 + 4â‹…x + 9â‹…x + 4â‹…x + x ⎠⋅âŽ4 - 8â‹…x - 20â‹…x - 8â‹…x - 2â‹…x + 16â‹…x + 10â‹…x +
7 8⎞ 4â‹…x + x âŽ
</source>
Term Rewriting
<source lang="python"> In [29]: 36/(x**5-2*x**4-2*x**3+4*x**2+x-2) Out[29]:
36
────────────────────────────────
2 3 4 5
-2 + x + 4â‹…x - 2â‹…x - 2â‹…x + x
In [30]: f = apart(36/(x**5-2*x**4-2*x**3+4*x**2+x-2), x)
In [31]: f Out[31]:
4 4 9 3
- ───── + ────── - ──────── - ────────
1 + x -2 + x 2 2
(1 - x) (1 + x)
In [32]: f = apart(36/(x**5-2*x**4-2*x**3+4*x**2+x-2), x, evaluate=False)
In [33]: f Out[33]: RootSum(Lambda(_a, 4/(x - _a)), x - 2, x) + RootSum(Lambda(_a, -1/(x - _a)**2* (6 + 3*_a)), x**2 - 1, x) + RootSum(Lambda(_a, -4/(x - _a)), x + 1, x)
In [34]: Add(*[ g.doit() for g in f.args ]) Out[34]:
4 4 9 3
- ───── + ────── - ──────── - ────────
1 + x -2 + x 2 2
(1 - x) (1 + x)
</source>
Matrices
<source lang="python"> In [35]: M = Matrix(4, 4, lambda i,j: i*j+x)
In [36]: M Out[36]: ⎡x x x x ⎤ ⎢ ⎥ ⎢x 1 + x 2 + x 3 + x⎥ ⎢ ⎥ ⎢x 2 + x 4 + x 6 + x⎥ ⎢ ⎥ ⎣x 3 + x 6 + x 9 + x⎦
In [37]: M.eigenvals() Out[37]: ⎧ ⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽ ⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽⎽ ⎪ ╱ 2 ╱ 2 ⎨ ╲╱ 196 + 32⋅x + 16⋅x ╲╱ 196 + 32⋅x + 16⋅x ⎪7 + 2⋅x + ───────────────────────: 1, 7 + 2⋅x - ───────────────────────: 1, 0 ⎩ 2 2
⎫ ⎪ ⎬
- 2⎪
âŽ
</source>
