Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sinus-Problem (https://www.delphipraxis.net/141667-sinus-problem.html)

Socke_SG 13. Okt 2009 17:44


Sinus-Problem
 
Hallo zusammen,

ich habe ein kleines (Großzahligs Problem). Und zwar möchte ich SinusCosinus-Werte für große Frequenzen ausgeben lassen. Heisst dass das Argument vom Sinus auch den Wert von 1E+15 übersteigen kann. Bis zu dieser Grenze sind alle Sinuswerte zwischen -1 und +1 was ja auch richtig ist. Werte darüber liefenr jedoch Sinus-Werte, die alle Grenzen sprengen. Z.B. sin(5E+19)=5E+19. Sprich der SInus kann diese Zahlen offenbar nicht mehr verarbeiten.
Gibt es nun dabei eine Beschränkung des Zahlenbereichs, den der Sinus (numerisch) verarbeiten kann? Oder gibt es vielleicht einen kleinen Trick dass man doch die richtigen Werte bekommt?

Freue mich auf eure Antworten und bedanke mich schonmal im Voraus

mfg

[edit=Matze]Sprache von "Delphi .NET" in "Delphi Win32" geändert. Das scheint eine "Win32"-Frage zu sein. MfG, Matze[/edit]

sirius 13. Okt 2009 17:48

Re: Sinus-Problem
 
:gruebel:
Delphi-Quellcode:
showmessage(floattostr(sin(20e15)));
--> -0,976...
Bei Win32 kein Problem.


Edit: Bei sin(5E+19) kommt bei mir 0 raus. Liegt wohl daran, dass hier die Genauigkeit von Fließkommazahlen zu Ende ist.

Socke_SG 13. Okt 2009 17:51

Re: Sinus-Problem
 
Klappt bei mir auch. Aber mit

Delphi-Quellcode:
procedure TFrmClient.Button1Click(Sender: TObject);
var i: integer;
begin
for i:=1 to 600 do begin
testmemo.lines.add(FloatToStr(sin((5E+19)*1)));
end;
end;
dem hier kommen falsche werte raus

Socke_SG 13. Okt 2009 17:56

Re: Sinus-Problem
 
Also bei mir kommt mit showmessage bei 5E+19 auch 5E19 raus.... seltsam

Genauigkeit ist gut...der Sinus ist periodisch. Versuchs mal mit anderen großen Werten z.B. 2E+24...kommt bei mir auch 2E+24 raus.

Wolfgang Mix 13. Okt 2009 17:58

Re: Sinus-Problem
 
Bei Sinus/Cosinus sind doch nur Werte von 0 bis 2 pi bzw. 0 .. 360 Grad interesssnt.
Alles andere sind Vielfache davon. Was willst Du mit so hohen Werten?

Gruß

Wolfgang

Socke_SG 13. Okt 2009 18:01

Re: Sinus-Problem
 
Es ist Teil eines Programms. Dabei sollen Frequenzwerte vorgegeben werden und. Mit diesen Frequenzen werden die Werte berechnet und graphisch dargestellt.
Eine Möglichkeit wäre vielleicht ein ganzzahliges Vielfaches vom Argument mit 2*PI zu mutliplizieren und das vom Argument abzuziehen. Nur irgendwie klappt das nicht, weil dieses ganzzahlige Vielfache den Integerwert übersteigt.

Wolfgang Mix 13. Okt 2009 18:05

Re: Sinus-Problem
 
Integerwerte machen bei Sinus/Cosinus sowieso keinen Sinn, denn Minimalwerte sind -1
und Maximalwerte sind +1.
[Edit] Alle wirklich interessanten Werte liegen dazwischen [/Edit]

Gruß

Wolfgang

Socke_SG 13. Okt 2009 18:06

Re: Sinus-Problem
 
Eben. Hmm... Dann schau ich mal ob ich das nicht irgendwie anders lösen kann

himitsu 13. Okt 2009 18:08

Re: Sinus-Problem
 
Bei so hohen Werten kann nie etwas rauskommen, denn wie schon von Wolfgang Mix gesagt wurde, interessiert nur der untere Anteil (die Wiederholungen von 2*PI).

Und da selbst beim größten Fließkommatypen nur 19-20 signifikante Stellen existieren, ist der wichtige Anteil immer praktisch nicht existent!

Wolfgang Mix 13. Okt 2009 18:11

Re: Sinus-Problem
 
Das Problem scheint eher ein elektrotechnisches zu sein.
Mach' Dich 'mal bitte über Frequenz und Periodendauer schlau.

Gruß

Wolfgang


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 Uhr.
Seite 1 von 2  1 2      

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