2.4. Формы таблиц для занесения результатов
Таблица 2–3
k |
0 |
1 |
2 |
… |
n |
xk |
x0 |
x1 |
x2 |
… |
xn |
yk |
y0 |
y1 |
y2 |
… |
yn |
Таблица 2–4
(для многочлена Ньютона)
Степень многочлена k |
Pk(x) |
Погрешность |
1 |
P1(x) |
|P1(x) – P2(x)| |
2 |
P2(x) |
|P2(x) – P3(x)| |
3 |
P3(x) |
– |
Таблица 2-5
(для многочлена Лагранжа)
Степень многочлена k |
Lk(x) |
Погрешность |
1 |
L1(x) |
|L1(x) – L2(x)| |
2 |
L2(x) |
|L2(x) – L3(x)| |
3 |
L3(x) |
– |
2.5. Содержание отчета
1. Фамилия и имя студента, номер группы.
2. Название и цель лабораторной работы.
3. Индивидуальный вариант задания к работе.
4. Таблицы 2–3 с перенумерованными узлами интерполяции.
5. Интерполяционные формулы для ручных расчетов и результаты расчетов в таблицах 2–4 и 2-5.
6. Схема алгоритма и программа.
7. Выводы.
1)Точка интерполяции для формулы Лангража b = 0.96.
Выбор и нумерация узлов.
Для ручной интерполяции в точке x = b = 0.96 по 1 формуле Лангража выбираем 4 узла из таблицы 2–2 так, чтобы точка b = 0.96 оказалась между узлами с номерами с 1 по 2 и добавляем узлы симметрично относительно x0 = 0.95:
Таблица 2-1
Номера выбранных узлов (k) |
xk |
yk |
17 |
0.90 |
-1.0770 |
18 |
0.95 |
-0.6565 |
19 |
1.00 |
-0.2000 |
20 |
1.05 |
0.2940 |
Выбор точек определяется тем, чтобы при решении задачи интерполяции в точке с заданной точностью добавлять узлы симметрично относительно точки x.
Перенумеруем узлы интерполяции симметрично относительно точки x=bдля использования их в интерполяционных формулах и занесем в таблицы вида 2–3:
Таблица 2 — 3:
-
k
0
1
2
3
xk
0.95
1.00
0.90
1.05
yk
-0.6565
-0.2000
-1.0770
0.2940
Ручной расчет по формуле Лагранжа.
Запишем интерполяционные многочлены Лагранжа 1–й, 2–й и 3–й степени и вычислим их значения в точке x = b = 0.96:
L1(x) = (x – 1)*(-0.6565)/(0.95 – 1) + (x – 0.95)*(-0.2)/(1 – 0.95) = -0.5652
L2(x) = (x – 1)*(x – 0.9)*(-0.6565)/((0.95 – 1)*(0.95 – 0.9)) + (x – 0.95)(x – 0.9)*(-0.2)/((1 – 0.95)*(1 – 0.9) + (x – 0.95)(x – 1)*(-1.077)/((0.9– 0.95)*( 0.9 – 1) = -0.56808
L3(x) = -0.56812
Выражение в явном виде:
f(x) = 2*x^3 + 1.5*x^2 + 0.5*x – 4.2
Занесем результаты в таблицу и вычислим оценки погрешности полученных значений для многочленов 1–й и 2–й степени:
Степень многочлена k |
Lk(x) |
Погрешность |
1 |
-0.5652 |
0.00288 |
2 |
-0.56808 |
0.00004 |
3 |
-0.56812 |
– |
Вывод. Получены выражения для интерполяционных многочленов 1, 2 и 3-ей степени и их значения в т. b. Оценку погрешности проведём в соответствии с неравенством:
|f(x) – Ln (x)| <= |Ln+1(x) - Ln (x)|
|-0.568128 - (-0.56808)| <= |-0.568128 - (-0.56808)|
0.000048<=0.000048
3) Программа (Метод Ньютона)
print('Метод Ньютона') print('Линейная интерполяция') A1 = 0.12 X = [0.1, 0.15] Y = [-4.133, -4.0845] h = 0.05 a1 = (Y[1] - Y[0])/(X[1] - X[0]) print(a1) print('Линейная интерполяция в точке') def Line_inter(A,h): X = [0.1, 0.15] Y = [-4.133, -4.0845] q = (A - X[0]) / h y01 = Y[0] dy01 = Y[1] - Y[0] P11 = y01 + dy01 * q return P11 Li = Line_inter(0.12, 0.05) print(Li) print('Квадрат. интерполяция в точке') def Qvadrat_inter(A,h): X = [0.1, 0.15, 0.20] Y = [-4.133, -4.0845, -4.0240] q = (A - X[0]) / h y02 = Y[0] dy02 = Y[1] - Y[0] ddy02 = Y[2] - 2 * Y[1] + Y[0] P2 = y02 + dy02 * q + ddy02 * q * (q - 1) return P2 Qi = Qvadrat_inter(0.12, 0.05) print(Qi) print('кубич. интерполяция в точке') def Qubic_inter(A,h): X = [0.1, 0.15, 0.20, 0.25] Y = [-4.133, -4.0845, -4.0240, -3.9500] q = (A - X[0]) / h y0_3 = Y[0] dy0_3 = Y[1] - Y[0] ddy0_3 = Y[2] - 2 * Y[1] + Y[0] dddy0_3 = Y[3] - 2 * Y[2] + Y[0] P3 = y0_3 + dy0_3 * q + ddy0_3 * q * (q - 1) + dddy0_3 * q * (q - 1) * (q - 2) return P3 Qubi = Qubic_inter(0.12, 0.05) print(Qubi)
print('f(x) Метод Ньютона') a = 0.12 f1 = 2*a**3 + 1.5*a**2 + 0.5*a - 4.2 print(f1)
И ее результат:
Метод Ньютона
Линейная интерполяция
0.9699999999999955
Линейная интерполяция в точке
-4.1136
Квадрат. интерполяция в точке
-4.11648
кубич. интерполяция в точке
-4.12992
f(x)
-0.5681280000000002 -4.113600000000001
