Форум программистов, компьютерный форум CyberForum.ru

Алгоритм схемы Горнера - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
TamTam
18 / 18 / 1
Регистрация: 28.12.2011
Сообщений: 176
04.01.2012, 00:59     Алгоритм схемы Горнера #1
Задача такова: необходимо посчитать Сумму произведения ((-1)^k)*(((x/2)^2k)/((k!)^2)), где k изменяеться от 1 до бесконечности.

Мною была написана программа на си++ по алгоритму:
1. S=0
2. k=1
3. S=((-1)^k)*(((x/2)^2k)/((k!)^2))
4. k=k+1
5.если k больше 10 в -3 спепени(например), вернуться на 3. иначе выход.

Однако преподователь потребовал, чтобы в вычислении использовалась схема Горнера. И хотя я знаю что это и могу все посчитать вручную, алгоритм для этого написать никак не получаеться. Подскажите кто что может.

Добавлено через 33 минуты
Суть схемы Горнера в том, что за скобки постоянно выносится общий множитель. Т.е. в моем случае:

((x/2)^2)*((-1)/(1!^2)+((x/2)^2)*(((-1)^2)/(2!^2))+((x/2)^2)*(((-1)^3)/(3!^2))+...

Рекурсию наблюдаю, а вот алгоритм..
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
04.01.2012, 01:08     Алгоритм схемы Горнера #2
Нужно домножать на следующий вынесенный множитель
TamTam
18 / 18 / 1
Регистрация: 28.12.2011
Сообщений: 176
04.01.2012, 01:13  [ТС]     Алгоритм схемы Горнера #3
Вынесеный множитель один и тот же. Или что вы имеете в виду?
NoMasters
Псевдослучайный
1737 / 1080 / 69
Регистрация: 13.09.2011
Сообщений: 3,093
04.01.2012, 01:27     Алгоритм схемы Горнера #4
Начинай изнутри, с члена с максимальным используемым k и домножай последовательно на вынесенные множители
TamTam
18 / 18 / 1
Регистрация: 28.12.2011
Сообщений: 176
04.01.2012, 15:32  [ТС]     Алгоритм схемы Горнера #5
Добавлено через 13 часов 26 минут
Может кому нибуть будет надо. Считает ф-цию Бесселя 1ого рода нулевого порядка через Горнера, где общий множитель - (x/2)^2

C++
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
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
 
int fact (int n)
{
  int i,res;
  for (i=1,res=1;i<=n;i++) res=res*i;
  return res;
};
 
 
int main()
{
    int  p, k, n, x, z;
 
cout << "Vvedi x: ";
cin >> x;
cout << "Vvedi k(max)>0: ";
cin >> k;
 
n =  ((-1)^k)/(fact(k)*2);
while(k>0)
{
   z = n*((x/2)^2);  
   k = k-1;
   p =  ((-1)^k)/(fact(k)*2);
   n = p+z;
}
 
cout << " " << n << endl;
 
getch();
 
return 0;
 
}
Yandex
Объявления
04.01.2012, 15:32     Алгоритм схемы Горнера
Ответ Создать тему
Опции темы

Текущее время: 10:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru