2 Лаборторная работа ВМ
.docxФедеральное агентство связи Ордена
Трудового Красного Знамени
федеральное бюджетное образовательное учреждение высшего образования
«Московский Технический Университет Связи и Информатики»
(МТУСИ)
Кафедра Информатики
Предмет: Вычислительные модели
Лабораторная работа № 2
Тема:
«Интерполяция функций»
Вариант 00
Выполнил:
Проверил(а): Величайший преподаватель
_________________
Москва 0000
1 Задание
Выбрать индивидуальное задание из табл.1.3-1 и табл. 1.3-2 для решения задач интерполяции:
из табл. 1.3-1 выбираем значения параметров t1 и t2, а также значения x=a (для построения многочлена Ньютона) и x=b (для построения многочлена Лагранжа);
из табл. 1.3-2 в соответствии с методикой выбора узлов интерполяции по значению x=a выбираем узлы интерполяции (из отрезка [0.05;1.55] – область задания интерполируемой функции) и значения функции в этих узлах. Число узлов определяется заданной степенью интерполяционного многочлена в соответствии с п.2 и п.3.
Следует обратить внимание, что:
если точка x=a расположена ближе к левому концу отрезка, выбираемого из табл.1.3-2, то для построения первой формулы Ньютона необходимо выбрать узлы ( - ближайший к точке x=a узел слева);
если точка x=a расположена ближе к правому концу отрезка, выбираемого из табл.1.3-2, то используют вторую формулу Ньютона и необходимо выбрать узлы (xn – ближайший к точке x=a узел справа);
если точка x=a расположена примерно в середине таблицы, то следует выбрать ту формулу, которая обеспечит меньшую погрешность.
Выполнить линейную, квадратичную и кубическую интерполяцию функции , заданной таблично (табл.1.3-2), указанным в табл.1.3-1 методом (значение t1) «расчет на ПК»:
составить схему алгоритма и программу решения задачи интерполяции и провести контрольное тестирование на данных примера, разобранного в п. 5;
вычислить значение интерполирующего многочлена Ньютона в точке ; для многочлена Лагранжа в точке ;
провести оценку погрешности интерполяции по формулам практической оценки погрешности.
Построить интерполяционный многочлен второй степени (Ньютона или Лагранжа в зависимости от значения t2) в явном виде (ручной расчет). Вычислить значения построенного многочлена во всех выбранных узлах интерполяции. Сравнить полученные результаты с таблично заданными значениями.
Индивидуальное задание:
Для ручного расчёта мы должны выбрать многочлен Ньютона, а для расчёта на ПК – многочлен Лагранжа.
Задание для интерполяции функций
функция y=f(x), заданная таблично значениями в узлах интерполяции:
Многочлен Ньютона (t2 - руч.) |
Многочлен Лагранжа (t1 - ПК) |
||||
x = a |
x = b |
||||
1.17 |
0.34 |
||||
№ узла |
Знач. арг. |
Знач. функ. |
№ узла |
Знач. арг. |
Знач. функ. |
22 |
1.15 |
1.4005 |
2 |
0.15 |
-4.0845 |
23 |
1.2 |
2.016 |
4 |
0.25 |
-3.95 |
24 |
1.25 |
2.675 |
5 |
0.3 |
-3.861 |
25 |
1.3 |
3.379 |
6 |
0.35 |
-3.7555 |
26 |
1.35 |
4.1295 |
8 |
0.45 |
-3.489 |
27 |
1.4 |
4.928 |
9 |
0.5 |
-3.325 |
вычислим значение многочлена Ньютона в точке x=a=1.17 и значение многочлена Найдем значение интерполирующего многочлена Ньютона в точке a=1.17
Построим таблицу конечных разностей:
Число узлов n+1 |
|
|
Оценки погрешностей |
|
Метод Ньютона
|
Метод Лагранжа
|
|||
1 |
1.6467 |
-3,7766 |
5.22E-03 |
0,00132 |
2 |
1.64148 |
-3,77792 |
9.6E-05 |
7,19E-05 |
3 |
1.641576 |
-3,777992 |
0 |
4,44E-16 |
Произведем расчет в MathCad методом Ньютона
Рассчитаем на ПК Метод Лагранжа
Узлы для метода Лагранжа (x = 0.34)
Алгоритм программы
Схема (1) кнопка
Схема (2)
Схема (3)
Программный код
Option Strict On
Option Explicit On
Imports System.Math
Public Class Form1
Sub vvod(ByRef x() As Double, ByRef y() As Double, ByRef n As Integer, ByRef xl As Double)
n = CInt(TextBox1.Text)
xl = Val(TextBox2.Text)
x(0) = Val(TextBox3.Text)
x(1) = Val(TextBox4.Text)
x(2) = Val(TextBox5.Text)
x(3) = Val(TextBox6.Text)
x(4) = Val(TextBox7.Text)
x(5) = Val(TextBox8.Text)
y(0) = Val(TextBox9.Text)
y(1) = Val(TextBox10.Text)
y(2) = Val(TextBox11.Text)
y(3) = Val(TextBox12.Text)
y(4) = Val(TextBox13.Text)
y(5) = Val(TextBox14.Text)
End Sub
Sub vivod(ByRef x() As Double, ByRef y() As Double, ByRef L() As Double, ByRef E() As Double, ByRef n As Integer)
Dim i As Integer
For i = 1 To n - 1
ListBox3.Items.Add(CStr(E(i)))
Next
For i = 1 To n
ListBox1.Items.Add(CStr(i))
ListBox2.Items.Add(CStr(L(i)))
ListBox4.Items.Add(CStr(x(i)))
ListBox5.Items.Add(CStr(y(i)))
Next i
End Sub
Sub LX(ByRef x() As Double, ByRef y() As Double, ByVal xl As Double, ByVal k As Integer, ByRef L As Double)
Dim l1 As Double
Dim i, j As Integer
L = 0
For i = 0 To k
l1 = 1
For j = 0 To k
If i <> j Then l1 = l1 * (xl - x(j)) / (x(i) - x(j))
Next j
L = L + l1 * y(i)
Next i
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim xl As Double
Dim n As Integer
Dim x(5) As Double
Dim y(5) As Double
Dim L(5) As Double
Dim ee(4) As Double
ListBox1.Items.Clear()
ListBox2.Items.Clear()
ListBox3.Items.Clear()
ListBox4.Items.Clear()
ListBox5.Items.Clear()
vvod(x, y, n, xl)
lag(x, y, n, xl, L)
pogreshnosti(L, ee)
vivod(x, y, L, ee, n)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
End
End Sub
End Class
Выполнение программы
Построение интерполяционных многочленов второй степени
в явном виде (ручной расчет) квадратичная интерполяция:
Построенные квадратичный интерполяционный
полином Ньютона для выбранных
P2(x) = 8.7*x^2-8.135*x-0.75
Решение поставленной задачи с помощью пакета MathCad: