/usr/share/euler/progs/weltseil.en is in euler 1.61.0-10.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 | % 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~
>
|