Что не так с кодом?(интерполяционый многочлен лагранжа)

tiwent1_D

Новичок
Пользователь
Дек 16, 2022
1
0
1
Входные данные 1 2 4
-3 -7 2
3
Ожидаемые выходные
-5.6

Python:
n = 3
x = [ int(input(f'x {i+1} = ')) for i in range(n)]
y = [ int(input(f'y {i+1} = ')) for i in range(n)]
a = int(input('Введите a '))
i = 0
f = 0
while i <= n:
    j = 0
    l = 1
    print('i =',i)
    while j <= n:
        print('j0 =',j)
        if i == j:
            j += 1
        print('j1 =',j)
        print('a-x[j]',a-x[j])
        print('x-x[j]',x-x[j])
        l = l*(a-x[j])/(x-x[j])
        print ('l =',l)
        j += 1
        print('j2 =',j)   
    l = l * y
    f = f + l
print ('x = ',a,' ; y =',f)
 
Последнее редактирование:

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
вставь свой код в тег </>. Щас ничего не понятно
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
423
115
43
Фухх, ну и заставил ты меня разбираться космосом забытые и никому не нужные полиномы лагранжей🤪
У тебя кстати не правильные ожидаемые выходные. Должно быть -5,33. Не стал разбираться в твоём коде, там всё слишком мудрено, поэтому написать свою функцию:
Python:
def lagrange(n, x, y, a):
    result = 0
    for i in range(n):
        term = y[i]
        for j in range(n):
            if j != i:
                term *= (a - x[j]) / (x[i] - x[j])
        result += term

    return f'x = {a}; y = {result}'


n = 3
x = [int(input(f'x{i + 1} = ')) for i in range(n)]
y = [int(input(f'y{i + 1} = ')) for i in range(n)]
a = int(input('Введите a: '))
print(lagrange(n, x, y, a))

Ну или если "краткость" - твоя сестра, то это для неё😅:
Python:
n = 3
x = [int(input(f'x{i + 1} = ')) for i in range(n)]
y = [int(input(f'y{i + 1} = ')) for i in range(n)]
a = int(input('Введите a: '))

P = [(a - x[j]) / (x[i] - x[j]) for i in range(n) for j in range(n) if i != j]
f = sum([y[k] * P[k*2] * P[k*2+1] for k in range(n)])
print(f'x = {a}; y = {f}')
 

Форум IT Специалистов