Частина тексту файла (без зображень, графіків і формул):
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Кафедра ЕОМ
Звіт
З лабораторної роботи № 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. Результат виконання програми
Висновок: Виконуючи дану лабораторну роботу, я вивчив схему розкладу многочлена на одночлени за методом Горнера, та за допомогою нього навчився обчислювати значення многочлена.