Ошибка значения: значение истинности массива с более чем одним элементом неоднозначно. Ошибка при использовании равенства в условии If

#python #numpy

#python #тупой

Вопрос:

Я принимаю эту ошибку в условии равенства. Я пробовал шаги в аналогичных вопросах, но все равно получаю ту же ошибку.

Мой сценарий выглядит следующим образом, и я использую Jupyter Notebook:

   import numpy as np
  import math
  f1=np.array([-59,-28])
  f3=np.array([-39,76,94])
  f2=np.array([75])
  a=0
  b=0
  c=0
  x = np.array([1, 1, 3, 3, 3, 2]) # x coordinates in space
  y = np.array([-59, -59, -39, -39, -39, 75]) # f(x)
        def getNDDCoeffs(x, y):
        n = np.shape(y)[0]
        pyramid = np.zeros([n, n]) # Create a square matrix to hold pyramid
        pyramid[::,0] = y # first column is y
        for j in range(1,n):
            for i in range(n-j):
                # create pyramid by updating other columns
                if np.logical_and(x[i j]==x[i],x[i]==f1):
                    a=a 1
                    pyramid[i][j] = f1[a-1]/math.factorial(a)
                elif np.logical_and(x[i j]==x[i],x[i]==f3):
                    b=b 1
                    pyramid[i][j] = f3[a-1]/math.factorial(b)
                elif np.logical_and(x[i j]==x[i],x[i]==f2):
                    c=c 1
                    pyramid[i][j] = f2[a-1]/math.factorial(c)
                else:
                    pyramid[i][j] = (pyramid[i 1][j-1] - pyramid[i][j-1]) / (x[i j] - x[i])
        return pyramid[0] # return first row
  coeff_vector = getNDDCoeffs(x, y)
  print(coeff_vector)
 

В скрипте я пытаюсь реализовать интерполяцию Эрмита в виде разрешения пирамиды метода разделенной разности Ньютона. f1 [0] означает начальное значение, f1 [1] — значение первой производной, а f1 [2] — вторая производная. То же самое справедливо для массивов f2 и f3.

В чем может быть проблема? Если вы можете мне помочь, я очень рад. Хорошего дня!

Комментарии:

1. похоже f1 , что вы сравниваете с целыми числами, равными np.array([-59,-28]) , так что в основном вы пытаетесь сравнить 1 и ‘ [-59,-28] , что приводит к ValueError (то же самое для f2 и f3)

2. Ах, это была очень глупая ошибка. Я понял, в чем проблема. Спасибо за помощь.