Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Liczby przed pierwiastkiem
Forum PHP.pl > Forum > PHP
pavlo94
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
  1. function mojesqrt($x) {
  2. $precyzja = $x * 0.0001;
  3. $polowa = $x/2;
  4. $polowa2 = $polowa*$polowa;
  5. while (abs($x-$polowa2)>$precyzja) {
  6. if ($polowa2>$x) $polowa = $polowa/2;
  7. if ($polowa2<$x) $polowa = $polowa + $polowa/2;
  8. $polowa2 = $polowa*$polowa;
  9. }
  10. return $polowa;
  11. }
  12.  
  13. echo "wbudowane: ";
  14. echo sqrt(111);
  15. echo " moje: ";
  16. echo mojesqrt(111);
nospor
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
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
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
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
  1. function irrationalsqrt($x) {
  2. for ($i = $x; $i >= 1; $i--) {
  3. if ($x % $i == 0 && fmod(sqrt($i), 1) == 0) {
  4. return sqrt($i) . ' pierwiastki z ' . $x / $i;
  5. }
  6. }
  7. }
  8.  
  9. echo irrationalsqrt(8);
pavlo94
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.