In [ ]:
import sympy as sp
import diofant as df
from IPython.display import display

In [ ]:
sp.__version__

Matrixexponential


In [ ]:
x = sp.Symbol('x')
y = df.Symbol('y')

In [ ]:
A = sp.Matrix(4,4,[0,1,0,0,-1,0,1,0,0,0,0,1,1,0,-3, 0])
B = df.Matrix(4,4,[0,1,0,0,-1,0,1,0,0,0,0,1,1,0,-3, 0])

In [ ]:
A

In [ ]:
B

In [ ]:
ea = A.exp()
eb = B.exp()

In [ ]:
ea[0,0].n()

In [ ]:
eb[0,0].n()

In [ ]:
ebx = (y*B).exp()          # dauert mehrere Minuten
sebx = df.simplify(ebx)

In [ ]:
tmp = sebx[0,0].radsimp().expand()
tmp

In [ ]:
tmp.collect([df.exp(df.I*y*df.sqrt(2-df.sqrt(2))), df.exp(df.I*y*df.sqrt(2+df.sqrt(2)))])

Ein Integral


In [ ]:
x, y, z = df.symbols('x y z', positive=True)

In [ ]:
f = df.sqrt(x**2+y**2+z**2)
f

In [ ]:
F=f.integrate(z)

In [ ]:
Fs = F.simplify()
Fs

Gleiches Ergebnis mit sympy.


In [ ]:
s = df.Symbol('s')
a = df.Symbol('a')
glg = df.Eq(s, (df.exp(a) - df.exp(-a))/2)
glg

In [ ]:
Lsg = df.solve(glg, a)
Lsg

In [ ]:
terme = Fs.args
terme

In [ ]:
x1 = df.Wild('x1')
x2 = df.Wild('x2')
x3 = df.Wild('x3')

In [ ]:
pattern = x1 * df.asinh(x2)
m = terme[0].match(pattern)
m

In [ ]:
ersatz = x1 * Lsg[1].subs(s, x2)
t0 = ersatz.subs(m).simplify()

In [ ]:
m = terme[1].match(pattern)
t1 = ersatz.subs(m).simplify()

In [ ]:
G = t0 + t1 + terme[2]
G

In [ ]:
G.diff(z).simplify()

In [ ]: