Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ЕОМ
Звіт
З лабораторної роботи № 6
з дисципліни:
"Алгоритми і методи обчислень "
Львів – 2014
Мета роботи:
Оволодіти методом Горнера, що використовується для обчислення значення многочлену, записаного у вигляді суми одночленів.
Теоретичні відомості
Схе́ма Го́рнера (або правило Горнера, метод Горнера) — алгоритм обчислення значення многочлену, записаного у вигляді суми одночленів, при заданому значенні змінної. Метод Горнера дозволяє знайти корені многочлену, а також обчислити похідні поліному в заданій точці. Схема Горнера також є простим алгоритмом для ділення многочлена на біном у вигляді . Метод названий на честь Вільяма Джорджа Горнера.
Опис алгоритму:
Дано многочлен :
.
Нехай потрібно обчислити значення даного многочлена при фіксованому значенні . Представимо многочлен в наступному вигляді:
.
Визначимо наступну послідовність:
…
…
Шукане значення . Покажемо, що це вірно.
В отриману форму запису підставимо і будемо обчислювати значення виразу, починаючи з внутрішніх дужок. Для цього будемо замінювати підвирази на :
Постановка задачі:
Обчислити многочлен, використовуючи схему Горнера.
Код програми:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "ukr");
cout << "Схема Горнера"<<endl;
int i, n, x, P;
cout << "Введiть порядок многочлена: " << endl;
cin >> n;
int *A = new int[n];
for (i = n; i >=0; i--)
{
cout << "Введiть коефiцiєнт одночлена: " << i<<" ";
cin >> A[i];
}
cout << "Многочлен:" << endl;
for (i = n; i >= 1; i--)
{
if (A[i]>0)
cout <<" + "<< A[i] << "*x^" << i;
if (A[i]<0)
cout << " - " << abs(A[i]) << "*x^" << i;
else
continue;
}
if (A[0]>0)
cout << " + " << A[i];
if (A[0]<0)
cout << " - " << abs(A[i]);
if (A[0] == 0);
cout << endl;
cout << "Многочлен за схемою Горнера:" << endl;
for (i = 0; i < n; i++)
cout << "(";
for (i = n; i >= 1; i--)
{
if (A[i]>=0)
cout << " + "<< A[i] << ")x";
if (A[i]<0)
cout << " - " << abs(A[i]) << ")x";
}
if (A[0] >= 0)
cout << " + " << A[i]<<endl;
if (A[0]<0)
cout << " - " << abs(A[i])<<endl;
cout << "Обчислення значення многочлена" << endl;
cout <<"Введiть х:" << endl;
cin >> x;
P = A[n];
for (i = n; i >= 1; i--)
{P = P*x + A[i - 1];}
cout << "Значення многочлена при х=" << x << " : " << P << endl;
return 0;
}
Результат виконання програми:
Рис.1. Результат виконання програми
Висновок: Виконуючи дану лабораторну роботу, я вивчив схему розкладу многочлена на одночлени за методом Горнера, та за допомогою нього навчився обчислювати значення многочлена.
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!