obliczanie wartości wielomianu... (Turbo Pascal lub Delph

0

Witam!
Od dwóch dni siedzę nad zadaniem z informatyki i nie mogę dojść, jak je wykonać. Mam napisać program w Turbo Pascalu lub Delphi, który obliczałby wartości wielomianu dowlonego stopnia (n) dla dowolnego argumentu [schemat i algorytm Hornera].

Chodzi tu o zastosowanie Twierdzenia Hornera:
Liczba mnożeń i liczba dodawań przy obliczaniu wartości wielomianu stopnia n dla dowolnej wartości jest równa stopniowi wielomianu n.

Od razu mówię, że gdy to zobaczyłem w zeszycie u kumpla to mnie zatkało. Np. nie rozumiem w ogóle, czym jest tu z.
Teraz cytuję zawartość notatki z tego zeszytu:

Dane:
n- stopnień wielomianu (nieujemna liczba całkowita)
a0, a1, a2, ... , an - współczynniki wielomianu
z - wartość argumentu

Wynik:
wartość wielomianu stopnia n dla argumentu x:=z

Krok 1:
przyjmij współczynnik wielomianu przy najniższej potędze za początkową wartość, czyli przypisz y:=a0 (y- zmienna pomocnicza)

Krok 2:
n razy oblicz wartość dwumianu y:=y*z+a0 , dla kolejnych współczynników wielomianu (i=1,2,3,...,n , gdzie i oznacza zmienną, po której odbywają się działania - zmienna iteracyjna).

[tego kroku 2 wcale nie kapuję]

Jest jeszcze algorytm:
dane problemu ->
dane wejściowe ->
niech: i:=0 , y:=a0 ->

czy i=n?
tak -> koniec programu
nie - >
niech: i:=i+1 , y:=y*z+a0
i tu jest pętla: czy i=n?


Cały algorytm, ale zupełnie nie rozumiem owego y:=y*z+a0. Po co to? I jak to w ogóle rozpisać?
Zacząłem pisać w TP, ale na pobieraniu danych (n i kolejne współczynniki aż do an się skończyło).
Czy ktoś mógłby mnie poratować, bo ja już nie wiem, co mam robić???

Za pomoc będę bardzo wdzięczny
Pozdrawiam

0

Rozwiązanie w Delphi ;) :
uses Math;

Poly(TablicaZeWspolczynnikamiWielomianu, WartoscDlaKtorejLiczymy);

:)

A teraz wygląd funkcji Poly, jakbyś nie miał modułu Math:

function Poly(const X: Extended; const Coefficients: array of Double): Extended;
{ Horner's method }
var
  I: Integer;
begin
  Result := Coefficients[High(Coefficients)];
  for I := High(Coefficients)-1 downto Low(Coefficients) do
    Result := Result * X + Coefficients[I];
end;

Wszystko zrozumiałe? Schemat Hornera jest genialny w swej prostocie. Nie wiedziałem, że można tak skomplikować jego tlumaczenie :)

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