Mathematisches problem

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Mathematisches problem

Beitrag von STARGÅTE »

@Little John

Ja mir ist bewusst das ArcTan als Definitionsmenge auch nur die ReellenZahlen hat (also ohne undendlich)

Aber ArcTan hat halt ein Grazwert im Unendlichen von PI/2 der jedoch nie angenommen wird.
Tan(PI/2) ist auch nicht definiert, hat aber auch kein Granzwert, weil dieser von links und rechts unterschiedlich ist!

@kob

Ja, das nicht, aber auch PB betrachtet Unendlich als eine Art Grenzwert. und nicht als "unbekanntes Objekt".

>"wichtig ist hat bei komplexen rechnungen , das man den zahlenbereich im entliche bereich hält"
Ja das liegt aber daran das man sich einem Grenzwert im Komplexen nicht nur von 2 Seiten nähren kann (wie im reellen) sonden von "allen" (unendlichvielen) seiten. damit gibt es nicht nur ein Unendlich, wie im rellen.

@DarkDragon

Jo aber wenn man nur LONGs oder so hat reicht da auch das -#MaxLong zb.
und wenn man wirklich Floats/Doubles hat, dann geht das auch nur lolange gut, wie es bei der Variable kein OverFlow gibt:

Code: Alles auswählen

Infinity.d = 1 : Infinity / 0

For n = 0 To 5
 If Infinity > Pow(10,n*100)
  Debug "10^"+Str(n*100)+" < Infinity" 
 Else
  Debug "10^"+Str(n*100)+" >= Infinity" 
 EndIf
Next
Vondaher stimmt das schon, man sollte nicht mit Unendlich rechnen. Aber die Funktionen in PB haben fast alle ein Wert bei Definitionslücken.
wie eben auch Log(0) in PB -Infinity ergibt, was ja als Grenzwert stimmt.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Mathematisches problem

Beitrag von NicTheQuick »

Die Art wie Fließkommazahlen funktionieren, wurde nicht von PB neu erfunden, sondern das ist nach einem Standard definiert, den fast jede Programmiersprache nutzt, weil der Prozessor so mit ihnen umgeht. Siehe Gleitkommazahl

Dabei gibt es folgende Sonderwerte:
-0.0: Geschieht beim Abrunden einer nach dem Absolutbetrag zu kleinen negativen Zahl, die nicht mehr als Mantisse und Exponent darstellbar ist.
+0.0: Ähnlich wie bei -0.0
+Unendlich: z.B. 1.0/0.0
-Unendlich: z.B -1.0/0.0
NaN (Not a Number): z.B. Sqrt(-1), 0.0/0.0, Unendlich - Unendlich

Nachzulesen hier: IEEE 754
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Mathematisches problem

Beitrag von DarkDragon »

Hallo,

@STARGATE:
Nein ich sehe eher mit Ganzzahlen ein Problem, nicht aber mit Fließkommazahlen. Denn bei Ganzzahlen stört der Overflow. Bei Fließkommazahlen gibt es keinen bzw da wird eben jenes Infinity ausgespuckt. Man sollte mit unendlich rechnen hab ich gesagt, nicht man sollte nicht damit rechnen ;-) . Denn das ist so gewollt, dass man das tut. Wie jetzt bei meinem Beispielquelltext: das erste Beispiel ist besser als das zweite.
NicTheQuick hat geschrieben:Die Art wie Fließkommazahlen funktionieren, wurde nicht von PB neu erfunden, sondern das ist nach einem Standard definiert, den fast jede Programmiersprache nutzt, weil der Prozessor so mit ihnen umgeht. Siehe Gleitkommazahl

Dabei gibt es folgende Sonderwerte:
-0.0: Geschieht beim Abrunden einer nach dem Absolutbetrag zu kleinen negativen Zahl, die nicht mehr als Mantisse und Exponent darstellbar ist.
+0.0: Ähnlich wie bei -0.0
+Unendlich: z.B. 1.0/0.0
-Unendlich: z.B -1.0/0.0
NaN (Not a Number): z.B. Sqrt(-1), 0.0/0.0, Unendlich - Unendlich

Nachzulesen hier: IEEE 754
Hab ich doch schon gesagt aber danke fürs ausweiten. Das hängt nicht von der Programmiersprache ab sondern von der FPU, falls es eine gibt.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

Re: Mathematisches problem

Beitrag von kob »

Ich will ma kurz vom thema abweichen.
Mir ist gestan etwas aufgefallen :

Code: Alles auswählen

Structure POINT3D
x.l
y.l
z.l
EndStructure

Macro DrawPoint(Point.POINT3D)

EndMacro
PB Sag da zu mir : Syntax error .
Ich finde das doof , das PB Meine POINT3D Structure nicht als
ArgumentTyp zuläst >_< . Es gibt ja viele möglichkeiten wie man dieses
problem umgehen kann , aber es ist doch ziemlich doof. Gibt es eine möglichkeit
das man das doch machen kann ?
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Mathematisches problem

Beitrag von DarkDragon »

kob hat geschrieben:Ich will ma kurz vom thema abweichen.
Mir ist gestan etwas aufgefallen :

Code: Alles auswählen

Structure POINT3D
x.l
y.l
z.l
EndStructure

Macro DrawPoint(Point.POINT3D)

EndMacro
PB Sag da zu mir : Syntax error .
Ich finde das doof , das PB Meine POINT3D Structure nicht als
ArgumentTyp zuläst >_< . Es gibt ja viele möglichkeiten wie man dieses
problem umgehen kann , aber es ist doch ziemlich doof. Gibt es eine möglichkeit
das man das doch machen kann ?
In Macros gibt es doch keine Typen meines Wissens. Du musst es einfach so verwenden:

Code: Alles auswählen

Structure POINT3D
x.l
y.l
z.l
EndStructure

Macro DrawPoint(Point)
  Debug Point\x
  Debug Point\y
  Debug Point\z
EndMacro

Define pt.POINT3D

pt\x = 1
pt\y = 2
pt\z = 3

DrawPoint(pt)
Der Compiler ersetzt dann jegliches Vorkommen von dem Wort "Point" im Makro mit "pt" und dann wird DrawPoint(pt) mit dem Resultat des vorherigen Ersetzens ersetzt.

Bei Prozeduren halt den Pointer dann verwenden.
Zuletzt geändert von DarkDragon am 17.10.2009 17:31, insgesamt 1-mal geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

Re: Mathematisches problem

Beitrag von kob »

Danke wede ich gleich ma ausprobieren.
Hast mein tollen starfield generator mit eingebauter
2ct 3D-Engine Gerettet !!!
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
Benutzeravatar
kob
Beiträge: 116
Registriert: 01.01.2008 02:02
Computerausstattung: 2x 2.4 GHz Amd Cpu | Geforce N9600GT OC |2.5GB Ram |Windows 7 Ultimate
Wohnort: Fulda

Re: Mathematisches problem

Beitrag von kob »

Haha
Ich sag nur : "Beam me up scoty"
Leuft alles wie geschmiert Dank der Macros
Thx :praise:
Wenn sie weich werden bringt Pandora sie um und scheisst sie aus bevor sie irgend etwas merken.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7032
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Mathematisches problem

Beitrag von STARGÅTE »

so wäre es richtig:

Code: Alles auswählen

Structure POINT3D
x.l
y.l
z.l
EndStructure

Macro DrawPoint(Point)
  Debug Point\x
  Debug Point\y
  Debug Point\z
EndMacro

Define pt.POINT3D

pt\x = 1
pt\y = 2
pt\z = 3

DrawPoint(pt) 
Der Parameter von macro muss ja auch im Macro selber vorkommen, sonst wird da nix ersetzt
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Re: Mathematisches problem

Beitrag von DarkDragon »

STARGÅTE hat geschrieben:Der Parameter von macro muss ja auch im Macro selber vorkommen, sonst wird da nix ersetzt
Klar, weiß ich (CTRL+V fault). Ich änder es oben.

[EDIT]
geändert.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Antworten