Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wzór Vite'a
KotWButach
post
Post #1





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

Ostrzeżenie: (0%)
-----


Witam chciałbym się was zapytać czy to jest poprawne bo nie chce mi się wierzyć że komputer licząc tradycyjnie rypał by sie o tyle...

  1.  
  2. private function informatic($a, $b, $c)
  3. {
  4. // liczymy delte
  5. $delta = $b * $b - 4 * $a * $c;
  6.  
  7. if ($delta < 0)
  8. {
  9. $this->result['inf'][] = 'Rownanie nie posiada pierwiastków rzeczywistych';
  10. } elseif ($delta == 0)
  11. {
  12. $x1 = -$b / (2 * $a);
  13. $this->result['inf'][] = 'Rownanie posiada jeden pierwiastek rzeczywisty: ' . $x1;
  14. } else
  15. {
  16. if ($b > 0)
  17. {
  18. $x2 = (-$b - sqrt($delta)) / (2 * $a);
  19. $x1 = $x2 / $c;
  20. } else // b < 0
  21. {
  22. $x1 = (-$b + sqrt($delta)) / (2 * $a);
  23. $x2 = $x1 / $c;
  24. }
  25.  
  26. $this->result['inf'][] = 'Rownanie posiada dwa pierwiastki rzeczywiste: ' . $x1 . ' i ' . $x2;
  27. }
  28. }
  29.  


Ten post edytował KotWButach 25.10.2012, 23:09:23
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
KotWButach
post
Post #2





Grupa: Zarejestrowani
Postów: 361
Pomógł: 10
Dołączył: 8.02.2012

Ostrzeżenie: (0%)
-----


Już widzę błąd...

Dlaczego mi Vieta. Ponieważ licznie równania kwadratowego według znanych wszystkim wzorów jest dla niektórych danych algorytmem niestabilnym. Co oznacza że jest błędny.
Vieta chroni taki algorytm przed błędem.

Gorzej z całkami tam jak liczy się ciąg całek to na już 5 miejscu popełnia się błąd 5 do potęgi 5. Tak więc tutaj trzeba liczyć od góry w dół.


I dlatego się pytałem.

Ten post edytował KotWButach 26.10.2012, 00:04:03
Go to the top of the page
+Quote Post
solificati
post
Post #3





Grupa: Zarejestrowani
Postów: 26
Pomógł: 10
Dołączył: 17.03.2012

Ostrzeżenie: (0%)
-----


Cytat(KotWButach @ 26.10.2012, 01:01:25 ) *
Ponieważ licznie równania kwadratowego według znanych wszystkim wzorów jest dla niektórych danych algorytmem niestabilnym. Co oznacza że jest błędny.

Niestabilny nie znaczy błędny. Trzeba sobie tylko poradzić z niestabilnością. Poza tym niestabilność tutaj nie pochodzi z algorytmu a implementacji FPU. Z biblioteką arbitrary precision integers lub obsługą ułamków ten algorytm jest jak najbardziej w porządku.
Cytat
Vieta chroni taki algorytm przed błędem.

Te wzory mogą jedynie powiedzieć czy błąd obliczeń jest odpowiednio znaczący. Równie dobrze możesz podstawić pierwiastki do równania i sprawdzić czy wyjdzie zero.

Cytat
Gorzej z całkami tam jak liczy się ciąg całek to na już 5 miejscu popełnia się błąd 5 do potęgi 5. Tak więc tutaj trzeba liczyć od góry w dół.

A to już jest w ogóle ciekawe zdanie ...
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 03:33