Forum: Mikrocontroller und Digitale Elektronik cos verrechnet sich.


von Matze N. (hupe123)


Lesenswert?

Hi,
ich will in meinem Programm den cosinus von einem Winkel berechnen.
Ich benutze einen ATmega128 und win-avr-gcc.
In meine h-File habe ich per
1
 #include <math.h>
 die Mathebibliothek eingebunden.
Ich will den Winkel von 53° berechnen. Laut Taschenrechner: 0,601815
aber nach mein µC ist
1
 cos(53);
, nachdem ich das per UART mittels
1
dtostrf(cos( 53 ), 15, 9, buffer)
 ausgebenen habe: -0.918282810

Kann mir mal jemand bitte nen Tipp geben! Dank!

von PicoPSU (Gast)


Lesenswert?

cos will seinen Parameter im Bogenmass. math.h definiert M_PI als 
Konstante zum umrechnen.

von Simon B. (nomis)


Lesenswert?

Die Cosinusfunktion rechnet im Bogenmaß.

cos (53.0 / 180 * pi);

Viele Grüße,
        Simon

von Stefan B. (stefan) Benutzerseite


Lesenswert?

The cos() function returns the cosine of __x, measured in radians.
http://www.nongnu.org/avr-libc/user-manual/group__avr__math.html

Radian / Radiant
http://en.wikipedia.org/wiki/Radian
http://de.wikipedia.org/wiki/Radiant_(Einheit)

53° = 0,925

von Günzel (Gast)


Lesenswert?

Grad != Bogenmaß

von XXX (Gast)


Lesenswert?

Hallo

Sie dir mal den Unterschied zwischen Winkelgrade und radiant an.
Du arbeitest im Moment mit radiant.

Gruß
Joachim

von mr. mo (Gast)


Lesenswert?

Musst in Bogenmaß angeben.

von Stefan (Gast)


Lesenswert?

Der Cosinus von 53 ist im Gradmaß ~0,6.
Im Bogenmaß ist das Ergebnis tatsächlich ~-9,2!

Man geht beim Bogenmaß nämlich nicht von einem Vollkreis mit 360°, 
sondern mit 2Pi aus. Das ist nämlich der Umfang des Einheitskreises.

Umrechnen kann man mit dem Umstellen der folgenden Gleichung:

Gradmaßwinkel / 180° = Bogenmaßwinkel / Pi

Da deine Funktion mit dem Bogenmaß rechnet, musst du den Gradmaßwinkel 
vorher in einen Bogenmaßwinkel umrechnen und dann erst den Cosinus 
ausrechnen:

Bogenmaßwinkel = Gradmaßwinkel / 180° * Pi

von Schulze und Schultze (Gast)


Lesenswert?

Ich würde sogar vermuten, dass die verwendete cos Funkion ihren 
Parameter, den Winkel, im Bogenmass erwartet.

von Klaus (Gast)


Lesenswert?

Ihr habt doch alle keine Ahnung!

die Funktion cos() braucht den Parameter in Bogenmaß! ;-)

von Simon B. (nomis)


Lesenswert?

Jetzt ist das Bogenmaß überspannt.

Das Bogenmaß ist voll!

Viele Grüße,
        Simon   :-)

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Matze: Geh mal nicht immer davon aus dass sich millionenfach bewaehrte 
und getestete Hardware bzw. Software "verrechnet", nur weil Du nicht 
damit umgehen kannst. Es gehoert nen bissel zum Lernprozess dazu, sich 
klar zu  machen, dass der Fehler wahrscheinlich bei Dir selber zu suchen 
ist oder es an verstaendnis mangelt ;) In diesem Fall haette es z.B. 
geholfen, das manual zur Funktion zu lesen.
1
$ man 3 cos
2
...
3
DESCRIPTION
4
       The cos() function returns the cosine of x, where x is given in radians.

Michael

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.