Professional Documents
Culture Documents
Вар 11 Py
Вар 11 Py
Лабораторна робота №1
Звіт
Оніщенко Анни КІ-1
1. Варіант 11
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
Права різницева похідна: h
y 'i ≈
i=[0 , n]
y−y
Ліва різницева похідна: y 'i ≈ i h i−1 i=[0 , n]
y −y
Центральна різницева похідна: y 'i ≈ i +12 h i−1 i=[0 , n]
3. Код програми:
import matplotlib.pyplot as plt
import numpy
m = 0
m1 = len(x)
while m < m1:
xlag.append(x[m])
m = m + 1
p = 0
p1 = len(point2)
while p < p1:
xlag.append(point2[p])
xlag_kus_p.append(point2[p])
p = p + 1
xlag.sort()
def funk(point1):
return numpy.sin(point1 * point1 + point1 - 0.1)
def lag(point):
return ((y[0] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point -
x[4]) * (point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[0] - x[1]) * (x[0] - x[2]) * (x[0] -
x[3]) * (x[0] - x[4])
* (x[0] - x[5]) * (x[0] - x[6]) * (x[0]
- x[7]) * (x[0] - x[8])
* (x[0] - x[9]) * (x[0] - x[10]) *
(x[0] - x[11]) * (x[0] - x[12])
* (x[0] - x[13]) * (x[0] - x[14]))) \
+ ((y[1] * (point - x[0]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[1] - x[0]) * (x[1] - x[2]) * (x[1] -
x[3]) * (x[1] - x[4])
* (x[1] - x[5]) * (x[1] - x[6]) * (x[1]
- x[7]) * (x[1] - x[8])
* (x[1] - x[9]) * (x[1] - x[10]) *
(x[1] - x[11]) * (x[1] - x[12])
* (x[1] - x[13]) * (x[1] - x[14]))) \
+ ((y[2] * (point - x[1]) * (point - x[0]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[2] - x[1]) * (x[2] - x[0]) * (x[2] -
x[3]) * (x[2] - x[4])
* (x[2] - x[5]) * (x[2] - x[6]) * (x[2]
- x[7]) * (x[2] - x[8])
* (x[2] - x[9]) * (x[2] - x[10]) *
(x[2] - x[11]) * (x[2] - x[12])
* (x[2] - x[13]) * (x[2] - x[14]))) \
+ ((y[3] * (point - x[1]) * (point - x[2]) * (point - x[0]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[3] - x[1]) * (x[3] - x[2]) * (x[3] -
x[0]) * (x[3] - x[4])
* (x[3] - x[5]) * (x[3] - x[6]) * (x[3]
- x[7]) * (x[3] - x[8])
* (x[3] - x[9]) * (x[3] - x[10]) *
(x[3] - x[11]) * (x[3] - x[12])
* (x[3] - x[13]) * (x[3] - x[14]))) \
+ ((y[4] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[0]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[4] - x[1]) * (x[4] - x[2]) * (x[4] -
x[3]) * (x[4] - x[0])
* (x[4] - x[5]) * (x[4] - x[6]) * (x[4]
- x[7]) * (x[4] - x[8])
* (x[4] - x[9]) * (x[4] - x[10]) *
(x[4] - x[11]) * (x[4] - x[12])
* (x[4] - x[13]) * (x[4] - x[14]))) \
+ ((y[5] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[0]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[5] - x[1]) * (x[5] - x[2]) * (x[5] -
x[3]) * (x[5] - x[4])
* (x[5] - x[0]) * (x[5] - x[6]) * (x[5]
- x[7]) * (x[5] - x[8])
* (x[5] - x[9]) * (x[5] - x[10]) *
(x[5] - x[11]) * (x[5] - x[12])
* (x[5] - x[13]) * (x[5] - x[14]))) \
+ ((y[6] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[0])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[6] - x[1]) * (x[6] - x[2]) * (x[6] -
x[3]) * (x[6] - x[4])
* (x[6] - x[5]) * (x[6] - x[0]) * (x[6]
- x[7]) * (x[6] - x[8])
* (x[6] - x[9]) * (x[6] - x[10]) *
(x[6] - x[11]) * (x[6] - x[12])
* (x[6] - x[13]) * (x[6] - x[14]))) \
+ ((y[7] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[0]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[7] - x[1]) * (x[7] - x[2]) * (x[7] -
x[3]) * (x[7] - x[4])
* (x[7] - x[5]) * (x[7] - x[6]) * (x[7]
- x[0]) * (x[7] - x[8])
* (x[7] - x[9]) * (x[7] - x[10]) *
(x[7] - x[11]) * (x[7] - x[12])
* (x[7] - x[13]) * (x[7] - x[14]))) \
+ ((y[8] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[0]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[8] - x[1]) * (x[8] - x[2]) * (x[8] -
x[3]) * (x[8] - x[4])
* (x[8] - x[5]) * (x[8] - x[6]) * (x[8]
- x[7]) * (x[8] - x[0])
* (x[8] - x[9]) * (x[8] - x[10]) *
(x[8] - x[11]) * (x[8] - x[12])
* (x[8] - x[13]) * (x[8] - x[14]))) \
+ ((y[9] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[0]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[9] - x[1]) * (x[9] - x[2]) * (x[9] -
x[3]) * (x[9] - x[4])
* (x[9] - x[5]) * (x[9] - x[6]) * (x[9]
- x[7]) * (x[9] - x[8])
* (x[9] - x[0]) * (x[9] - x[10]) *
(x[9] - x[11]) * (x[9] - x[12])
* (x[9] - x[13]) * (x[9] - x[14]))) \
+ ((y[10] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[0]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[10] - x[1]) * (x[10] - x[2]) *
(x[10] - x[3]) * (x[10] - x[4])
* (x[10] - x[5]) * (x[10] - x[6]) *
(x[10] - x[7]) * (x[10] - x[8])
* (x[10] - x[9]) * (x[10] - x[0]) *
(x[10] - x[11]) * (x[10] - x[12])
* (x[10] - x[13]) * (x[10] -
x[14]))) \
+ ((y[11] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[0]) * (point - x[12])
* (point - x[13]) * (point - x[14])) / ((x[11] - x[1]) * (x[11] - x[2]) *
(x[11] - x[3]) * (x[11] - x[4])
* (x[11] - x[5]) * (x[11] - x[6]) *
(x[11] - x[7]) * (x[11] - x[8])
* (x[11] - x[9]) * (x[11] - x[10]) *
(x[11] - x[0]) * (x[11] - x[12])
* (x[11] - x[13]) * (x[11] -
x[14]))) \
+ ((y[12] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[0])
* (point - x[13]) * (point - x[14])) / ((x[12] - x[1]) * (x[12] - x[2]) *
(x[12] - x[3]) * (x[12] - x[4])
* (x[12] - x[5]) * (x[12] - x[6]) *
(x[12] - x[7]) * (x[12] - x[8])
* (x[12] - x[9]) * (x[12] - x[10]) *
(x[12] - x[11]) * (x[12] - x[0])
* (x[12] - x[13]) * (x[12] -
x[14]))) \
+ ((y[13] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[0]) * (point - x[14])) / ((x[13] - x[1]) * (x[13] - x[2]) * (x[13]
- x[3]) * (x[13] - x[4])
* (x[13] - x[5]) * (x[13] - x[6]) *
(x[13] - x[7]) * (x[13] - x[8])
* (x[13] - x[9]) * (x[13] - x[10]) *
(x[13] - x[11]) * (x[13] - x[12])
* (x[13] - x[0]) * (x[13] - x[14]))) \
+ ((y[14] * (point - x[1]) * (point - x[2]) * (point - x[3]) * (point - x[4]) *
(point - x[5]) * (point - x[6])
* (point - x[7]) * (point - x[8]) * (point - x[9]) * (point - x[10]) * (point -
x[11]) * (point - x[12])
* (point - x[13]) * (point - x[0])) / ((x[14] - x[1]) * (x[14] - x[2]) * (x[14]
- x[3]) * (x[14] - x[4])
* (x[14] - x[5]) * (x[14] - x[6]) *
(x[14] - x[7]) * (x[14] - x[8])
* (x[14] - x[9]) * (x[14] - x[10]) *
(x[14] - x[11]) * (x[14] - x[12])
* (x[14] - x[13]) * (x[14] - x[0])))
def lag_kus(ourx):
if ourx <= 1.37:
return lag_k(ourx, 0)
elif (ourx >= 1.37 and ourx <= 1.5):
return lag_k(ourx, 2)
elif (ourx >= 1.5 and ourx <= 1.63):
return lag_k(ourx, 4)
elif (ourx >= 1.63 and ourx <= 1.79):
return lag_k(ourx, 6)
elif (ourx >= 1.79 and ourx <= 2.16):
return lag_k(ourx, 8)
elif (ourx >= 2.16 and ourx <= 2.35):
return lag_k(ourx, 10)
elif ourx >= 2.35 :
return lag_k(ourx, 12)
n = 0
n1 = len(xlag)
while n < n1:
print("%-30.15g %-30.15g %-30.15g %-30.15g" % (lag(xlag[n]), lag_kus(xlag[n]),
funk(xlag[n]), xlag[n]))
ylag.append(lag(xlag[n]))
ylag_kus.append(lag_kus(xlag[n]))
n = n + 1
print(" ")
o = 0
while o < p1:
ylag_kus_p.append(lag_kus(xlag_kus_p[o]))
o = o + 1
def fp(point4):
if point4 == 0:
return (ylag_kus_p[point4 + 1] - ylag_kus_p[point4]) / 0.1
elif point4 > 0:
return (ylag_kus_p[point4 + 1] - ylag_kus_p[point4 - 1]) / 0.2
elif point4 == -1:
return (ylag_kus_p[point4] - ylag_kus_p[point4 - 1]) / 0.1
def fp2(point6):
if point6 == 0:
return (yfp1[point6 + 1] - yfp1[point6]) / 0.1
elif point6 > 0:
return (yfp1[point6 + 1] - yfp1[point6 - 1]) / 0.2
elif point6 == -1:
return (yfp1[point6] - yfp1[point6 - 1]) / 0.1
def fp1(point5):
return (2 * xlag_kus_p[point5] + 1) * (numpy.cos(xlag_kus_p[point5] *
xlag_kus_p[point5] + xlag_kus_p[point5] - 0.1))
def fp12(point7):
return ((2 * numpy.cos(xlag_kus_p[point7] * xlag_kus_p[point7] +
xlag_kus_p[point7] - 0.1)) - ((2 * xlag_kus_p[point7] + 1) ** 2)
* numpy.sin(xlag_kus_p[point7] * xlag_kus_p[point7] +
xlag_kus_p[point7] - 0.1))
b = 0
b1 = len(ylag_kus_p)
while b < (b1 - 1):
print("%-30.15g %-30.15g" % (fp(b), fp1(b)))
yfp.append(fp(b))
yfp1.append(fp1(b))
b = b + 1
print("%-30.15g %-30.15g" % (fp(-1), fp1(-2)))
yfp.append(fp(-1))
yfp1.append(fp1(-2))
print(" ")
h = 0
h1 = len(yfp1)
while h < (h1 - 2):
print("%-30.15g %-30.15g" % (fp2(h), fp12(h)))
yfp2.append(fp2(h))
yfp12.append(fp12(h))
h = h + 1
print("%-30.15g %-30.15g" % (fp2(-2+1), fp12(-2)))
yfp2.append(fp2(-1))
yfp12.append(fp12(-2))
print(" ")
yfunk.append(funk(funkpoint))
yfunk1.append(funk(funkpoint1))
xlag_kus_p.pop()
col = ["antiquewhite"]
col1 = ["red"]
col2 = ["orange"]
col3 = ["maroon"]
plt.grid()
plt.scatter(funkpoint, yfunk, color=col)
plt.scatter(xlag, ylag, color=col1)
plt.scatter(xlag, ylag_kus, color=col2)
plt.scatter(x, y, color=col3)
plt.legend(("sin(x^(2) + x - 0.1", "інтерполяція", "квадратична інтерполяція", "заданні
точки"))
plt.show()
col0 = ["lavender"]
col01 = ["hotpink"]
col02 = ["midnightblue"]
plt.grid()
plt.scatter(funkpoint1, yfunk1, color=col0)
plt.scatter(xlag_kus_p, yfp, color=col01)
plt.scatter(xlag_kus_p, yfp1, color=col02)
xlag_kus_p.pop()
plt.legend(("sin(x^(2) + x - 0.1", "f'(числовий метод)", "f'"))
plt.show()
col_1 = ["peachpuff"]
col_2= ["darkorange"]
col_3 = ["maroon"]
plt.grid()
plt.scatter(funkpoint1, yfunk1, color=col_1)
plt.scatter(xlag_kus_p, yfp2, color=col_2)
plt.scatter(xlag_kus_p, yfp12, color=col_3)
plt.legend(("sin(x^(2) + x - 0.1", "f''(числовий метод)", "f''"))
plt.show()
4. Виконання програми:
5. Висновок:
В цій лабораторній роботі було використано на практиці такі
метод: інтерполяція з допомогою поліному Лагранжа, кускова
інтерполяція (той самий метод), числове диференціювання для
першої та другої похідної. У результаті виконання поставленого
завдання, було отримано необхідні навички. Результатом слугують
три таблиці виводу значень функцій та похідних, а також три
графіки, що ілюструють, як виглядають отриманні значення на осях
Х та Y. Лабораторна робота була виконана на мові програмування
Python.