Hey..wenn ich
[autoit]Sqrt(2)
[/autoit]mache bekomme ich ja die Wurzel zurück...aber wie mache ich das, dass ich die Wurzel auf 1000 nachkommastellen bekomme?
Hey..wenn ich
[autoit]Sqrt(2)
[/autoit]mache bekomme ich ja die Wurzel zurück...aber wie mache ich das, dass ich die Wurzel auf 1000 nachkommastellen bekomme?
MIt sqrt geht das glaub ich nicht. Dü müsstest dir selbst eine art funktion schriben z.b. so:
Wurzel aus 2= 2^(1/2)
mit ^(1/2) zieht man glaub ich die Wurzel, und da kannst du es dann auf so viele stellen runden wie du willst. Is nur die Frage wie weit Autoit die Wurzl berechnet.
mfg
Edit: Bin gerade drauf gekommen das Autoit anscheinend nur 14 stellen hinter dem Komma berechnt, also funk das auch nicht so ganz.
BigInt Rechnen gibts hier:
http://www.autoitscript.com/forum/index.php?showtopic=83529&view=findpost&p=597491
danke für den link..werds mir mal ansehen
Hier gibts die Erklärung der handschriftlichen Methode, welche auch sehr einfach in ein AutoIt-Script umzuwandeln sein sollte. Für die Multiplikation und Division großer Zahlen bietet sich die schon angesprochene BIGINT-UDF an.
Wie gesagt, die wurzel kann na ganz einfac berechnen indem man die Zahl aus der man die wurzel zeihen will hoch 1/2 für Quadratwurzel, hoch 1/3 für die 3. wurzel usw rechnet.
Das ist auch sehr leicht mit autoit zu verwirklchen nur muss man tortzdem mit bigint od sowas rechenen, da autoit nicht besonders weit inters komma rechnet.
mfg
Wie gesagt, die wurzel kann na ganz einfac berechnen indem man die Zahl aus der man die wurzel zeihen will hoch 1/2 für Quadratwurzel, hoch 1/3 für die 3. wurzel usw rechnet.
Und wo ist jetzt da der unterschied?
[autoit]MsgBox(0,"",Sqrt(2))
MsgBox(0,"",(2)^(1/2))
Hab mal das Heronverfahren nachgebaut.
#include "BigNum.au3"
ConsoleWrite(_Sqrt(2,2, 10,20 ))
[/autoit] [autoit][/autoit] [autoit]Func _Sqrt($num, $X0, $loops,$ID)
;Wurzelberechnung nach dem Heronverfahren
;num = Zahl aus der die Quadratwurzel gezogen werden soll
;X0 = Startwert (<>0)
;loops = Anzahl der Durchgänge (Heronverfahren)
;$ID =Anzahl Dezimalstellen
local $y = $X0, $t
for $i = 1 to $loops
$y = _BigNum_Div(_BigNum_Add($Y,_BigNum_Div($num, $Y,$ID)),2,$ID)
if $t = $y Then
ConsoleWrite( "Xn =" & $t & "= Xn+1 =" & $y & @CRLF)
return $y
endif
$t = $y
ConsoleWrite( $i & " " & $y & @CRLF)
Next
Return $y
endfunc
SEuBo: es ist keiner, weil die Sqrt funktion genau das macht was ich geschrieben ahbe, bin erst jetzt drauf gekommen das es das gleiche ist^^
mfg