![]() |
Sinus/Cosinus Funktionen
Komme mit der Delphi-Hilfe und den entsprechenden Funktionen nicht wirklich weiter. Hab zwar ne Sinus-Funktion gefunden,
Delphi-Quellcode:
aber wenn ich da Winkelwerte eintrage komme ich zu komplett anderen Ergebnissen als mit dem Taschenrechner.
var
R: Extended; S: string; begin R := Sin(Pi); Str(R:5:3, S); Canvas.TextOut(10, 10, 'The Sin of Pi is ' + S); end; Habe auch auf etlichen Seiten nachgesehen sowie die Hilfe benutzt, aber dieses Thema ist nirgendwo zu finden, hoffe mal ihr könnt mir weiterhelfen. JASH |
Re: Sinus/Cosinus Funktionen
Musst du erst von Deg nach Rad umrechnen. DegToRad und zurück mit RadToDeg ist auch in der Unit Math drin.
|
Re: Sinus/Cosinus Funktionen
:hi:
Die Hilfe Sin gibt den Sinus des mit X angegebenen Winkels im Bogenmaß (Rad) zurück . . . Hast du deinen TI auf Bogenmass eingestellt? Wenn ich den Sinus von pi im Bogenmass nehme krieg ich 0. pi° aber, also Gradmass gibt 0.054 2pi im Bogenmass entspricht 360° im Gradmass = voller Kreis. vielleicht hilft dir ja das. mfg Tobias |
Re: Sinus/Cosinus Funktionen
Die trigonometztischen Funktionen der Delphi-Bilbiothek nehmen nur Werte im Bogenmaß entgegen.
Winkelwerte müssen also zuerst umgewandelt werden. Hinweis: Multipliziere den Winkelwert mit ((2 x pi) / 360). |
Re: Sinus/Cosinus Funktionen
@Chewie danke, aber ich bleibe dann lieber bei radtodeg/degtorad wie es Luckie geschrieben hat, ist einfacher :-D
@Luckie und Mirlin danke, so funzt es, auch wenn ich dazu nicht direkt was in der Delphi-hilfe gefunden habe. Hab da nur noch ein kleines Problem, und zwar wenn ich einen Winkel umrechne erhalte ich den korrekten Sinus-Wert, wenn ich ihn aber wiede rzurück rechne stimmt er nicht mehr mit dem winkel überein bzw. der Winkel wird immer kleiner desto grösser der Ursprungswinkel ist. |
Re: Sinus/Cosinus Funktionen
Hmmm, der erste teil funzt nun, noma vielen dank, aber wenn ich die Sinus-Werte zurückrechne bekomme ich immer falsche Ergebnisse raus, bei kleinen Winkeln stimmt es noch ungefähr, bei grösseren aber dann garnicht mehr, hoffe mal ihr könnt mir da genauso schnell weiterhelfen wie zuvor :)
Delphi-Quellcode:
var
R: Extended; S: string; begin R := DegToRad(R); R := Sin(R); Str(R:5:3, S); Canvas.TextOut(10, 10, 'Sinus: ' + S);{Bis hierhin stimmt der Sinuswert} R := sinh(R); R := RadToDeg(R); Str(R:5:3, S); Canvas.TextOut(10, 10, 'Winkel: ' + S);{Hier erhalte ich dann die falschen Werte zurück bzw. von dem sinh} end; |
Re: Sinus/Cosinus Funktionen
Klingt ganz nach einen Rundungsfehler. Da wirst du nichts machen können. Selbst bei Extended ist irgendwann schluss mit den Stellen und die CPU muss runden / abschneiden. Liegt aber in der Natur der Sache, da eine Zahl mit unendlich vielen oder auch endlich vielen, wenn es nur genug sind, Nachkomma stellen, nie exakt im Dualsystem abgebildet werden kann.
|
Re: Sinus/Cosinus Funktionen
@Luckie dachte ich am Anfang auch, aber da sind am ende über 20° Differenz dabei und dass kann kein Rundungsfehler mehr sein. Da ein stinknormaler Taschenrechner die Werte auch problemlos umrechnen kann, Delphi aber weit mehr und ausgefeiltere Werkzeuge dafür zur Verfügung hat dachte ich dass es eigentlich leichter sein sollte. Kann es sein dass der Befehl sinh() falsch ist ?
|
Re: Sinus/Cosinus Funktionen
laut OH
Sinh berechnet den hyperbolischen Sinus eines Winkels. also wenn du da möchtest hast du den richtigen ansonsten gibt es da noch Die Funktion Sin berechnet den Sinus eines Winkels. ebenfalls aus der OH |
Re: Sinus/Cosinus Funktionen
sinh berechnet den hyperbolischen Sinus eines Winkels, die Umkehrfuntion zu sin jedoch berechnet sich, wie in der Mathematik üblich, mit dem arcsin.
Bitte beachte, dass die Sinusfunktion symetrisch und zyklisch ist, so dass gemäß der def von arcsin nur für
Code:
gilt:
-0.5*pi<=r<=0.5*pi
Code:
Puh, schon lange her... :gruebel:
r=arcsin(sin(r))
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz