Professional Documents
Culture Documents
Вар 3 Py
Вар 3 Py
Лабораторна робота №1
Звіт
Євтушенка Максима КІ-1
1. Варіант 3
2. Математичний апарат:
- Поліном Лагранжа:
n
( x−x 0 ) ( x−x 1 ) … ( x−x i−1 )( x−xi +1 ) …( x−x n )
Ln ( x ) =∑ y i
i=0 ( x i−x 0 ) ( x i−x 1 ) … ( xi −xi−1 ) ( x i−x i+1 ) …(x i−x n )
y i +1− y i
- Права різницева похідна: ẏ i ≈
h
i=[0 , n]
y−y
- Ліва різницева похідна: ẏ i ≈ i h i −1 i=[0 , n]
y −y
- Центральна різницева похідна: ẏ i ≈ i +12 h i−1 i=[0 , n]
y i +1+ yi −2 y i
- Друга похідна: ÿ i ≈ 2
i=[ 0 ,n ]
h
3. Код програми (Python):
a = -2.0
b = 0.5
h = 0.1
def func(x):
y = 0
y = x ** 2 * exp(-x ** 2)
return y
def interpK(x):
y = 0
for i in range(len(xl)):
if x >= xl[i] and x <= xl[i + 1]:
y = round(fl[i] * ((x - xl[i + 1]) / (xl[i] - xl[i + 1])) + fl[i + 1]
* ((x - xl[i]) / (xl[i + 1] - xl[i])),
8)
break
return y
def interpG(x):
y = 0
y = round(fl[0] * ((x - xl[len(xl) - 1]) / (xl[0] - xl[len(xl) - 1])) +
fl[len(fl) - 1] * (
(x - xl[0]) / (xl[len(fl) - 1] - xl[0])), 8)
return y
def diff1(x):
y = 0
y = round(2 * exp(-x ** 2) * (x - x ** 3), 8)
return y
def diff1int(x):
y = 0
if x == a:
y = round((func(a + h) - func(a)) / h, 8)
return y
if x == b:
y = round((func(b) - func(b - h)) / h, 8)
return y
for i in arange(a, b + h, h):
if x == i:
y = round((func(i + h) - func(i - h)) / (2 * h), 8)
return y
def diff2(x):
y = 0
y = round(2 * exp(-x ** 2) * (2 * x ** 4 - 5 * x ** 2 + 1), 8)
return y
def diff2int(x):
y = 0
y = round((func(x + h) + func(x - h) - 2 * func(x)) / (h ** 2), 8)
return y
list_2a_x = []
list_2a_y = []
list_2b = []
list_2c = []
list_3a1 = []
list_3b1 = []
list_3a2 = []
list_3b2 = []
for i in arange(a, b + h, h):
list_2a_x.append(round(i, 1))
list_2a_y.append(round(func(i), 5))
list_2b.append(interpK(i))
list_2c.append(interpG(i))
list_3a1.append(diff1(i))
list_3b1.append(diff1int(i))
list_3a2.append(diff2(i))
list_3b2.append(diff2int(i))
4. Виконання програми:
5. Висновок:
Протягом лабораторної роботи було вивчено формули
полінома Лагранжа, числового диференціювання першого
та другого порядку. Здобуто вміння апроксимувати
функцію, використовуючи глобальну та кускову
інтерполяцію на заданих вузлах. Отримано навички
приблизного знаходження першої та другої похідних
функції. Також покращено навички програмування на
Python.