Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: wzór Vite'a
Forum PHP.pl > Inne > Hydepark
KotWButach
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.  
Crozin
1. $delta == 0 - dla ogromnej części poprawnych (matematycznie) danych ten warunek nie zostanie spełniony. klik1, klika2.
2. To są wzory Viet'a: , nie wiem po co w ogóle są Ci one tutaj potrzebne. Chyba, że chcesz na podstawie jednego pierwiastka i argumentów równania wyliczyć drugi pierwiastek - ale to przecież wymaga przekształceń równań na poziomie podstawówki...
KotWButach
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.
solificati
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 ...
KotWButach
solificati dziękuję ci za dosystematyzowanie mojej wiedzy z teoretycznej.

Tak zaimplementowanie całek przede mną mam czas do 17.11 więc z palcem w .... mam nadzieję że dam radę. Tylko nie rozumiem jak mam to zrobić....

Ok mamy całkę liczoną od zera to powoduje duży błąd.

By to ominąć liczymy od górnej granicy w dół czyli od 30 do 1. I tu pojawia się pytanie skąd pobrać całkę n=30 a no stąd że jest to ciąg zbieżny zatem przyjmujemy że

n=30 == n = 31

I tu moja wiedza się skończyła biggrin.gif
maziak
Nie rozumiem gdzie leży problem z obliczaniem całki. Jak mógłbyś, to rozwiń, proszę. Z czego bierze się (ąż taki duży) błąd?
Chodzi o tzw. całkę Riemanna tj. obliczenie pola powierzchni pod krzywa, czy o cos innego?
KotWButach
błąd bierze się ze zbyt krótkiej mantysy.

Ale proszę bardzo.

już Y4 = 1/4 - 5Y3 co w przybliżeniu da nam -0,165 co oznacza że jest to absurd.

Strona 23 Bjorck, Daglquist - Metody Numeryczne.

Dlaczego błąd?
Otóż wzór rekurencyjny całki brzmi.

Yn + 5Yn-1 = 1/n

Widać zatem że Yn-1 jest mnożony razy 5 <-- to jest właśnie nasz błąd w kolejnych krokach

Oczywiście odpowiedź na to zagadnienie znajduje się na stronie 23 więc pozwolicie że nie będę przepisywał tutaj tej leciwej już księgi smile.gif Komu zależy ten sobie poszuka.
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.