Sprache: VB
Nun ich weiß das es bereits eine Funktion zum Wurzeln ziehen im Framework gibt aber ich wollte es auch als eigene Funktion veröffentlichen damit man sehen kann wie das ganze funktioniert.
Public Function SquareRoot(ByVal Expression As Double) As Double
Dim Number As Double = 1
Dim Tmp As Double = 0
For i As Long = 1 To CLng(Expression)
Number = 0.5 * (Number + (Expression / Number))
If Tmp = Number Then Return Number
Tmp = Number
Next
Return Number
End Function
Public Function SquareRoot(ByVal Expression As Double) As Double
Dim Number As Double = 1
Dim Tmp As Double = 0
For i As Long = 1 To CLng(Expression)
Number = 0.5 * (Number + (Expression / Number))
If Tmp = Number Then Return Number
Tmp = Number
Next
Return Number
End Function
Alte URL:
/snippet/quadratwurzel-ohne-sqrt-funktion-ziehen/314
Aus numerischer Sicht ist ein Vergleich mit = bei Gleitkommazahlen nicht unproblematisch – aufgrund der ungenauen Darstellung dieser Zahlen.
Besser wäre ein Vergleich der Art:
[code]
If (Abs(Tmp – Number) < epsilon) Then Return Number [/code] wobei epsilon für die Maschinengenauigkeit steht. Siehe auch http://dotnet-snippets.de/dns/maschinengenauigkeit-SID961.aspx
Public Function SquareRoot(ByVal Expression As Double, ByVal Potenz as Byte) As Double
Dim Number as Double
Number = Expression ^ (1/Potenz)
Return Number
End Function
Ich habs mal umgeschrieben, weil es sich für Wuzelooperationen einfach gut macht 😉
Eine Wurzel ist nichts anders als eine umgekehrte Potenzierung, also muss die Potenz nur negiert werden, dabei gilt, eine Potenz von 1 gibt den natürlichen Wert zurück, während Potenzen < 1 und > 0 die Wurzel darstellt. Somit hast Du nun eine klitze kleine Funktion und fundamentales mathematisches Wissen, um alle Potenzaufgaben zu lösen.
Harper
(Kryptographischer Wahnsinn in Zahlen und Worten)