[Algorytmy][Java] Wartość wielomianu w punkcie

mistrz23
Użytkownik
Użytkownik
Posty: 52
Rejestracja: 18 mar 2013, o 15:14
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Podziękował: 2 razy

[Algorytmy][Java] Wartość wielomianu w punkcie

Post autor: mistrz23 »

(a) Zaprojektuj algorytm funkcji w języku java, która na podstawie tablicy zawierającej współczynniki pewnego
wielomianu \(\displaystyle{ W}\) oblicza wartość \(\displaystyle{ W(x)}\) tego wielomianu w zadanym punkcie \(\displaystyle{ x}\).
Wymagania szczegółowe:

- funkcja ma mieć dokładnie dwa argumenty: liczba rzeczywista (punkt \(\displaystyle{ x}\)) i tablica liczb
rzeczywistych (współczynniki wielomianu \(\displaystyle{ W}\) ),
- zakładamy, że tablica współczynników ma długość co najmniej 1 i zawiera kolejno współczynniki od \(\displaystyle{ a_{n}}\)
przy\(\displaystyle{ x^{n}}\)
do \(\displaystyle{ a_{0}}\)
(wyraz wolny),
- funkcja ma zwracać liczbę rzeczywistą (wartość wielomianu w zadanym punkcie), funkcja
niczego nie wypisuje!
Zapisz nagłówek, algorytmdziałania w postaci schematu blokowego i listę zmiennych lokalnych
z krótkim opisem znaczenia każdej zmiennej.
(b) Zaprojektuj algorytm programu, który dla ustalonego \(\displaystyle{ n \ge 0}\) pobiera od użytkownika współczynniki pewnego wielomianu stopnia n, zapisuje je w tablicy, a następnie oblicza wartość
tego wielomianu w wybranych przez użytkownika punktach.
Wymagania szczegółowe:
- należy wyświetlić informację o tym do czego służy program,
- liczba naturalna \(\displaystyle{ n \ge 0}\) pobierana jest od użytkownika - należy wymusić podanie poprawnej liczby,
- program ma pobierać od użytkownika liczby rzeczywiste \(\displaystyle{ a_{n},...,a_{0}}\)
na bieżąco wpisując je do odpowiedniej tablicy,

- po utworzeniu tablicy z współczynnikami przechodzimy do liczenia wartości wielomianu
w zadanych punktach,
- użytkownik może podać dowolną ilość punktów,
- za każdym razem program pyta użytkownika czy chce podać nową liczbę, użytkownik
może wybrać z klawiatury Y lub N,
- jeśli użytkownik wybierze Y, należy pobrać wartość x, obliczyć wartość wielomianu w
tym punkcie i wyświetlić odpowiedni komunikat,
- jeśli użytkownik wybierze N, program kończy działanie, wyświetlając komunikat końcowy,
- do obliczania wartości wielomianu należy wykorzystać funkcję z punktu (a).
Ostatnio zmieniony 16 maja 2013, o 21:52 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
Magnum23
Użytkownik
Użytkownik
Posty: 25
Rejestracja: 26 gru 2012, o 12:38
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 1 raz
Pomógł: 4 razy

[Algorytmy][Java] Wartość wielomianu w punkcie

Post autor: Magnum23 »

W czym problem? Schemat Hornera znasz?
mistrz23
Użytkownik
Użytkownik
Posty: 52
Rejestracja: 18 mar 2013, o 15:14
Płeć: Mężczyzna
Lokalizacja: Olsztyn
Podziękował: 2 razy

[Algorytmy][Java] Wartość wielomianu w punkcie

Post autor: mistrz23 »

Niestety ale nie znam
Magnum23
Użytkownik
Użytkownik
Posty: 25
Rejestracja: 26 gru 2012, o 12:38
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 1 raz
Pomógł: 4 razy

[Algorytmy][Java] Wartość wielomianu w punkcie

Post autor: Magnum23 »

Opisów na google tego algorytmu jest multum wraz z implementacjami w Javie pewnie tez sie znajdzie, ale jak zrozumiesz sam algorytm to i go zaimplementujesz w swoim języku programowania

mamy wielomian:

\(\displaystyle{ 2x^{3}+3x^{2}+5x+4}\)
obliczajac standardowo jego wartosc podstawiajacza x jakas liczbe np 2 w tym celu musimy wykonac 6 mnożeń i 3 dodawania jak sobie rozpiszesz to to zauwazysz, a poniewaz operacja mnozenia zajmuje procesorowi troche więcej czasu to np dla wielomianu stopnia 70 tych mnozen nam sie juz uzbiera dlatego jest lepszy sposob obliczania wartosci wielomianu mianowicie wyciągamy sobie x przed nawias:
\(\displaystyle{ x(2x^{2}+3x+5)+4}\)
\(\displaystyle{ x(x(2x+3)+5)+4}\)

jak widać juz mamy tylko 3 mnożenia i trzy dodawania
Teraz troche o implementacji poniewaz stopień wielomianu nie jest znany a od tego zalezy ilosc wspołczynnikow wielomianu wiec wspołczynniki wielomianu bedziesz przechowywał w tablicy, ja zrobie to na funkcji w c++ moja funkcja bedzie pobierała 3 parametry tj stopień wielomianu, tablice wspołczynnikow i wartosc argumentu dla ktorego bedziemy liczyc wartosc wielomianu a tak wygląda implementacja funkcji w C++

Kod: Zaznacz cały

float Horner(int k,float tablica_wspolczynnikow[], float x)
{
  int i;
 float wartosc=tablica_wspolczynnikow[0];
for(i=1;i<k+1; i++)
wartosc=wartosc*x+tablica_wspolczynnikow[i];
return wartosc;
}
Teraz implementujesz algorytm w Javie ze schematem blokowym tez mysle nie powinno byc problemu
ODPOWIEDZ