Seite 2 von 2

Re: Mathematisches problem

Verfasst: 16.10.2009 20:08
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.

Re: Mathematisches problem

Verfasst: 17.10.2009 00:17
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

Re: Mathematisches problem

Verfasst: 17.10.2009 09:16
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.

Re: Mathematisches problem

Verfasst: 17.10.2009 15:39
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 ?

Re: Mathematisches problem

Verfasst: 17.10.2009 15:44
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.

Re: Mathematisches problem

Verfasst: 17.10.2009 15:56
von kob
Danke wede ich gleich ma ausprobieren.
Hast mein tollen starfield generator mit eingebauter
2ct 3D-Engine Gerettet !!!

Re: Mathematisches problem

Verfasst: 17.10.2009 16:13
von kob
Haha
Ich sag nur : "Beam me up scoty"
Leuft alles wie geschmiert Dank der Macros
Thx :praise:

Re: Mathematisches problem

Verfasst: 17.10.2009 17:24
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

Re: Mathematisches problem

Verfasst: 17.10.2009 17:30
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.