Я работаю над проблемой домашней работы, для которой я должен создать функцию, которая интерполирует sin (x) для n + 1 точек интерполяции и сравнивает интерполяцию с фактическими значениями sin в этих точках. В постановке задачи запрашивается функция лагранжиана (x, points), которая выполняет это, хотя моя текущая попытка ее выполнения не использует 'x' и 'points' в циклах, поэтому я думаю, что мне придется попробовать еще раз (особенно если мой код не работает как есть!) Однако, почему я не могу получить доступ к элементам в массиве x_n с индексом, например, x_n [k]? Кроме того, есть ли способ получить доступ только к значениям 'x' в массиве точек и зациклить их над значениями для L_x? Наконец, я думаю, что мое определение «ошибка» неверно, поскольку оно также должно быть массивом значений. Нужно ли делать еще один цикл for для сравнения каждого значения в массиве error с max_error? Это мой код прямо сейчас (мы выполняем в GUI, который сделал наш профессор, поэтому я думаю, что некоторые из команд являются уникальными для этого, например messages.write ()):
def problem_6_run(problem_6_n, problem_6_m, plot, messages, **kwargs):
n = problem_6_n.value
m = problem_6_m.value
messages.write('\n=== PROBLEM 6 ==========================\n')
x_n = np.linspace(0,2*math.pi,n+1)
y_n = np.sin(x_n)
points = np.column_stack((x_n,y_n))
i = 0
k = 1
L_x = 1.0
def Lagrange(x, points):
for i in n+1:
for k in n+1:
return L_x = (x- x_n[k] / x_n[i] - x_n[k])
return Lagrange = y_n[i] * L_x
error = np.sin(x) - Lagrange
max_error = 0
if error > max_error:
max_error = error
print.messages('Maximum error = &g' % max_error)
plot.draw_lines(n+1,np.sin(x))
plot.draw_points(m,Lagrange)
plots.draw_points(m,error)
Отредактировано:
Да, разные вещи, упомянутые ThiefMaster, являются частью среды моего (не CS) профессора; и да, voithos, я использую numpy, и в этот момент определенно больше практиковался с Matlab, чем с Python (думаю, это очевидно!). n и m - значения, введенные пользователем в GUI; n + 1 - это число точек интерполяции, а m - это количество точек, с которыми вы будете строить позже.
псевдокод:
Дано п и м
Создать x_n список из n равномерно распределенных точек от 0 до 2 * пи
Сгенерируйте y_n соответствующий список точек для sin (x_n)
Определение точек, двумерный массив, состоящий из этих упорядоченных пар
Определение Лагранжа, функции х и точек
для каждого значения в диапазоне n + 1 (именно здесь я хотел бы использовать точки, но не знаю, как правильно обращаться к этим значениям)
оценить y_n * (x - x_n [более поздний индекс] / x_n [более ранний индекс] - x_n [более поздний индекс])
Рассчитать максимальную ошибку
Вычислить погрешность интерполяции Лагранжа - sin (x)
заговор грех (х); сюжет Лагранжа; ошибка сюжета
Имеет ли это смысл?