Московский технический институт связи и информатики
Кафедра информатики
«Интерполяций функций»
Вариант № 14
ОТФ-1, БИК 1203
Кояков Дмитрий
Москва, 2013
Задание наразработку проекта
Решить задачу интерполяции:
Вид интерполяционного многочлена
Многочлен Ньютона Многочлен Лагранжа
x = a x = b Номера узлов
1.07 1.52 24, 25, 27, 28, 29, 30
Выполнить линейную, квадратичную и кубическую интерполяцию функции y = f(x), заданной таблично, методом «расчет на ПК», используя интерполяционный многочлен Лагранжа. Вычислить значение интерполирующего многочленаЛагранжа в точке x = 1.29. Оценить погрешность.
Построить интерполяционный многочлен Ньютона третьей степени в явном виде (ручной расчет). Вычислить значения построенного многочлена во всех выбранных узлах интерполяции. Сравнить полученные результаты с таблично заданными значениями.
Для решения при помощи интерполяционного многочлена Лагранжа:
№ узла Значение аргумента Значение функции
27 1.44.928
28 1.45 5.776
29 1.5 6.675
30 1.55 7.6265
Для решения при помощи интерполяционного многочлена Ньютона третьей степени:
№ узла Значение аргумента Значение функции
20 1.05 0.294
21 1.1 0.827
22 1.15 1.4005
23 1.2 2.016
24 1.25 2.675
Выполнение проекта
Расчет на ПК полиномом Лагранжа
Листинг программы:
Листинг модуля:
Option Strict On
ImportsSystem.Math
Module Resh
Function LX(ByVal k As Integer, ByVal x() As Single, ByVal y() As Single, ByVal xl As Single) As Single 'Вычисление многочлена Лагранжа k-ого порядка в точке xl
Dim L, l1 As Single
L = 0
For i = 0 To k
l1 = 1
For j = 0 To k
If i j Then
l1 = (xl - x(j)) / (x(i) - x(j)) * l1'Вычисление множителей
End If
Next
L = L + l1 * y(i) 'Вычисление слагаемых
Next
LX = L 'Значение полинома в точке xl
End Function
Sub glavn(ByVal xl As Single, ByVal x() As Single, ByVal y() As Single, ByVal Eps As Single, ByVal n As Integer, ByRef otvet As String) 'Алгоритм интерполяции
Dim k As Integer = 0
Dim L(3), tmp, E1As Single
otvet = ""
L(k) = LX(k, x, y, xl) 'Вызов функции, которая вычисляет полином Лагранжа и присваивание результата элементу массива L(k)
Do
tmp = L(k)
k = k + 1
L(k) = LX(k, x, y, xl)
E1 = Abs(L(k) - tmp) 'Оценка точности вычисления
Loop Until E1 < Eps Or k >= n
For i = 1 To UBound(L)If L(i) 0 Then 'Отсекаем нулевые элементы массива, для которых не посчитался полином
otvet = otvet + CStr(L(i)) + vbNewLine + vbNewLine 'Вывод результатов массива значений полинома Лагранжа порядка от 1 до k
End If
Next
End Sub
End Module
Листинг формы:
Option Strict On
Imports System.Math
Public Class Form1Sub vvodmas(ByRef x() As Single, ByRef y() As Single) 'Процедура ввода массивов значений аргумента и функции в узлах интерполяции
x(0) = CSng(TextBox1.Text) : y(0) = CSng(TextBox2.Text)
x(1) = CSng(TextBox3.Text) : y(1) = CSng(TextBox4.Text)
x(2) = CSng(TextBox5.Text) : y(2) = CSng(TextBox6.Text)
x(3) = CSng(TextBox7.Text) : y(3) = CSng(TextBox8.Text)
EndSub
Sub uzlynumer(ByVal xl As Single, ByRef x() As Single, ByRef y() As Single) 'Сортировка узлов методом пузырьков, от ближнего к xl узла до дальнего
Dim tmp As Single
For i = 0 To UBound(x) - 1
For j = i + 1 To UBound(x)
If Abs(x(i) - xl) > Abs(x(j) - xl) Then
tmp = x(j)
x(j) = x(i)...
Кафедра информатики
«Интерполяций функций»
Вариант № 14
ОТФ-1, БИК 1203
Кояков Дмитрий
Москва, 2013
Задание наразработку проекта
Решить задачу интерполяции:
Вид интерполяционного многочлена
Многочлен Ньютона Многочлен Лагранжа
x = a x = b Номера узлов
1.07 1.52 24, 25, 27, 28, 29, 30
Выполнить линейную, квадратичную и кубическую интерполяцию функции y = f(x), заданной таблично, методом «расчет на ПК», используя интерполяционный многочлен Лагранжа. Вычислить значение интерполирующего многочленаЛагранжа в точке x = 1.29. Оценить погрешность.
Построить интерполяционный многочлен Ньютона третьей степени в явном виде (ручной расчет). Вычислить значения построенного многочлена во всех выбранных узлах интерполяции. Сравнить полученные результаты с таблично заданными значениями.
Для решения при помощи интерполяционного многочлена Лагранжа:
№ узла Значение аргумента Значение функции
27 1.44.928
28 1.45 5.776
29 1.5 6.675
30 1.55 7.6265
Для решения при помощи интерполяционного многочлена Ньютона третьей степени:
№ узла Значение аргумента Значение функции
20 1.05 0.294
21 1.1 0.827
22 1.15 1.4005
23 1.2 2.016
24 1.25 2.675
Выполнение проекта
Расчет на ПК полиномом Лагранжа
Листинг программы:
Листинг модуля:
Option Strict On
ImportsSystem.Math
Module Resh
Function LX(ByVal k As Integer, ByVal x() As Single, ByVal y() As Single, ByVal xl As Single) As Single 'Вычисление многочлена Лагранжа k-ого порядка в точке xl
Dim L, l1 As Single
L = 0
For i = 0 To k
l1 = 1
For j = 0 To k
If i j Then
l1 = (xl - x(j)) / (x(i) - x(j)) * l1'Вычисление множителей
End If
Next
L = L + l1 * y(i) 'Вычисление слагаемых
Next
LX = L 'Значение полинома в точке xl
End Function
Sub glavn(ByVal xl As Single, ByVal x() As Single, ByVal y() As Single, ByVal Eps As Single, ByVal n As Integer, ByRef otvet As String) 'Алгоритм интерполяции
Dim k As Integer = 0
Dim L(3), tmp, E1As Single
otvet = ""
L(k) = LX(k, x, y, xl) 'Вызов функции, которая вычисляет полином Лагранжа и присваивание результата элементу массива L(k)
Do
tmp = L(k)
k = k + 1
L(k) = LX(k, x, y, xl)
E1 = Abs(L(k) - tmp) 'Оценка точности вычисления
Loop Until E1 < Eps Or k >= n
For i = 1 To UBound(L)If L(i) 0 Then 'Отсекаем нулевые элементы массива, для которых не посчитался полином
otvet = otvet + CStr(L(i)) + vbNewLine + vbNewLine 'Вывод результатов массива значений полинома Лагранжа порядка от 1 до k
End If
Next
End Sub
End Module
Листинг формы:
Option Strict On
Imports System.Math
Public Class Form1Sub vvodmas(ByRef x() As Single, ByRef y() As Single) 'Процедура ввода массивов значений аргумента и функции в узлах интерполяции
x(0) = CSng(TextBox1.Text) : y(0) = CSng(TextBox2.Text)
x(1) = CSng(TextBox3.Text) : y(1) = CSng(TextBox4.Text)
x(2) = CSng(TextBox5.Text) : y(2) = CSng(TextBox6.Text)
x(3) = CSng(TextBox7.Text) : y(3) = CSng(TextBox8.Text)
EndSub
Sub uzlynumer(ByVal xl As Single, ByRef x() As Single, ByRef y() As Single) 'Сортировка узлов методом пузырьков, от ближнего к xl узла до дальнего
Dim tmp As Single
For i = 0 To UBound(x) - 1
For j = i + 1 To UBound(x)
If Abs(x(i) - xl) > Abs(x(j) - xl) Then
tmp = x(j)
x(j) = x(i)...
Поделиться рефератом
Расскажи своим однокурсникам об этом материале и вообще о СкачатьРеферат