C++ Algorytm Newtona-Raphsona.

0

Witam,

Mam za zadanie napisać program wyznaczający pierwiastek kwadratowy dowolnej liczby. Mam do spełnienia dwa warunki:

  • z zadaną dokładnością obliczeń Eps
  • z zadaną ilością iteracji
    Musi on być wykonany na podstawie algorytmu newtona-raphsona

Tak wygląda interfejs:
<image> http://tinypic.com/r/bxuzd/7</image>

Proszę o jakieś wskazówki, nakierowanie od czego mam zacząć? Na początku rozumiem, że mam wyznaczyć środek przedziału o końcach całkowitych, w którym leży szukana wartość pierwiastka - do tego momentu algorytm rozumiem, jednak dalej? W ogóle. Proszę o pomoc.

0

algorytm jest prościutki - jak chcesz to mogę ci napisać aplikację konsolową za powiedzmy 50zł. Jak dodasz jeszcze ze 30zł to napiszę ci to w C# z interfejsem graficznym takim jak na tym zdjęciu.

Pisz na: [email protected]

0

Nie chodzi o to, że ktoś może mi napisać - sam chcę to zrobić. Aktualnie nie jestem w stanie, więc proszę o pomoc.

0

jak dasz 80zł to ci napiszę jak nie to figa

0

Napisałem wcześniej o co mi chodzi - zdania nie zmienię.

0

OK, poradziłem sobie z pierwszą opcją - dokładność iteracji. Została mi jeszcze dokładność obliczeń Eps - może mi ktoś powiedzieć co to jest?

0

W tym kontekście epsilon to jest różnica między wartością dokładną, a obliczoną. Jako że wartości dokładnej nie policzysz bo komputer obsługuje tylko skończoną precyzję, to możesz użyć jakiejś funkcji wbudowanej - jakieś sqrt() powinno wystarczyć.

0

evensah, serdecznie przepraszamy za naszego 'kolegę', który nie może zrozumieć, że ktoś woli się czegoś nauczyć i sam zrobić, niż jemu zapłacić. :(

0

Nic nie szkodzi.
Nie mogłem wymyślić jak zrobić w taki sposób jak mi poradzono powyżej i doczytałem, że Eps oznacza, iż robimy coś, aż dostaniemy różnicę dwóch ostatnich wyników mniejszą od zadanej w edicie.

Wszystko ok, tylko jak odczytać dwie ostatnie pozycje? W tej opcji nie będę już potrzebował podawania dokładności iteracji tak?

0

Z tego co rozumiem powinieneś określić warunek stopu algorytmu uwzględniając epsilon i liczbę iteracji. Epsilon to różnica wartości oszacowanej od wartości rzeczywistej. Można wybrać sposób określania epsilona:

  1. różnica między dwoma ostatnimi wynikami,
  2. różnica od wartości rzeczywistej.
    Ze sposobem 1. nie ma problemu -- wystarczy porównać wyniki dwóch ostatnich iteracji. Z metodą 2. jest trochę trudniej. Po oszacowaniu x w danej iteracji należy podstawić go do wzoru funkcji, której pierwiastek szukasz, i wartość bezwzględna tej wartości jest epsilonem.

Kryteria stopu są przedstawione na Wikipedii: http://pl.wikipedia.org/wiki/Metoda_Newtona#Warunek_stopu

Sposób Wibowita z sqrt() nie jest najlepszy. Co do sposobu: wystarczy dodatkowa zmienna na poprzedni wynik i porównanie jej z wynikiem obecnym (dla kryterium odległości między przybliżeniami). Dla kryterium różnicy od wartości rzeczywistej nie potrzeba nawet dodatkowej zmiennej, jednak ten sposób jest bardziej kosztowny obliczeniowo (w każdej iteracji potrzeba obliczyć wartość funkcji). Dla pierwiastka kwadratowego z a metoda Newtona w rzeczywistości znajduje pierwiastek (miejsce zerowe) funkcji f(x) = x^2 - a -- po znalezieniu kolejnego przybliżenia x sprawdzasz tylko: abs(x*x - a) < epsilon.

1 użytkowników online, w tym zalogowanych: 0, gości: 1