C Code zur Berechnung von sin(x) Erklärung?
Hallo Leute kann mir jemand erklären wie dieser C Code funktioniert. Ich weiß, dass es sin(x) berechnet.
double sin(double x) {
double term = x;
double summe = term;
double genauigkeit = 1E-8;
for (int n = 1; term > genauigkeit || -term > genauigkeit; n++) {
double zaehler = x * x;
double nenner = (2 * n) * (2 * n + 1);
term *= (zaehler / nenner);
term *= -1;
summe += term;
}
return summe;
}
3 Antworten
Haha ist eine etwas gewöhnungsbedürftige Verwendung der for Schleife aber im Endeffekt ists nichts anderes als ein Iteratives verfahren um den Sinus zu berechnen.
Hier wird im wesentlichen nur die Taylorentwicklung der Sinusfunktion solange durchgeführt bis die gewünschte Genauigkeit erreich wurde.
etwas gewöhnungsbedürftige Verwendung ...
Das läuft bei mir schon unter haarsträubend ;-)
Weil die Abbruchbedingung keinen direkten Bezug zur Iterationsvariable hat.
Ich würde das eher als while Schleife schreiben.
Natürlich ist es erlaubte Syntax allerdings in vielen Coding Guidlines nicht erlaubt und auch sonst teilweise nicht gern gesehen.
In den meisten Standards wird eben for rein für Iterationszwecke über Speicherbereiche oder dergleichen reserviert, während while die Standardschleifenstruktur ist und immer dann verwendet wird wenn eine Schleife solange durchgeführt werden soll bis eine (allgemeine) Wahr Falsch Frage falsch liefert.
nimm ein zettel und ein stifft und gehe die einzelnen schleifen durch .
da muss man nix erklären , du musst es einfach nur mal machen .
,,Wie" dieser Code mathematisch funktioniert, über eine Annäherung der Sinus Fkr. da gibt es einige.
Dazu mal auf Wikipedia nachschlagen
Wieso das denn?