Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> wzór Vite'a
KotWButach
post 25.10.2012, 23:09:08
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 (1 - 6)
Crozin
post 25.10.2012, 23:46:26
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


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...

Ten post edytował Crozin 26.10.2012, 09:02:47
Go to the top of the page
+Quote Post
KotWButach
post 26.10.2012, 00:01:25
Post #3





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 26.10.2012, 10:58:13
Post #4





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
KotWButach
post 26.10.2012, 16:39:56
Post #5





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

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


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
Go to the top of the page
+Quote Post
maziak
post 4.11.2012, 01:01:06
Post #6





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

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


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?
Go to the top of the page
+Quote Post
KotWButach
post 4.11.2012, 01:39:25
Post #7





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

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


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.

Ten post edytował KotWButach 4.11.2012, 01:47:07
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 07:15