% Dieses Notebook beschäftigt sich mit verschiedenen geometrischen
% Aufgaben im Zusammenhang mit der Erdkugel. Zunächst wird also
% eine Näherung für den Erdumfang und den Erdradius angegeben.
>u=40008000; r=u/(2*pi);
% Die erste Aufgabe besteht einfach darin, den ERdumfang um 1m
% zu verlängern. Um wieviel würde sich dann der Erdradius verlängern
% müssen?
% 
% Die Antwort ist unabhängig vom Radius, weil der Umfang linear
% vom Radius abhängt. Es sind ca 16 cm.
>1/(2*pi)
        0.1591549430919 
% Als nächstes Fagen wir, um wieviel der Radius zunehmen müsste,
% damit die Oberfläche um 1 Quadratmeter zunimmt.
% 
% Aus der Formel für die Oberfläche (4*pi*r^2) ergibt sich durch
% Ableiten die Änderung recht genau. Es sind 9 Nanometer!
>1/(8*pi*r)
      6.24875024995e-09 
% Versuchen wir das Ergebnis ohne Ableitung exakt aus der Differenz
% der Oberflächen herzuleiten, so ergibt sich die Lösunge einer
% quadratischen Gleichung. Leider berechnet der Computer die Lösung
% falsch, weil sich zwei Größen gegenseitig aufheben (Auslöschung).
>r-sqrt(r^2+1/(4*pi))
    -5.587935447693e-09 
% Man kann dieses falsche Ergebnis korrigieren, indem man die
% andere Lösung berechnet und sich erinnert, dass das Produkt
% der Nullstellen mal dem höchsten Koeffizienten gleich dem konstanten
% Glied ist.
% 
% Man erhält dieselbe Lösung wie mit der Näherung.
>h=r+sqrt(r^2+1/(4*pi)); 1/(4*pi*h)
      6.24875024995e-09 
% Mit Hilfe des Intervall-Newton-Verfahrens erhält man eine sehr
% gute Einschließung der Nullstelle.
>inewton("2*r*x+x^2-1/(4*pi)","2*(r+x)",~0,1~)
~6.2487502499500036e-09,6.2487502499500102e-09~ 
% Im nächsten Problem ziehen wir ein Seil, das um die Erde liegt
% und einen Meter länger als der Erdumfang ist, an einer Stelle
% hoch. Wie hoch kann man das Seil ziehen?
% 
% Mit ein wenig Geometrie erhält man eine Formel, die allerdings
% numerisch instabil ist.
>f="sqrt(2*x*r+x^2)-acos(r/(r+x))*r-0.5";
% Das Bisektionsverfahren liefert aber dennoch eine Lösung.
>longformat; bisect(f,100,200)
         121.4382871772 
% Ebenso das Sekantenverfahren.
>longformat; secant(f,100,200)
         121.4382874699 
% Plottet man die Funktion in der Nähe der Nullstelle, so sieht
% man, dass etwas faul ist. Es entstehen durch numerische Zufälligkeiten
% Artefakte.
>fplot(f,121.4382,121.4383);
% Man kann das Problem auch über den Winkel lösen, den das Sel
% vom höchsten Punkt bis zu dem Punkt, an dem es aufliegt, bildet.
>a=bisect("tan(x)-x-0.5/r",0,1)
      0.006175980080382 
% Die zum Winkel gehörende Höhe berechnet sich ebenfalls nach
% einer einfachen Formel.
>(1/cos(a)-1)*r
         121.4382927119 
% Das Seil befindet sich ungefähr püber eine Strecke von 79 km
% in der Luft.
>2*a*r
         78650.74766252 
% Wieder kann man mit dem Intervall-Newton-Verfahren eine gute
% Einschließung erhaten.
>a=inewton("tan(x)-x-0.5/r","tan(x)^2",~0,1~)
    ~0.006175980080344,0.006175980080417~ 
% Man kann damit die Höhe bis auf 7 Stellen hinter dem Komma einschließen.
>(1/cos(a)-1)*r
            ~121.438292709,121.438292715~ 
% Als nächstes Versuchen wir die Oberfläche der Erde um 1 Quadratmeter
% zu erhöhen, indem wir einen Punkt nach außen ziehen.
% 
% Mit ein wenig Geometrie erhält man für den halben Winkel, der
% dabei nach außen gezogen wird die Gleichung cos(a)+1/cos(a)=2+1/(pi*r^2).
% Allerdings wird die rechte Seite schlecht berechnet.
>2+1/(pi*r^2)
                      2 
% Man kann aber einfach cos(a)=1-a^2/2 setzen und erhält näherungsweise
>a=(4/(pi*r^2))^(1/4)
      0.000420963113707 
% Die zugehörige Höhe, um die die Oberfläche nach außen gezogen
% wird, ist ungefähr 56 cm.
>(1/cos(a)-1)*r
        0.5641896247476 
% Alternativ kann man eine quadartische Gleichung für x=1-cos(a)
% lösen. Dies gelingt ebenfalls, weil die Auslöschung hier keine
% große Rolle spielt.
>d=1/(pi*r^2); x=(d-sqrt(d^2+4*d))/2; acos(1+x)
     0.0004209631073947 
% Das Gleichungssystem kann man auch mit dem Intervall-Newton-Verfahren
% lösen.
>cx=inewton("x^2+d*x-d","2*x+d",~-0.0001,-0.000000001~)
~-8.8604975476386212e-08,-8.860497547638616e-08~ 
% Da der acos nicht Intervallmäßig implementiert ist, muss man
% ihn mit dem Intervall-Newton-Verfahren berechnen. Man erhält
% eine Einschließung der Lösung.
>a=inewton("cos(x)-(1+cx)","-sin(x)",~0.0001,0.0005~); (1/cos(a)-1)*r
              ~0.5641896559,0.5641896615~ 
>
