Добавил:
Developer Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2 Лаборторная работа ВМ

.docx
Скачиваний:
1
Добавлен:
02.01.2024
Размер:
299.34 Кб
Скачать

Федеральное агентство связи Ордена

Трудового Красного Знамени

федеральное бюджетное образовательное учреждение высшего образования

«Московский Технический Университет Связи и Информатики»

(МТУСИ)

Кафедра Информатики

Предмет: Вычислительные модели

Лабораторная работа № 2

Тема:

«Интерполяция функций»

Вариант 00

Выполнил:

Проверил(а): Величайший преподаватель

_________________

Москва 0000

1 Задание

  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. Выполнить линейную, квадратичную и кубическую интерполяцию функции , заданной таблично (табл.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: