+1 Daumen
1k Aufrufe

Aufgabe:

Wie kann man den Sinus und den Cosinus rekursiv ohne höhere Funktionen mit Hilfe der drei Grundrechenarten bestimmen?

Ich soll dazu ein Programm programmieren. Es geht aber nur um die grundsätzliche mathematische Berechnung.

Die genaue Aufgabe lautet folgendermaßen:

2. Bestimmen Sie ein PROLOG-Programm zur rekursiven Bestimmung von sin(x) und cos(x), ohne dass zu deren Berechnung „höhere“ Funktionen benutzt werden müs- sen (also nur die 4 Grundrechenarten). Gehen Sie dabei so vor, dass Sie – analog zu Aufgabe 1 – zunächst die Tangentengleichung der sin- und cos-Funktionen an der Stelle x = 0 für „kleine“ x-Werte benutzen und ansonsten die Darstellung im Kom- plexen ausnutzen:
(sin x + i cos x)2 = sin2 x – cos2 x + 2i sin x cos x
(Hinweis: Definieren Sie ein Prädikat, das jeweils den Real- und Imaginärteil als In- dividuen enthält.)


Problem/Ansatz:

ich habe im Internet geschaut. Man kann den Sinus und den Cosinus zum Beispiel numerisch mit Hilfe folgender Formeln berechnen:

sin(t)=summe(n=0 bis unendlich) von ((-1)^n/(2n+1)!*t^(2n+1))
cos(t)=summe(n=0 bis unendlich) von ((-1)^n/(2n+1)!)*t^(2n))

Das ist aber eigentlich nicht velangt. Es steht rekursiv berechnen.

Hat jemand noch einen Lösungsansatz, wie man den Sinus und den Cosinus rekursiv bestimmen kann.

Ich währe um eine Hilfe dankbar.

Gruß

Jan

Avatar von

Eine Suche bei Google lohnt sich.

Wie kann man den Sinus und den Cosinus rekursiv ohne höhere Funktionen mit Hilfe der drei Grundrechenarten bestimmen?

Was soll das bringen? Wozu macht man so einen Aufwand im Zeitalter des TR und Co.?

Vielleicht, weil man einen TR und Co. bauen soll?

Was soll das bringen? Wozu macht man so einen Aufwand im Zeitalter des TR und Co.?

Vermutlich, weil den Taschenrechner auch irgendwann mal jemand programmiert hat.

Vielleicht nur nicht in Prolog und vermutlich auch etwas geschickter.

Vermutlich, weil den Taschenrechner auch irgendwann mal jemand programmiert hat.

Damit ist das erledigt ein für alle mal.

Warum dieses Rad nochmal erfinden?

Warum den Grundschülern generell rechnen beibringen. Gibt doch Taschenrechner. Ist jetzt nicht dein Ernst, oder?

. Gibt doch Taschenrechner. Ist jetzt nicht dein Ernst, oder?

Du vergleichst Äpfel mit Birnen.

Warum lässt man nicht Neues, Unbekanntes programmieren?

Das Alte kann man nachlesen.

Warum "quält" man Studenten damit?

sin, cos ist doch gedroschenes Stroh wie vieles andere auch.

Wo soll da der Reiz und damit die Motivation liegen? Warum genügen nicht die bekannten Herleitungen?

Gibt es da nicht Wichtigeres und Interessanteres, Sinnvolleres in der Mathematik?

Oder sind das typische Anfängerübungen, durch die man sich quälen muss,

weil sie prüfungsrelevant sind und dann im Papierkorb landen wie

viele Studieninhalte in allen Fächer, weil in der Praxis irrelevant und nie mehr vorkommend.

Zur Berechnung von Funktionswerten der trigonometrischen (und anderer) Funktionen werden in Taschenrechnern sehr raffinierte und ausgeklügelte Algorithmen eingesetzt. Mach dich darüber mal da schlau:

https://de.wikipedia.org/wiki/CORDIC

Muss ich alles wissen, was im Hintergrund einer Technologie abläuft?

Ich muss sie v.a. zweckorientiert benutzen können.

Für das andere gibt es Spezialisten in einer Materie, die sicher nicht zu den schöngeistigen,

wenn auch sehr wichtigen, gehört.

Ich möchte nicht das Gehirn eines Programmierfreaks haben, der fast den ganzen

bloß in dieser Welt lebt. ich stelle mir das schrecklich vor.

Das (berufliche)Sein prägt das Bewusstsein.

Alles hinterlässt Spuren im Denken und Wahrnehmen und vlt. auch im Charakter.

Mit meinem Hinweis auf die CORDIC Algorithmen geht es mir nicht darum, irgendjemandem zu predigen, was er machen soll. Der Fragesteller scheint aber interessiert zu sein, die Berechnung trigonometrischer Funktionswerte etwas tiefer zu durchschauen - allerdings mittels rekursiver Formeln. Und einem solchen interessierten Fragesteller gebe ich gerne einen Tipp, der ihn auf etwas für ihn möglicherweise ebenfalls Interessantes hinweist.

Muss ich alles wissen, was im Hintergrund einer Technologie abläuft?

Wenn es dich nicht interessiert, dann lass deine demotivierenden

Äußerungen. Oder willst du uns davon überzeugen,

dass du der einzige bist, der wirklich weiß, was wichtig ist.

Wenn du nicht mehr von Mathematik verstehen willst,

dann ist das wirklich dein Problem

Zur Aufgabe: Da ist ja nun eine Anleitung gegeben. Darin eine Formel, in der man was rekursives sehen kann. Außerdem soll man analog zu "Aufgabe 1" vorgehen. Die kennen wir nicht, aber Du: Wie bist Du also bei Aufgabe 1 vorgegangen (und wie lautet die überhaupt)?

ggT22: In meiner Aktiven Zeit als Mathelehrer war mein globales Lernziel:

SuS sollen erleben, wie mathematisches Wissen gewonnen wird.

Wie man in diesem Austausch von Kommentaren sieht, läuft ein heute sehr weit verbreitetes Lernziel dem teilweise zuwider:

SuS sollen mathematisches Wissen und Können auf lebensweltliche Probleme anwenden können.

Da nicht einmal die führenden Didaktiker sich in dieser Frage einig sind, werden die Kommentierenden sich voraussichtlich auch nicht einigen.

SuS sollen erleben, wie mathematisches Wissen gewonnen wird.

Ist das im Zeitrahmen der Schule HEUTE überhaupt möglich?

Ich glaube, nur in ganz seltenen Fällen.

SuS sollen mathematisches Wissen und Können auf lebensweltliche Probleme anwenden können.

Das halte ich für das Wichtigste. Es motiviert am meisten.

Motivation ist das A und O.

Ohne sie scheitert jeder über kurz oder lang.

Ich gehe realistisch an Dinge heran und frage nach dem Sinn.

Das hat mit Demotivation nichts zu tun, zumal ich den

Sinn von vielem, was mich nicht interessiert, nicht bestreite.

Ich will niemanden von irgendetwas überzeugen, sondern

mache nur kritische Anmerkungen, mit denen sich

manche hier offenbar schwer tun v.a. die, die

auf dem hohem Ross sitzen und Mathematik

für alleinseligmachend halten oder gar als

Universallöser für alle Menschheitsfragen.

Mit knallharter Logik ist die Welt genauso wenig

allein zu retten wie ohne sie.


Was heißt "Mathematik verstehen"?

Was ist das Wesen der Mathematik?

Alles auf plausible Axiome zurückführen?


Ich verstehe sie dann am besten, wenn ich erkenne,

dass sie Nutzen bringt.

Ich gönne auch jedem sinnfreie, beglückende Gedankenspielereien

ohne jeden praktischen Nutzen.

Angesichts der Situation weltwelt ist aber die Frage mehr als

berechtigt, wó und wie Mathematik helfen kann

überlebenswichtige Probleme zu lösen wie z.B.

die irrsinnige Umweltverschmutzung und - zerstörung

oder die extreme ungerechte Güterverteilung oder Ressourcenverschwendung

Dafür kann man nicht genug Geld ausgeben.


Oder willst du uns davon überzeugen,
dass du der einzige bist, der wirklich weiß, was wichtig is

dass du der einzige bist, der wirklich weiß, was wichtig ist.

Das habe ich nie versucht und würde es nie wollen.

Nur weiß sicher auch die Mathematik nicht, was wirklich wichtig ist

und agiert oft auf Nebenkriegsschauplätzen mit dem Argument

der Grundlagenforschung, das sicher in einigen Fällen widerlegbar wäre,

wenn auch grundsätzlich richtig.

Auch anderswo wurde und wird viel Geld verbrannt und nichts kam aus dabei.

Immer schafft auch Geldverbrennen in der Forschung Arbeitsplätze

und hält den Geldkreslauf in Schwung, um den es ökonomisch primär geht.

Und der Stéuerzahlung vergisst schnell. Denn der nächste Skandal kommt bestimmt.

PS:

Gestern war der Welt-over-shoot- day.

Wen der völlig kalt lässt und der lieber das Rad der sin-Herleitung neu erfinden will,

der hat für mich ein Problem und garantiert vor allem sein Nachwuchs.

Ein ruinierter Planet wird irgendwann auch jedes Interesse an Mathematik verlieren

v.a. an der, die nur um ihrer selbst willen und zur geistigen "Masturbation" betrieben wird.

Zudem gilt der Satz von Wittgenstein:

"Wir fühlen, daß selbst, wenn alle möglichen wissenschaftlichen Fragen beantwortet sind, unsere Lebensprobleme noch gar nicht berührt sind."

Mathematik löst z.B. kein einziges zwischenmenschliches Problem oder gibt auch

nur ansatzweise eine Antwort auf die Frage: Warum gibt es etwas und nicht nichts?

Wozu das ganze Evolutionstheater seit 14 Milliarden Jahren in einem Kosmos,

dem die Erde, der Mensch (mit seiner Mathematik) völlig egal ist.

"Noch vieles habe ich euch zu sagen, aber ihr könnt es jetzt nicht tragen".

Dass ein Mathematiker damit nichts anfangen kann, ist sonnenklar.

Mir sagt dieses Satz mehr Antworten auf die großen Fragen als

die gesamte Wissenschaft der Welt.

Denn ich glaube verstanden zu haben, in welche Richtung er zielt,

die auch Wittgenstein m.E. meint.

Doch darüber werde und will ich hier nicht reden.

Wenn es dich nicht interessiert

99+x % der Menschheit interessiert nicht, was in einem Computer vorgeht

und würden es nicht verstehen, wenn es Spezialist erklären.

Es ist völlig vermessen, alles bis ins Letzte verstehen zu wollen.

Es ist unmöglich und garantiert Frust erzeugend, demotivierend, weil ein Fass ohne Boden.

Ich gönne auch jedem sinnfreie, beglückende Gedankenspielereien
ohne jeden praktischen Nutzen.

Das ist ja sehr großzügig von dir.
Nun ist mir auch klar geworden, dass mein Interesse an
algebraischer Geometrie, algebraischer Zahlentheorie
und Homologietheorie absolut sinnfrei ist.
Vielen Dank für die Belehrung, die mir nun  leider
erst in meinem 76-sten Lebensjahr zuteil wird.
Wenn ich das früher gewusst hätte ;-)

Freude ist immer ein anerkennenswertes , unangreifbares Argument,

auch wenn ich sie nicht teilen kann.

Suum cuique gaudium.

De gustibus et gaudio ... :)

Ego censeo nos multo magis Latine inter nos communicare debere.

Lingua valde exacta est et longam traditionem habet.

Kleine Sprachunsicherheit bei Google:

blob.png

Wenn man sich den lateinischen Text von Translator dann auch noch vorlesen lässt, klingt er sehr italienisch.

Ego censeo nos multo magis Latine inter nos communicare debere.

Lingua Latina est lingua caelestium, non mathematicorum.

Nec est lingua eorum lingua amoris animique. :)

Le coeur a ses raisons que la raison ne connaît point.

Non nego quidem et mathemicos amare posse - ratione sua.

1 Antwort

+3 Daumen

Aloha :)

Für kleine Werte \(x\ll1\) sollen wir die Tangentengleichungen verwenden:$$\sin(x)\approx\sin(0)+\sin'(0)\cdot x=0+\cos(0)\cdot x=x$$$$\cos(x)\approx\cos(0)+\cos'(0)\cdot x=1+\sin(0)\cdot x=1$$Das ist uns natürlich zu ungenau, weshalb wir jeweils die beiden ersten Summanden der jeweiligen Taylor-Reihen als Näherung verwenden:$$\sin(x)\approx x\pink{-\frac{x^3}{6}}+O(x^5)\quad;\quad\cos(x)\approx1\pink{-\frac{x^2}{2}}+O(x^4)$$Die beiden pinken Terme werden später auch im Code in pink auftauchen. Dann kannst du sie weglassen, um dem ungeanueren Lösungsweg aus der Aufgabenstellung zu folgen.

Ansonsten sollen wir die angegebene Darstellung im Komplexen ausnutzen. Auch die ist schlecht gewählt, weshalb ich gerne Sinus und Cosinus vertauschen würde:$$\left(\cos x+i\sin x\right)^2=\cos^2x-\sin^2x+2i\sin x\cos x$$Dann wird nämlich aus der Euler-Formel sofort sichtbar, dass gilt$$(\cos x+i\sin x)^2=(e^{ix})^2=e^{i\cdot2x}=\cos(2x)+i\sin(2x)$$Vergleich von Real- und Imaginärteil liefert:$$\cos(2x)=\cos^2x-\sin^2x\quad;\quad\sin(2x)=2\sin x\cos x$$Eine Rekursionsformel folgt daraus, wenn wir \(x\) halbieren:$${\color{blue}\cos(x)=\cos^2\left(\frac x2\right)-\sin^2\left(\frac x2\right)}\quad;\quad \green{\sin(x)=2\cdot\sin\left(\frac x2\right)\cos\left(\frac x2\right)}$$

Ich kann leider kein Prolog, daher folgen die Funktionen in C:

    double const approxat=1.0/1000;

    double sin(double x)

    {   if (x>\(-\)approxat && x<approxat) return x - x*x*x/6;

        return 2*sin(x/2)*cos(x/2);

    }

    double cos(double x)

    {   if (x>\(-\)approxat && x<approxat) return 1.0 - x*x/2;

        double c=cos(x/2);

        double s=sin(x/2);

        return c*c-s*s;

    }

Die Grenze "approxat" habe ich willkürlich gewählt. Sie legt fest, wann die Bedingung \((x\ll1)\) konkret erfüllt ist, also für welche \(x\) die Tangenten-Näherung gelten soll. Es kann sein, dass ihr dafür in der Vorlesung einen anderen Wert definiert habt.

Avatar von 152 k 🚀

Vielen Dank für die Antwort. Das sollte ohne Probleme gehen.

C / C++ programmieren kann ich auch. Ich werde das testen.

Von der Laufzeit her ist das Verfahren sehr suboptimal, alleine der Verwaltungsaufwand für den Call-Stack bei den Rekursionen kostet viel Zeit. Aber wir sind halt den Vorgaben aus der Aufgabenstellung gefolgt.

Es geht hier aber vermutlich eh nur darum, mathematische Zusammenhänge so aufzubereiten, dass sie zur Rekursion geeignet sind.

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Mathelounge! Stell deine Frage einfach und kostenlos

x
Made by a lovely community