Im letzten Aufsatz zur Lichtablenkung durch Gravitation habe ich die Frage beantwortet, was unter dem Schatten eines Schwarzen Lochs zu verstehen ist. Dazu wurde im Prinzip dasselbe Programm benutzt wie in Heft 77: Die Berechnung tangentialer Strahlen. Es musste aber Berücksichtigung finden, dass die austretenden Strahlen parallel sein müssen, also alle zu einem Empfänger gelangen. Dazu muss man 2x rechnen. Das Programm liegt auf unserer
Webseite. Hier der Python-Code:
Code:
from turtle import *
from random import *
from math import *
def plot(x,y): # einen Punkt setzen
penup()
goto(50*x,50*y)
pendown()
dot(3)
hideturtle()
def circle():
w=0
for i in range (1000):
x=cos(w)
y=sin(w)
plot(x,y)
w=w+2*pi/1000
def einStrahl(r0, deltaPhi, plotflag):
r=1.00000001*r0
phi=0
Delta=1e-3
while r<70:
# nur jeden 10. Punkt zeichnen
for i in range (10):
# Steigung berechnen
drdphi=r*r*r*r/(r0*r0*r0)
drdphi=drdphi*(r0-1)-r*(r-1)
drdphi=sqrt(drdphi)
# Werte der vorigen Runde aufheben
R=r;Phi=phi
# neuen Punkt bestimmen
r=r+Delta*drdphi
phi=phi+Delta
# zuerst nach unten zeichnen
x=r*cos(-phi-deltaPhi)
y=r*sin(-phi-deltaPhi)
if (1==plotflag): plot(x,y)
x=r*cos(phi-deltaPhi)
y=r*sin(phi-deltaPhi)
if (1==plotflag): plot(x,y)
# Punktrichtungsgleichung auswerten
X=x-R*cos(Phi)
Y=y-R*sin(Phi)
deltaPhi=atan2(Y,X)
return deltaPhi
# Hauptprogramm
tracer(0,0) # Turtle aus
circle()
r0=1.55
while r0<15:
deltaPhi=0
deltaPhi=einStrahl(r0, deltaPhi, 0)
pencolor("blue")
einStrahl(r0, deltaPhi, 1)
# symmetrischen Strahl in anderer Farbe
pencolor("red")
einStrahl(r0, 2*pi-deltaPhi, 1)
r0=r0*1.2
print(r0, deltaPhi)
update()
done()