Seite 3 von 3

Verfasst: 04.01.2007 11:49
von dllfreak2001
jo wurde aber.

Verfasst: 04.01.2007 11:57
von DarkDragon
dllfreak2001 hat geschrieben:jo wurde aber.
Wo? Meinst du meine suxessive Approximation? Das ist doch nicht das was Kaeru meint.

Verfasst: 04.01.2007 16:41
von Karl
Um eine Wurzel zu ziehen, kann man auch das Heron-Verfahren anwenden (ist eine Methode aus der numerischen Mathematik), oder was meint ihr wie der Rechner das berechnet (ROMs gab es wohl früher in Taschenrechnern).

Gruß Karl

Verfasst: 04.01.2007 16:52
von DarkDragon
Karl hat geschrieben:Um eine Wurzel zu ziehen, kann man auch das Heron-Verfahren anwenden (ist eine Methode aus der numerischen Mathematik), oder was meint ihr wie der Rechner das berechnet (ROMs gab es wohl früher in Taschenrechnern).

Gruß Karl
So in etwa ist ja auch die Approximationsroutine die ich gezeigt hab.

Verfasst: 04.01.2007 18:21
von Karl
Nicht ganz, denn du verwendest POW und das soll ausgeschlossen sein. Erlaubt sind nur einfache Operationen ;-).

Aber Newton geht auch und hat eine schnellere Annäherung.

Gruß Karl

Verfasst: 04.01.2007 18:28
von DarkDragon
Karl hat geschrieben:Nicht ganz, denn du verwendest POW und das soll ausgeschlossen sein. Erlaubt sind nur einfache Operationen ;-).

Aber Newton geht auch und hat eine schnellere Annäherung.

Gruß Karl
Äh sorry, aber du missverstehst hier was: Wir wollen auf das R[T] von SQR[T] zurückkommen, nicht auf Pow. Egal: Dann halt mit nem eigenen Pow:

Code: Alles auswählen

#START_VALUE = $FFFFFFFF ; Einfach ein Startwert
#TOLLERANCE = 0.000001

Procedure.d MyPow(Val.d, Exp.l)
  Define k.l
  Define Result.d
  
  Result = Val
  For k=2 To Exp
    Result * Val
  Next k
  
  ProcedureReturn Result
EndProcedure

Procedure.d Wurzel(Val.d, Exp.l)
  Define Result.d = #START_VALUE
  Define Power.d = 0.0
  
  Repeat
    Power = MyPow(Result, Exp)
    If Power > Val + #TOLLERANCE
      Result * 0.5
    ElseIf Power < Val - #TOLLERANCE
      Result * 1.5
    Else
      Break
    EndIf
  ForEver
 
  ProcedureReturn Result
EndProcedure

Debug Wurzel(27, 3)
Was machts da jetzt für nen Unterschied? :freak:

Verfasst: 08.01.2007 11:22
von Karl
@DD: In der Berechnung gibt es keinen Unterschied (darf es ja auch nicht geben). Die historische Idee war ja nur, dass eine Wurzel nicht per se berechnet werden konnte und KGaman meinte, dass die interne Pow-Funktion sehr langsam ist. Mehr gab es nicht zu beanstanden ;-). Also stay cool.

Karl