Kubikwurzel ziehen
- dllfreak2001
- Beiträge: 2925
- Registriert: 07.09.2004 23:44
- Wohnort: Bayern
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Wo? Meinst du meine suxessive Approximation? Das ist doch nicht das was Kaeru meint.dllfreak2001 hat geschrieben:jo wurde aber.
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.
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
Gruß Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
PB 5.X
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
So in etwa ist ja auch die Approximationsroutine die ich gezeigt hab.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
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.
-
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Ä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: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
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)

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.
@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

Karl
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X
PB 5.X