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

Вычисление значений многочлена по схеме Горнера методом сдваивания - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 5.00
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
20.01.2012, 18:55     Вычисление значений многочлена по схеме Горнера методом сдваивания #1
Ребят как задается реккурентное соотношение для функции?,
алгоритм вычисления по схеме горнера у меня есть, но нужно привести мою ф-ию сначала к реккурентному соотношеню потом к матрице и потом вбить из нее переменные в алгоритм.
Изображения
 
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2012, 18:55     Вычисление значений многочлена по схеме Горнера методом сдваивания
Посмотрите здесь:

C++ Рассчитать значение переменной по схеме Горнера
Программа нахождения корней многочлена методом хорд C++
C++ Вычисление корней многочлена
Вычисление значения многочлена C++
C++ Найти корень многочлена методом простой итерации
C++ Вычисление таблицы значений заданной функции для N значений X в заданном интервале
Вычислить выражение по схеме Горнера, без массивов C++
C++ Написание рекурсивной функции вычисления многочлена по схеме Горнера

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
whizzkey
7 / 7 / 0
Регистрация: 16.10.2010
Сообщений: 74
21.01.2012, 05:57  [ТС]     Вычисление значений многочлена по схеме Горнера методом сдваивания #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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <windows.h>
#include <stdlib.h>     // включение генератора случайных чисел
#include <time.h>               // получение первого случайного числа
#include <iostream.h>           // ввод-вывод
#include <conio.h>              // для включения ожидания ввода клавиши
#include <dos.h>                // для включения sleep()
#include <math.h>
#define N 20                    // степень многочлена
double x;                       // значение переменной
unsigned long long factorial(unsigned long long n)   // для вычисления факториала
{
    if (n == 0)
        return 1;
    else
        return n * factorial (n - 1);
}
 
struct arg                      // структура для передачи параметров
{
int l, r;                       // нижний и верхний номера 2х2=матрицы
double p, q;                    // коэффициенты первой строки матрицы
};
 
double a[N+1];                      // коэффициенты многочлена
DWORD WINAPI prod(void* s)      // функция потока
{
int i, l=((arg *)s) -> l, r=((arg *)s) -> r;
Sleep(random(0.2));             // случайная задержка
if (l == r)
{
((arg *)s) -> p = x*x;      // установка
((arg *)s) ->q = a[r];      // коэффициентов
}
else
{
arg *r1 = new arg, *r2 = new arg;
HANDLE H[2];                                    // дескрипторы потоков
r1 -> l = l; r1 -> r = (l + r + 1)/2 - 1;       // установка
r2 -> l = (l + r + 1)/2; r2 -> r = r;          // границ
H[0] = CreateThread(0,0,prod, (void *)r1, 0,0); // порождение
H[1] = CreateThread(0,0,prod, (void *)r2,0,0);  // потоков
for (i = 0; i < 2; i++)                             // ожидание выполнения
WaitForSingleObject(H[i],INFINITE);             // потоков
((arg *)s) -> p = (r1 -> p)*(r2 -> p);
((arg *)s) -> q = (r1 -> p)*(r2 -> q)+(r1 -> q);
delete r1; delete r2;
}
return 1;
}
 
void main()
{
int i,g,j;
double w=0, z, v,b;
for (i=0; i<=N; i++)
{
 
a[i] = 1/factorial(2*i+1) ;     // установка случайных коэффициентов
}
arg t;                          // объявление структуры параметров
for (x = 0; x < 10; x += 1)     // перебор значений х
{
t.l = 0; t.r = N;           // границы массива матриц
prod(&t);                   // вызов подпрограммы
cout << "\n Polynom value = " << t.q*x ;    // вывод
z = 0;
 
for (i = 0; i <= N; i++)                        // цикл для проверки
{
v = 1;
for (j = 0; j <i; j++) v = v*pow(x,2);
    // вычисление xi
z += x*v*a[i];                      // вычисление значения многочлена
}
cout << "== "<< z;                  // вывод значения для проверки
getch();                                // ожидание нажатия клавиши
}
}
Который расчитывает схему горнера для Название: горнеры.JPG
Просмотров: 978

Размер: 2.9 Кб

Что мне нужно поменять в нем чтобы рассчитывал мой многочлен?
Yandex
Объявления
21.01.2012, 05:57     Вычисление значений многочлена по схеме Горнера методом сдваивания
Ответ Создать тему
Опции темы

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