def Lagrange_Interpolation(tab):
wynik = 0
for i in range(size):
l = 1
for j in range(size):
if i != j:
l *= (float(pktX)-tab[j]["x"])/(tab[i]["x"]-tab[j]["x"])
print(tab[i]["y"] * l)
wynik += tab[i]["y"] * l
return wynik
def print_Lagrange(wynik, tab):
print("Liczba węzłów: ", size)
print("Węzły: ")
for i in tab:
print("x = ", i["x"], " ,f(x) =", i["y"])
print("Punkt w którym liczona jest wartość wielomianu: x =", pktX)
print("Wartość wielomianiu w wybranym punkcie: f(x) =", round(wynik, 5))
print("======================================================")
if __name__ == '__main__':
f = open('dane.txt', 'r')
tab = []
for i, line in enumerate(f):
if i == 0:
size = int(line[0])
else:
l = line.split()
x = int(l[0])
y = int(l[1])
tab.append({"x": x, "y": y})
f.close()
print("W którym punkcie policzyć wartość wielomianu? ")
pktX = input()
wynik = Lagrange_Interpolation(tab)
print_Lagrange(wynik, tab)
f = open('dane2.txt', 'r')
tab2 = []
for i, line in enumerate(f):
if i == 0:
size = int(line[0])
else:
l = line.split()
x = float(l[0])
y = pow(float(l[0]), 1/3) # round()
tab2.append({"x": x, "y": y})
pktX = 50
wynik = Lagrange_Interpolation(tab2)
print_Lagrange(wynik, tab2)