Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
1 / 1 / 0
Регистрация: 14.10.2009
Сообщений: 37
1

Напишите функцию, которая рассчитывает значение полинома степени N.

29.01.2010, 12:35. Показов 2348. Ответов 10
Метки нет (Все метки)

Напишите функцию, которая рассчитывает значение полинома степени N. Коэффициенты полинома заданы массивом вещественных чисел. Использовать схему Горнера.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
program n18;
uses crt;
type mas=array [1..10] of real;
var a:mas; i,n:integer; x:real;
 
function f(m:mas;s:integer; z:real):real;
var t:real; j:integer;
begin
t:=m[s+1];
for j:=s+1 downto 2 do
t:=m[j-1]+z*t;
f:=t;
end;
 
BEGIN
clrscr;
write('n='); readln (n);
for i:=1 to n+1 do
    begin
    write('a',i-1,'=');readln(a[i]);
    end;
write('x='); readln(x);
write('Значение полинома ',n,' степени равно ',f(a,n,x):0:3);
readln;
END.
Вот как то так, не уверен что тут реализована эта схема Горнера. считал вручную и по ней, результаты не сошлись. Помогите ее привести в нормальный вид и если не трудно прокоментить строчки а то я не бум бум(
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.01.2010, 12:35
Ответы с готовыми решениями:

Напишите программу, которая вводит натуральное число N и выводит на экран чётные положительные степени числа 2
Напишите программу, которая вводит натуральное число N и выводит на экран чётные положительные...

Напишите функцию, которая возвращает наименьшее из значений
Напишите функцию, которая возвращает наименьшее из значений |x-y|, |y-z|, |z-x|.

Напишите функцию, которая находит цифровой корень числа
Доброго времени суток, столкнулся с проблемой при написании программы ддля задачи: Напишите...

Напишите рекурсивную функцию, которая вычисляет длину строки
пожалуйста помогите написать программку к двум задаче в паскале Напишите рекурсивную функцию,...

10
Почетный модератор
64089 / 47498 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
29.01.2010, 14:45 2
Вот я немного по своему написал, считает правильно.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
uses crt;
type mas=array[0..10] of real;
function Gorner(a:mas;x:real;n:byte):real;
var f,s:real;
    i:byte;
begin
f:=1;
s:=a[n];
for i:=1 to n do
 begin
  f:=f*x;
  s:=s+a[n-i]*f;
 end;
Gorner:=s;
end;
var i,n:byte;
    f,s,x:real;
    a:mas;
begin
clrscr;
write('Введите n=');readln(n);
write('Введите x=');readln(x);
writeln('Введите ',n+1,' коэфф. многочлена степени ',n);
for i:=0 to n do
readln(a[i]);
write('S=',Gorner(a,x,n):0:5);
readln
end.
1
1 / 1 / 0
Регистрация: 14.10.2009
Сообщений: 37
29.01.2010, 14:56  [ТС] 3
Или я чего то не понимаю или ВЦ!. Ввожу n=2, x=5, и коефиценты 1,2,3.
Считается это: 1+5*(2+5*(3+5))=211. Программа же выдает 38.

В той что я выложил если мне не изменяет память выдает 86.
0
Почетный модератор
64089 / 47498 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
29.01.2010, 14:58 4
Wefast, Полином читается сначала, например 1*x^2+2*x+3=38.
0
1 / 1 / 0
Регистрация: 14.10.2009
Сообщений: 37
29.01.2010, 15:28  [ТС] 5
Ну эт если считать по обычному. Ну как ты записал. а по схеме Горнера считается то 1+5*(2+5*(3+5))=211.
Вот ссылка на вики:Ссылка

Добавлено через 20 минут
Ошибся подсчет по Горнеру будет: 1+5*(2+5*(3))=86

Добавлено через 57 секунд
Теперь по идее прога ту что я выложил работает нормально. Но почему полсчет по Горнеру и обычном подсчете отличается....
0
Почетный модератор
64089 / 47498 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
29.01.2010, 15:30 6
Цитата Сообщение от Wefast Посмотреть сообщение
подсчет по Горнеру будет: 1+5*(2+5*(3))=86
Это глупость, разберитесь.
0
1 / 1 / 0
Регистрация: 14.10.2009
Сообщений: 37
29.01.2010, 15:30  [ТС] 7
Все разобрался, при обычном подсчете будет не 1*x^2+2*x+3=38. а 3*x^2+2*x+1=86.

Добавлено через 20 секунд
Теперь бы кто нить откоментил прогу ту что моя
0
Почетный модератор
64089 / 47498 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
29.01.2010, 15:31 8
Wefast, Вы арифметику немного подучите, иначе до пенсии будете разбираться.
0
1 / 1 / 0
Регистрация: 14.10.2009
Сообщений: 37
29.01.2010, 15:36  [ТС] 9
особенно там где про функцию

Добавлено через 1 минуту
Цитата Сообщение от Puporev Посмотреть сообщение
Wefast, Вы арифметику немного подучите, иначе до пенсии будете разбираться.
Никакой отсебятины, вот тут дана формула и по ней подсчитал:Ссылка

Добавлено через 2 минуты
Цитата Сообщение от Puporev Посмотреть сообщение
Wefast, Вы арифметику немного подучите, иначе до пенсии будете разбираться.
Все перепроверил после Ваших слов, точно будет 86. При обычном подсчете А0 будет справа а А3 будет слева а не наоборот, в вашей программе именно наоборот считается.)
0
Почетный модератор
64089 / 47498 / 32734
Регистрация: 18.05.2008
Сообщений: 115,182
29.01.2010, 17:05 10
Вы так и не догнали суть.
Pascal
1
2
3
4
5
6
7
8
9
10
for i:=0 to n do//вводим коэффициенты по порядку как обычно пишем у вас 1,2,3
readln(a[i]);
......................................
f:=1;//x^0
s:=a[n];//начальная сумма=свободному члену=3
for i:=1 to n do
 begin
  f:=f*x;//увеличиваем степень х= x^1; x^2
  s:=s+a[n-i]*f;//добавляем к сумме х в данной степени * на коэффициенты с конца(n-i) +2x;+1x^2
 end;
Добавлено через 15 минут
Получится 1*x^2+2*x+3
0
1 / 1 / 0
Регистрация: 14.10.2009
Сообщений: 37
30.01.2010, 08:49  [ТС] 11
Ну то как считает Ваша программа понятно и она выдеет в данном случае 38. Но при подсчете полинома элементы записываются слева направо, т.е будет не 1,2,3 а 3,2,1. Т.е мы вписываем эти коэфиценты в одном порядке а считаются они в другом. И если считать как Вы написали то по Горнеру ничего не получится

Конечно, хотя это как воспринимать вводимые коэфиценты. И в каком порядке их подставлять в формулу по подсчету.

В любом случае большое спасибо.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.01.2010, 08:49

F = 10! Напишите программу, которая рассчитывает числовой коэффициент. Примите решение пока, повторите . с циклами
F = 10! Напишите программу, которая рассчитывает числовой коэффициент. Примите решение пока,...

Описать рекурсивную функцию pow, которая рассчитывает величину по формуле
Описать рекурсивную функцию pow (x, n) от натурального х (х не равно 0) и целого n, которая...

Составить программу, которая рассчитывает среднее арифметическое значение элементов массива и производит замену всех
Дана прямоугольная матрица размерности M x N, состоящая из целых чисел, которые автоматически...

Напишите функцию Substring, которая принимает строку s и возвращает подстроку
Напишите функцию Substring(string s, Integer stratind, Integer length):String, которая принимает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru