Sinus eines Winkels berechnen
-
Guten Tag
Haben folgende Aufgabenstellung bekommen
http://www0.xup.in/exec/ximg.php?fid=67452348
Dazu habe ich folgendes programmiert
#include <stdio.h> #include <math.h> #define PI 3.1415 int main(void) { double x, xB, S; puts("Winkel x?"); scanf("%lf", &x); xB = ((2*PI)/360)*x; S = xB-((xB*xB*xB)/(3*2*1))+((xB*xB*xB*xB*xB)/(5*4*3*2*1)); printf("S = %.2lf", S); fflush(stdin); getchar(); return 0; }
Nun ist aber das Problem, wenn man z.B. einen Winkel von 360° eintippt, dass da nicht 0 bei herauskommt
Was genau muss ich da für Veränderungen vornehmen?
-
Da kannst du nicht viel tun. So weit draußen ist die Näherung eben ziemlich schlecht. Um sie zu verbessern, dürftest du die Reihe nicht so früh abbrechen, aber das ist ja vorgegeben.
-
Wie sollte ich am besten von anfang an da vorgehen?
Habe erst seit kurzem mit C angefangen
-
Zudem hat dein Pi bischen wenig Nachkommastellen.
Du kannst vor der Umrechnung ein
fmod(x, 360.0);
machen, bzw den Winkel in den Bereich 180:-180 oder Pi:-Pi bringen.
http://www.cplusplus.com/reference/cmath/fmod/Auch solltest du die ... weiter verfolgen.
Da bietet sich eine Schleife an, damit du da nicht einen Riesenterm notieren musst.
-
So richtig verstehen kann ich das leider immer noch nicht
-
SilverSoldier schrieb:
So richtig verstehen kann ich das leider immer noch nicht
Die in der Aufgabenstellung angegebene Reihenentwicklung ist eine Näherung für den Sinus, die umso besser ist, je mehr Glieder der Reihe du berechnest, und je näher x an 0 ist.
Du berechnest nur sehr wenige Glieder der Reihe (gemäß Aufgabenstellung), und du bist bei 360° sehr weit von 0 entfernt. Daher ist der Näherungswert so schlecht.