Вычмат8. ВЫЧМАТ8. Лабораторная работа 8 Интерполяция сеточных функций полиномами Выполнили студенты 2 курса, гр. 002201 Задорин Н. М гизатулин Г
Скачать 49.78 Kb.
|
ПСКОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ Факультет вычислительной техники и электроэнергетики Лабораторная работа №8 «Интерполяция сеточных функций полиномами» Выполнили: студенты 2 курса, гр. 0022-01 Задорин Н.М Гизатулин Г. Проверил: Трофимов В.М. г. Псков, 2019 г 1. Теоретическая часть Интерполяция сеточных функций полиномами Простейшая задача интерполирования заключается в следующем. На отрезке [a,b] задано n+1 точек x0, x1, …, xn, которые называются узлами интерполяции, и значения некоторой функции f (x) в этих точках: f (x0) = y0, f (x1) = y1, …, f (xn) = yn, (8.1) Требуется построить функцию F(x) (интерполирующая функция), принадлежащую известному классу и принимающую в узлах интерполяции те же значения, что и f (x). При использовании интерполяционной формулы Лагранжа функция F(x) является полиномом Ln (x) степени не выше n, который выражается следующей формулой: (8.2) или (8.3) Таким образом, для решения данной задачи необходимо организовать тройной циклический процесс, два цикла которого предназначены для вычисления одной точки полинома Ln(x). Используя интерполяционную формулу Лагранжа, вывести в виде таблицы значения функции f (x) для точек x с заданным шагом, если известны значения функции f (xi) в узлах xi. 2.Постановка задачи
3.Составление блок схемы. 4.Составление программы. #include #include #include #include #include using namespace std; int main() { double x0 = 4, xn = 18, h = 1, p = 1, Ln, s = 0; double x[8] = { 1.7,6,7.4,10.5,12.8,15,16.1,19.8 }; double y[8] = { 5.7,6.4,6.5,4.2,2.1,5,9.8,16.6 }; while (x0 < 19) { s = 0; for (int i = 0; i < 8; ++i) { p = 1; for (int j = 0; j < 8; ++j) { if (i != j) { p *= ((x0 - x[j]) / (x[i] - x[j])); } } s += y[i] * p; } cout << fixed << setprecision(5) << "x = " << x0 << fixed << setprecision(7) << " Ln(x) = " << s << endl; x0 += h; } //return 0; system("pause"); } 5.Результат вычислений программы. x = 4.00000 Ln(x) = 5.2478811 x = 5.00000 Ln(x) = 5.9257294 x = 6.00000 Ln(x) = 6.4000000 x = 7.00000 Ln(x) = 6.5451568 x = 8.00000 Ln(x) = 6.3173286 x = 9.00000 Ln(x) = 5.7081795 x = 10.00000 Ln(x) = 4.7610647 x = 11.00000 Ln(x) = 3.6185396 x = 12.00000 Ln(x) = 2.5702923 x = 13.00000 Ln(x) = 2.0705681 x = 14.00000 Ln(x) = 2.6941551 x = 15.00000 Ln(x) = 5.0000000 x = 16.00000 Ln(x) = 9.2715232 x = 17.00000 Ln(x) = 15.1027020 x = 18.00000 Ln(x) = 20.7989916 6.Результат вычислений в Mathcad. 7.Вывод. Благодаря использованию интерполяционной формулы Лагранжа, для которой функция F(x) является полином Ln(x) степени не выше n, мы смогли вывести в виде таблицы значения функции f(x) для точек x с заданным шагом h, при известных значениях функции f(xi) в узлах xi.Вычисления, проведенные в Mathcad15, совпадают с вычислениями, полученными при работе написанной программы в пределах ℇ=10-7. |