Я хочу вычислить частные производные, которые я пытался сделать, используя конечную разность, что дало мне nan.
Затем я попытался использовать функцию градиента, но выдал ошибку, поскольку ValueError: установка элемента массива с последовательностью. Запрошенный массив имеет неоднородную форму после двух измерений. Обнаруженная форма была (2, 2) + неоднородная часть.
В конечном итоге это не позволяет мне вычислить матрицу Якобиана.
Ваш совет будет оценен по достоинству.
В приведенном ниже коде функция find_intersection предназначена для определения пересечения нулевых линий.
Я хочу вычислить частные производные, которые я пытался сделать, используя конечную разность, что дало мне nan. Затем я попытался использовать функцию градиента, но выдал ошибку, поскольку [b]ValueError: установка элемента массива с последовательностью. Запрошенный массив имеет неоднородную форму после двух измерений. Обнаруженная форма была (2, 2) + неоднородная часть.[/b] В конечном итоге это не позволяет мне вычислить матрицу Якобиана. Ваш совет будет оценен по достоинству. В приведенном ниже коде функция find_intersection предназначена для определения пересечения нулевых линий. [code]def find_intersections(g1_grid): intersections = [] f = lambda g: float(I_null_func(g) - I_nc_func(g)) tol = 1e-5 for i in range(len(g1_grid) - 1): g1_a = g1_grid[i] g1_b = g1_grid[i + 1] fa = f(g1_a); fb = f(g1_b) if np.isnan(fa) or np.isnan(fb): continue if abs(fa) < tol: intersections.append((g1_a, float(I_null_func(g1_a)))) continue if abs(fb) < tol: intersections.append((g1_b, float(I_null_func(g1_b)))) continue if fa * fb < 0: try: g_root = brentq(lambda gg: f(gg), g1_a, g1_b, xtol=1e-10, rtol=1e-10, maxiter=200) intersections.append((g_root, float(I_null_func(g_root)))) except Exception: pass return intersections