Vorlesung vom 24.11.2022
© 2022 Prof. Dr. Rüdiger W. Braun
from sympy import *
init_printing()
x = S('x')
p = x**2 + 4*x - 6
glg = Eq(p, 0)
solveset(glg)
p = x**3 - x**2 + 5
glg = Eq(p, 0)
lsg = solveset(glg)
lsg
w = list(lsg)[1]
w
w.simplify()
Schöner wird's nicht
for w in lsg:
display(w.n())
print(w.is_real)
True
False
False
p2 = x**4 - x**3 - 5
glg2 = Eq(p2, 0)
lsg2 = solveset(glg2)
w = list(lsg2)[0]
w
w.radsimp()
for w in lsg2:
display(w.n())
print(w.is_real)
True
True
False
False
p3 = x**5 - x**4 - 5
glg3 = Eq(p3, 0)
lsg3 = solveset(glg3)
lsg3
Galois sagt: Geht nicht besser
summe = 0
for w in lsg3:
display(w.n())
print(w.is_real)
summe += w
summe
True
False
False
False
False
summe.radsimp()
summe.n()
minimal_polynomial(summe)
Das Minimalpolynom von $a$ ist das "kleinste" Polynom $p$ mit $p(a)=0$
x = S('x')
ugl = x**2 < 5
ugl
solve(ugl)
solveset(ugl)
m1 = solveset(ugl, domain=Reals)
m1
print(m1)
Interval.open(-sqrt(5), sqrt(5))
m2 = solveset(exp(x) >= E**(-1), domain=Reals)
m2
print(m2)
Interval(-1, oo)
m1 & m2
print(m1 & m2)
Interval.Ropen(-1, sqrt(5))
Interval(1, oo) == Interval.Ropen(1, oo)
True
Interval.open(1, oo) == Interval.Lopen(1, oo)
True
solveset(exp(x) > 0, domain=Reals)
solveset(exp(x) == 0)
print(_) # symbolische leere Menge, nicht zu verwechslen mit set()
EmptySet
solveset(3*log(x) < x, domain=Reals)
plot(3*log(x), x);
glg = Eq(3*log(x), x)
lsg = solve(glg)
lsg
solveset
findet diese Lösungen nicht
Die Entwickler empfehlen solveset
in den Fällen, in denen es funktioniert
print(lsg[0])
-3*LambertW(-1/3)
w = S('w')
glgW = Eq(x, w*exp(w))
glgW
lsg = solve(glgW, w, dict=True)
lsg
glgW.subs(lsg[0]).simplify()
glg = Eq(exp(x), 5*x**2)
lsg = solve(glg)
lsg
plot(exp(x), 5*x**2, (x, -1, 1));
a = S('a')
f = exp(-a*x**2)
I1 = Integral(f, (x, -oo, oo))
I1
I1.doit()
a = Symbol('a', positive=True)
I2 = I1.subs(S('a'), a)
I2
I2.doit()
z = exp(I*pi/2)
z
arg(z)
arg(-1), arg(1), arg(-1-I/100)
phi = Symbol('phi', real=True)
plot(arg(exp(I*phi)));
f = sin(x)**2
F = Integral(f, x).doit()
F
plot(f, F);
f = 1/(2-cos(x))
I2 = Integral(f, x)
I2
F = I2.doit()
F
print(F)
2*sqrt(3)*(atan(sqrt(3)*tan(x/2)) + pi*floor((x/2 - pi/2)/pi))/3
floor(3.5)
floor(-3.5)
plot(f, F);
Wofür ist floor
nötig?
g = atan(sqrt(3)*tan(x/2))
g
plot(g);
F.diff(x)
F.diff(x).simplify()
Die Sprungstellen können nicht behandelt werden
def null(x):
return 0
F2 = F.replace(floor, null)
F2.diff().simplify()
F2
ist unstetig, aber differenzierbar, wenn man die Sprünge entfernt
a = S('a')
f = 1 / (a - sin(2*pi*x))
I1 = Integral(f, (x, 0, 1))
I1
I1.doit()
plot(f.subs(a, 2), 0);