Код программы
Imports System.Math
Public Class Form1
Public x(), y(), a(,) As Single
Function vvod(ByVal T As TextBox) As Single
Return CSng(T.Text)
End Function
Sub vivodList(ByVal Z As String, ByVal LB As ListBox)
LB.Items.Add(Z)
End Sub
Public Sub Reshenie(ByVal x() As Single, ByVal y() As Single, ByVal a(,) As Single, ByRef n As Integer)
Dim i, j, m As Integer
Dim h, xp, e, q, s, s1 As Single
Dim z As String
h = vvod(TextBox1)
xp = vvod(TextBox2)
n = vvod(TextBox3)
e = vvod(TextBox4)
ReDim x(n), y(n), a(n, n + 2)
For i = 0 To n
x(i) = CSng(InputBox("Введите x"))
y(i) = CSng(InputBox("Введите y"))
a(i, 1) = x(i)
a(i, 2) = y(i)
Next i
For j = 3 To n + 2
For i = 0 To n - j + 2
a(i, j) = a(i + 1, j - 1) - a(i, j - 1)
Next i
Next j
q = (xp - x(n)) / h
For m = 1 To n
s = a(n, 2)
For j = 3 To m + 2
s1 = a(n - j + 2, j)
For i = 1 To j - 2
s1 = s1 * (q + 1 - i) / i
Next i
s = s + s1
Next j
z = s
vivodList(z, ListBox1)
If Abs(s1) < E Then
GoTo 1
End If
Next m
1:
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim n As Integer
Reshenie(x, y, a, 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
Схема алгоритма
Print screen
Результаты расчетов на ПК методом Ньютона
Возьмем узлы
-
0,9
-1,077
0,95
-0,6565
1
-0,2
1,05
0,294
1,1
0,827
Значения для ввода в программе: h=0.05 x=0.93 n=1-3 e=0.01
Значение в точке 0.93:
Линейная интерполяция: -0.8246
Квадратичная интерполяция: -0.7986
Кубическая интерполяция: -0.8075
Построение интерполяционных многочленов второй степени в явном виде (ручной
расчет)
Для
этого решим систему уравнений
Построенные квадратичный интерполяционный полином Ньютона для выбранных
P2(x) = 7.8 x2 – 6.11x - 1.89
Решение поставленной задачи с помощью пакета MathCad:
Лагранжа
Ньютона
