MN_Lab1.py

MN_Lab1.py
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)