pavlo94
23.12.2013, 15:12:03
Witam!!
To mój 1. temat na forum. Szukałem trochę tutaj i ogólnie w Google, ale niestety nie znalazłem odpowiedzi na mój problem.
Chciałbym, aby w mojej aplikacji pierwiastki były obliczane nie tak jak normalnie przy użyciu funkcji sqrt(). Nie chcę miejsc dziesiętnych. Ale chcę jednak, aby wartość była dokładna.
Czyli chcąc wyciągnąć pierwiastek z np. 8, chciałbym, aby końcowym wynikiem było 2 pierwiastki z 2, a nie pierwiastek z 2.8284271247462. Chodzi mi o takie rozwiązanie jak w WolframAlpha.
Liczę na pomoc, z góry dzięki.
Kshyhoo
23.12.2013, 15:24:58
function mojesqrt($x) {
$precyzja = $x * 0.0001;
$polowa = $x/2;
$polowa2 = $polowa*$polowa;
while (abs($x-$polowa2)>$precyzja) { if ($polowa2>$x) $polowa = $polowa/2;
if ($polowa2<$x) $polowa = $polowa + $polowa/2;
$polowa2 = $polowa*$polowa;
}
return $polowa;
}
nospor
23.12.2013, 16:18:12
Cytat
To mój 1. temat na forum
Zacznij prosze wiec zwracac uwage gdzie zadajesz pytania. Problem z OOP nie ma zadnego zwiazku - przenosze
pavlo94
23.12.2013, 23:47:07
Kshyhoo - to niestety nie działa. Jedyne co robi, to wyświetla inny wynik, niż normalny pierwiastek.
Nospor - nie do końca wiedziałem, gdzie umieścić. Sorki za kłopot.
Kshyhoo
23.12.2013, 23:57:49
Cytat(pavlo94 @ 23.12.2013, 23:47:07 )

Kshyhoo - to niestety nie działa. Jedyne co robi, to wyświetla inny wynik, niż normalny pierwiastek.
"Nie działa"? Co Ci nie działa? Skrypt? Pierwiastek z 2 = 1.41421356237 i taki wynik osiąga. Nie czaję, co chcesz osiągnąć?
pavlo94
24.12.2013, 00:24:25
Chodzi mi o to, aby wyciągnąć czynnik przed pierwiastek. Czyli w przypadku pierwiastka z np. 8, byłyby to 2 pierwiastki z dwóch.
Damonsson
24.12.2013, 01:24:42
function irrationalsqrt($x) {
for ($i = $x; $i >= 1; $i--) {
if ($x % $i == 0
&& fmod(sqrt
($i), 1
) == 0
) { return sqrt($i) . ' pierwiastki z ' . $x / $i;
}
}
}
pavlo94
24.12.2013, 19:45:37
Dzięki, o to chodziło. Można zamknąć.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.