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

Лаба 2. Вариант 13

.docx
Скачиваний:
0
Добавлен:
20.04.2024
Размер:
92.05 Кб
Скачать

МИНИСТЕРСТВО ЦИФРОВОГО РАЗВИТИЯ, СВЯЗИ И МАССОВЫХ КОММУНИКАЦИЙ РОССИЙСКОЙ ФЕДЕРАЦИИ

Ордена Трудового Красного Знамени федеральное государственное

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

МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ

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

Отчет по лабораторной работе №2

По дисциплине «Численные методы»

На тему:

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

Вариант №13

Выполнила студент группы:

Вечный студент

Проверил:

Москва 2024 г

Содержание

1.Задание 2

2. Индивидуальное задание 2

3. Ручной расчет по 1–й формуле Ньютона 3

3.1. Точка интерполяции для формулы Ньютона a = 0.17 3

3.2. Вывод 4

4. Рассчёт на компьютере методом Лагранжа x =b=0.64 5

4.1 Код 5

5. Вывод 7

1.Задание

  1. Выбрать из таблицы 2–1 индивидуальное задание для интерполяции:

  • точку интерполяции x=a для интерполяции многочленом Ньютона;

  • точку интерполяции x=b для интерполяции многочленом Лагранжа;

  1. Для интерполяции в точке x=a выбрать из таблицы 2–2 с интерполируемой функцией 4 подходящих узла для построения многочленов 1, 2 и 3-ей степени.

  2. Перенумеровать узлы интерполяции для каждого из методов интерполяции. Занести перенумерованные узлы в таблицы вида 2–3.

  3. Выполнить вручную интерполяцию по заданной формуле в заданной точке x=a или x=b многочленами 1–й, 2–й и 3–й степени:

  • заполнить таблицу конечных разностей (для интерполяционной формулы Ньютона);

  • записать интерполяционные формулы для 1, 2 и 3-ей степени многочлена;

  • выполнить расчеты по интерполяционным формулам для каждой степени многочлена; все промежуточные вычисления производить с сохранением всех значащих цифр, окончательные результаты округлять до 4 знаков после десятичной точки.

  • занести полученные результаты в таблицу вида 2–4;для многочленов 1–й и 2–й степени вычислить и занести в таблицы 2-4 и 2-5 оценки погрешности интерполяции: модули разности между текущим Pk(x) (Lk(x)) и следующим Pk+1(x) (Lk+1(x)) значением многочлена.

  • 5 Решить задачу интерполяции в точке на компьютере. Вычислять модули разности между текущим Pk(x) (Lk(x)) и следующим Pk+1(x) (Lk+1(x)) значением многочлена в т. Х до тех пор, пока эта разность не станет <=0.001.

  • Примечание. Для функции, заданной в таблице 2-1, четырех узлов будет достаточно для решения данной задачи. В общем случае, для решения задачи интерполяции в точке, может понадобится добавить большее количество узлов, хотя и это не гарантирует решение.

2. Индивидуальное задание

  • 1.

Точка интерполяции x=a для интерполяции многочленом Ньютона:

0.17(ручной расчет)

Точка интерполяции x=b для интерполяции многочленом Лагранжа:

0.64(на компьютере)

  • для вычисления значения интерполирующей функции в точке x=a=0.17 методом Ньютона выберем узлы интерполяции х0=0.15х1=0.20х2=0.25х3=0.30 (x0=0.15– ближайший к точкех=а=0.17узел слева);

  • для вычисления значения интерполирующей функции в точке x=b=0.64 методом Лагранжа выберем номера узлов интерполяции 1, 2, 3, 4, что соответствует значениям узлов х0=0.60х1=0.65х2=0.70, х3=0.75(из указанного диапазона узлов).

3. Ручной расчет по 1–й формуле Ньютона

3.1. Точка интерполяции для формулы Ньютона a = 0.17

Выбор и нумерация узлов.

Для ручной интерполяции в точке x = a = 0.17 по 1 формуле Ньютона

выбираем 4 узла из таблицы 2–2 так, чтобы точка a = 0.17 оказалась между

узлами с номерами с 1 по 2 и добавляем узлы вправо:

№ узла-i

0

1

2

3

xi

0.15

0.20

0.25

0.30

y=f(xi)

-4.0845

-4.0240

-3.9500

-3.8610



Выбор точек определяется тем, чтобы при решении интерполяции в точке по 1 формуле Ньютона, с заданной точностью, добавлять узлы вправо относительно точки x=a. Изменим нумерацию узлом интерполяции для использования их в интерполяционных формулах и занесем в таблицы вида 2–3.

Заполним таблицу конечных разностей:

x

y

Δy

Δ2y

Δ3y

0.15

-4.0845

-0.0605

0.0135

-0.0015

0.20

-4.0240

-0.074

0.015

0.25

-3.9500

-0.089

0.30

-3.8610

Запишем 1–ю интерполяционную формулу Ньютона:

Для многочленов 1–й, 2–й и 3–й степени и выполним расчеты по ним.

Определим значение q:

Значение многочлена 1-й степени в т. x=0.17:

P1(x) = y0 + y0q = -4.0845 + (-0.0605)*0.4 =-4.1087

Значение многочлена 2-й степени в т. x=0.17:

P2 (x) = y0 +y0q +2y0*((q(q-1))/2) = -4.0845+ (-0.0605)*0.4+0.0135*(-0.12) =

-4.11032

Значение многочлена 3-й степени в т. x=0.17:

= -4.0845+ (-0.0605)*0.4+0.0135*(-0.12)+ -0.0015*0.064=-4.110416

Выражения для многочленов 1, 2 и 3 степени могут быть

получены после соответствующих преобразований формулы:

В нашем случае они будут иметь вид:

P1 =-4.1087

P2 = -4.11032

P3 = -4.110416

Занесем результаты в таблицу и вычислим оценки погрешности

полученных значений для многочленов 1–й и 2–й степени:

Степень многочлена k

Pk(x)

Оценки

погрешности

1

-4.1087

0.00162

2

-4.11032

0.000096

3

-4.110416

-

3.2. Вывод

Получены выражения для интерполяционных многочленов 1, 2

и 3-ей степени и их значения в т. а. Оценку погрешности проведём в

соответствии с неравенством:

Можно утверждать, что разность между точным значением функции и

значением функции в т.x=0.17 после 3-х итераций не превышает 0.0001.

4. Рассчёт на компьютере методом Лагранжа x =b=0.64

№ узла-i

0

1

2

3

xi

0.60

0.65

0.70

0.75

y=f(xi)

-2.9280

-2.6920

-2.4290

-2.1375



4.1 Код

import sympy, math

a=0.12

x=[0.6,0.65,0.70,0.75]

y=[-2.9280,-2.6920,-2.4290,-2.1375]

q=round((a-x[0])/(x[1]-x[0]),2)

h=round(x[1]-x[0],2)

print(q)

print(h)

def delt_Y(y):

    dy = []

    dy.append(y)

    for i in range(len(dy[0])-1):

        dy.append([])

        for g in range(len(dy[i])-1):

            dy[i+1].append(round(dy[i][g+1]-dy[i][g],4))

    dy.pop(0)

    return dy

def znsch_f(dy,n,y,q):

    otv=[]

    for i in range(n):

        promezh=(dy[i][0])/math.factorial(i+1)

        for g in range(i+1):

            promezh*=(q-g)

        otv.append(promezh)

    otv[0]+=y[0]

    for i in range(1,len(otv)):

        otv[i]=round(otv[i]+otv[i-1],4)

    for i in range(len(otv)-1):

        print(round(otv[i+1]-otv[i],4))

    return otv

def funkc(dy,n,y,h,x):

    otv=[]

    for i in range(n):

        promezh = (dy[i][0]) / ((math.factorial(i + 1))*(h**(i+1)))

        promezh = str(round(promezh,7))

        for g in range(i + 1):

            promezh+=f'*(a-{x[g]})'

        otv.append(promezh)

    otv[0] += str(y[0])

    otv[0]=sympy.simplify(otv[0])

    for i in range(1, len(otv)):

        otv[i] = f'{otv[i]} + {otv[i - 1]}'

        otv[i]=sympy.simplify(otv[i])

    return otv

print(delt_Y(y))

print(znsch_f(delt_Y(y),3,y,q))

print(funkc(delt_Y(y),3,y,h,x))

5. Вывод

Полученные выражения многочленов 1, 2 и 3-ей степени, а также их

значения в заданной точке, совпадают до 4 знака после десятичной точки с ручным расчетом.

Соседние файлы в предмете Численные методы