Автор Тема: Вычисление полинома по схеме Горнера(Pascal)  (Прочитано 13579 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн 00884

  • Пользователь
  • **
  • Сообщений: 41
    • Просмотр профиля
Дана вроде бы стандартная задача, на вычисление суммы, но портит ее то, что надо вычислить ее по схеме Горнера, которую я как не пытался понять, уже 3 день не могу(
Так вот сама задача:
Вычислить значение полинома по схеме Горнера по заданному массиву одномерному массиву размерностью 10, x выбрать произвольно:

\( y=\sum_{k=0}^{n}{a}_{k}*{x}^{k} \)

Чтобы не думали, что я просто лентяй, не желающий учиться, приложу программу написанную НЕ по схеме Горнера. Еще раз повторю, что сложность вся состоит именно в этом.
Код Pascal
 Program Lab13;
Uses
  CRT;
Const
  nmax=100;
Var
  a: array[0..nmax] of integer;
  k, n:integer;
  x, s, y:real;
Begin
  CLRSCR;
  Randomize;
  Writeln('Введите размер массива');
  Read(n);
  For k:=1 to n do
    Begin
      a[k]:=random(100);
      write(a[k],' ');
    End;
  x:=random(100);
  Writeln;
  Writeln(x:4:2);
  y:=0;
  For k:=0 to n do
    Begin
      s:=a[k]*exp(ln(x)*k);
      y:=y+s;
      s:=0;
    End;
  Writeln('y=',y:4:2);
  Readkey;
End.

Оффлайн Данила

  • Глобальный модератор
  • *****
  • Сообщений: 1657
  • Математик-экстрасенс
    • Просмотр профиля
Re: Вычисление полинома по схеме Горнера(Pascal)
« Ответ #1 : 15 Февраля 2011, 23:01:31 »
 знаю только схему Горнера для понижения порядка многочлена ,зная корень.но тут ее применения не вижу.
напишите что там есть у вас по ней,может поможет.
Просьба не кидать мне в ЛС Ваши задания...создаем тему,пишем свое задание,наработки\идеи...полностью и нахаляву ничего не решаю

Вам в помощь:
∫ ¼ ½ ¾ ⅓ ⅔ ⅛ ⅜ ⅝ ⅞ ² ³ ± ~ ‰ ∞ √ ∑ ∆ ℮ ∩ ≡ ≤ ≥ ≈ ∩

Оффлайн testtest

  • Старожил
  • ****
  • Сообщений: 376
    • Просмотр профиля
Re: Вычисление полинома по схеме Горнера(Pascal)
« Ответ #2 : 16 Февраля 2011, 18:06:38 »
тебе просто надо понять рекурсию. впрочем, чтобы это сделать, надо понять рекурсию.
суть схемы горнера, насколько я понял из википидии, состоит в том, что многочлен раскладывается в последовательность \( P(x) = a_0 + x(a_1 + x(a_2 + \cdots x(a_{n-1} + a_n x) \dots)) \), после чего вычисляется рекурсивно умножением на \( x \) и прибавлением очередного коэффициента.
думаю, она была возвращена к жизни хипарями из MIT, они любили рекурсию.
тут всё просто.
Пусть многочлен \( P(x) = b_0 + b_1x + b_2x^2 + \dots + b_nx^n \). Очевидно, \( a_n \) пройдет все скобки (при раскрытии), просто умножаясь на \( x \) т.е. будет равен \( b_n \). Мыслуя таким образом, заключаем, что \( b_{n-1} = a_{n-1} + a_nx, ~~~b_{n-2} = a_{n-2} + \left(a_{n-1} + a_nx\right)x \) ну и т.д., о чем кстати там же в википедии написано.
последовательность эта обращается очень просто по правилам арифметики:
\( \begin{align}
& a_n = b_n,\\
& a_{n-1} = b_{n-1} - b_nx,\\
& a_{n-2} = b_{n-2} - b_{n-1}x,\\
& \dots,\\
& a_{n-k} = b_{n-k} - b_{n - k + 1}x,\\
& \dots
\end{align}
 \)

вот, вычисляешь все \( a_i \), потом начиная с конца массива \( a \) идешь, и сначала прибавляешь \( a_i \), потом умножаешь на \( x \). после прибавления нулевого элемента из цикла выходишь. в сумме получишь значение многочлена.

--------
странно, фигня какая-то. попробовал вычислить по своему же алгоритму - не получил ответа.
зато вот так получилось:
пусть коэффициенты 1, 2, 3, 4 и x = 8.
\( \begin{align}
1 + 2 \cdot 8 + 3 \cdot 64 + 4 \cdot 512 = 2257\\
1 + 8 \cdot (2 + 3 \cdot 8 + 4 \cdot 64) = 2257\\
1 + 8 \cdot (2 + 8 \cdot (3 + 4 \cdot 8)) = 2257
\end{align}
 \)

в чем прикол?
« Последнее редактирование: 16 Февраля 2011, 18:34:22 от testtest »

Оффлайн Nataniel

  • Старожил
  • ****
  • Сообщений: 409
    • Просмотр профиля
Re: Вычисление полинома по схеме Горнера(Pascal)
« Ответ #3 : 17 Февраля 2011, 16:35:09 »
На сколько я понимаю здесь все проще: никакие системы не нужны

readln(x);
readln(n);
S:=a[1];
for i=2 to n do
begin
S:=x*(a+S)
end;
writeln(S);

 

Вычисление числа пи, алгоритм подсчета с нужной точностью

Автор AntonResl

Ответов: 4
Просмотров: 4388
Последний ответ 03 Октября 2011, 20:01:50
от AntonResl
Вычисление по формуле, согласно норме матрицы

Автор drongoo

Ответов: 5
Просмотров: 6977
Последний ответ 09 Мая 2010, 06:36:20
от drongoo
Как в паскале организовать вычисление 100 факториал?

Автор bifshtex

Ответов: 2
Просмотров: 5686
Последний ответ 28 Марта 2010, 17:35:06
от bifshtex
Крамер. Вычисление определителей.

Автор Lvenke

Ответов: 1
Просмотров: 4821
Последний ответ 04 Мая 2011, 22:48:42
от Selyd
Помогите в составлении программы на Turbo Pascal,плиз!срочно!

Автор Ymni4ka

Ответов: 1
Просмотров: 5987
Последний ответ 03 Ноября 2010, 09:27:22
от testtest