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

Схема Горнера - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Матрица. Побочная диагональ http://www.cyberforum.ru/cpp-beginners/thread191652.html
Дана прямоугольная матрица. Определить является ли заданная матрица симметричной относительно побочной диагонали. Начало кода : #include "stdafx.h" #include <stdio.h> #include <conio.h> #include <time.h> #include <Windows.h>
C++ Дано число. Отбросить в нем все цифры, стоящие левее самой правой единицы. вообщем такое задание, "Дано число. Отбросить в нем все цифры, стоящие левее самой правой единицы." вроде легко, но я даже не знаю с чего начинать, может кто помочь код написать? :( http://www.cyberforum.ru/cpp-beginners/thread191644.html
Переменная в разных классах C++
Добрый день уважаемые гуру, у меня есть очень большая проблема. Есть исходники проги написаной на свизуал студии 6, состоят из большого числа сорцов, так вот какая проблема, в одном из сорцов есть переменная, как мне ей воспользоваться в другой части программы? И еще,пытался ее открыть в 10 студии-не открывает, пишет что не может переконвертировать некоторые файлы.
Вопрос по среде разработки эклипс C++
Как добавить существующие исходные файлы в проект?
C++ Произведение неположительных чисел http://www.cyberforum.ru/cpp-beginners/thread191630.html
Дана последовательность целых чисел {Aj} произвольной длины. Найти произве-дение неположительных чисел, наименьшее из неположительных чисел, и номер этого числа в последовательности. #include <stdio.h> #include <conio.h> main() { int j, mi, min, a, kol, pr; clrscr(); printf("zadaite dliny massiva(ne bolee 20 elementov) \n");
C++ Программа для нахождения сопротивления соединения При сопротевлении R1,R2,R3 соединены параллельно. Найти сопротивление соединения. Вот сам код программы подредактируйте его а то не могу понять ошибку. #include <iostream> int main() { double R1, R2, R3; double R; std::cout << "Enter R1: " подробнее

Показать сообщение отдельно
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
21.11.2010, 15:28     Схема Горнера
Ну рамки - формирование таблицы из плюсов, тире и вертикальных чёрточек, чтобы красиво было. Таблица, кстати, кривовато рисуется)))
А схема, на самом деле, элементарная)))
Она позволяет вычислять значения многочлена при заданном значении x = x0.
Пусть есть многочлен:

P_n(x) = a_n * x^n + a_(n - 1) * x^(n - 1) + ... + a_1 * x + a_0

(В нашей программе эти коэффициенты - a_n, a_(n - 1), ..., a_1, a_0 - элементы массива, степень многочлена тоже вводится)
Перепишем многочлен в более удобный для нас вид:

P_n(x) = a_0 + a_1 * x + a_2 * x^2 + ... + a_(n - 1) * x^(n - 1) + a_n * x^n

Теперь оставим a_0 за скобками, а из скобок (в которые возьмём всю оставшуюся часть многочлена) вынесем x:

P_n(x) = a_0 + x * (a_1 + a_2 * x + ... + a_(n - 1) * x^(n - 2) + a_n * x^(n - 1))

Как видно, в скобках остался многочлен меньшей на 1 степени, чем исходный, и в качестве свободного члена у него выступает a_1. Повторим с многочленом в скобках ту же операцию, т.е. оставим за скобками a_1, остальное возьмём в скобки (уже вторые для исходного многочлена) и вынесем за них x:

P_n(x) = a_0 + x * (a_1 + x * (a_2 + ... + a_(n - 1) * x^(n - 3) + a_n * x^(n - 2)))

Будем повторять эту процедуру, пока в самых внутренних скобках не получим многочлен первой степени, т.е. пока не добьёмся такого вида:

P_n(x) = a_0 + x * (a_1 + x * (a_2 + ... + x * (a_(n - 1) + a_n * x)...))

Теперь вопрос - начерта мы всё это делали)) Вот ответ: теперь мы легко можем вычислить значение исходного многочлена, не возводя ничего не в какие степени. Делается это просто. Сначала x0 подставляется в самый внутренний многочлен первой степени - в a_(n - 1) + a_n * x, и, соответственно, вычисляется значение этого многочлена. Пусть это будет b_(n - 1). Получим:

P_n(x) = a_0 + x * (a_1 + x * (a_2 + ... + x * (a_(n - 2) + x * b_(n - 1))...))

Т.е. мы уже на один шаг ближе к результату - скобок у нас стало на одну пару меньше. Повторяем предыдущий шаг с внутренним многочленом первой степени - с a_(n - 2) + x * b_(n - 1) - снова получаем результат - некоторое b_(n - 2). Подставив его в P_n(x), получим ещё более простой многочлен. Делаем так, пока не получим выражение вида a_0 + x * b_1, подставив в которое x0 и получим окончательный ответ - значение многочлена b_0 = P_n(x) в точке x0.

Не по теме:

Вообще говоря, вся прелесть схемы Горнера не в этом, а в простом вычислении результата деления двух многочленов, но сейчас не об этом)))

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