In [1]:
from sympy import *
init_printing()
import numpy as np
import matplotlib.pyplot as plt
interaktiv
In [2]:
#%matplotlib notebook
für den Druck
In [3]:
%matplotlib inline
In [4]:
x = Symbol('x')
y = Symbol('y')
In [5]:
f1 = x**2+y**2
f2 = x - y
f1, f2
Out[5]:
Zeichne beide Nullstellenmengen in ein Bild
In [6]:
f1n = lambdify((x,y), f1)
f2n = lambdify((x,y), f2)
In [9]:
xn = np.linspace(-1.1, 1.1)
yn = xn
X, Y = np.meshgrid(xn, yn)
plt.contour(X, Y, f1n(X, Y), [1])
plt.contour(X, Y, f2n(X, Y), [0, .5], colors='green')
plt.axis('equal');
In [11]:
h = (x**2+y**2)**2 + 3*x**2*y - y**3
h
Out[11]:
In [14]:
xn = np.linspace(-1, 1, 200)
yn = xn
hn = lambdify((x,y), h)
X, Y = np.meshgrid(xn, yn)
plt.contour(X, Y, hn(X,Y), [0])
plt.axis('equal');
In [15]:
x = Symbol('x')
In [16]:
Glg = x**5 + x + 7
Glg # keine rechte Seite bedeutet "=0"
Out[16]:
In [17]:
Lsg = solve(Glg)
Lsg
Out[17]:
Die Lösungen können nicht durch Wurzeln ausgedrückt werden. Fragen Sie Dr. Klopsch.
http://www.sagemath.org kann die Galoisgruppe ausrechnen.
In [18]:
[l.n() for l in Lsg]
Out[18]:
sympy kann damit leider nur numerisch weiterarbeiten
In [19]:
f = x**3 - 23*x**2 + 1
Glg = Eq(f, 0)
Lsg = solve(Glg)
Lsg
Out[19]:
In [20]:
[l.n() for l in Lsg]
Out[20]:
In [23]:
fn = lambdify(x, f, 'numpy')
xn = np.linspace(-5, 24, 1200)
plt.plot(xn, fn(xn))
plt.grid()
plt.axis(ymin=-50, ymax=10)
Out[23]:
In [24]:
rlsg = roots(Glg, trig=True)
rlsg
Out[24]:
In [25]:
print([r.n() for r in rlsg])
print([l.n() for l in Lsg])
In [28]:
f.subs(x, list(rlsg)[0]).expand(trig=True).trigsimp()
Out[28]:
In [29]:
[f.subs(x, x0).expand(trig=True).trigsimp() for x0 in rlsg]
Out[29]:
In [30]:
g = 100*(x-1)*(x**2+1)*(x-2) + 1
Lsg = solve(g)
Lsg[2]
Out[30]:
In [31]:
Lsg[2].n()
Out[31]:
In [32]:
solve(g, quartics=False)
Out[32]:
In [33]:
x = Symbol('x')
In [36]:
xn = np.linspace(0, 4*np.pi, 850)
yn = np.tan(xn)
yn[yn>35] = np.nan
yn[yn<-10] = np.nan
plt.plot(xn, yn)
plt.plot(xn, xn)
plt.axis(ymin=-5, ymax=25);
In [38]:
solve(tan(x)-x) #gibt NotImplementedError
In [39]:
nsolve(tan(x)-x, 4)
Out[39]:
In [40]:
x0 = nsolve(tan(x)-x, (np.pi, 1.499*np.pi), solver='anderson') # ridder und bisect sind auch möglich
x0
Out[40]:
In [41]:
float(x0)
Out[41]:
In [42]:
x = Symbol('x')
a = Symbol('a')
In [43]:
Glg = Eq(exp(-a*x), 3*x**a)
Glg
Out[43]:
In [44]:
solve(Glg)
Out[44]:
In [45]:
Lsg = solve(Glg, x)
Lsg
Out[45]:
LambertW(a) ist die Lösung von $xe^x=a$.
In [46]:
solve(x*exp(x)-a, x)
Out[46]:
In [47]:
f = Lsg[0]
f.subs(a, 1).n()
Out[47]:
Warum kann $f$ nicht lambdifiziert werden?
In [48]:
xn = np.linspace(.01, 5)
yn = [f.subs(a, xx).n() for xx in xn]
In [49]:
plt.plot(xn, yn);
Gibt es einen endlichen Grenzwert für $a\to\infty$?
In [50]:
L = Limit(f, a, oo)
L
Out[50]:
In [51]:
L.doit()
Out[51]:
In [52]:
LambertW(1.)
Out[52]:
Ist die Differenz zwischen $f$ und dem Grenzwert (uneigentlich Riemann-)integriebar?
In [53]:
sin(x).series(x, 0, 14)
Out[53]:
In [54]:
reihe = f.series(a, oo, 3)
reihe
Out[54]:
Die Differenz ist asymptotisch proportional zu $-\frac1a$, also nicht integrierbar.
In [55]:
reihe + O(a**(-2), (a, oo))
Out[55]:
In [56]:
reihe.removeO()
Out[56]:
In [ ]: