gpt4 book ai didi

python - 使用 sympy 在特定点评估 Jacobian

转载 作者:太空狗 更新时间:2023-10-30 01:44:39 26 4
gpt4 key购买 nike

我正在尝试计算 (x,y)=(0,0) 处的雅可比行列式,但无法这样做。

import sympy as sp
from sympy import *
import numpy as np
x,y=sp.symbols('x,y', real=True)
J = Function('J')(x,y)
f1=-y
f2=x - 3*y*(1-x**2)
f1x=diff(f1,x)
f1y=diff(f1,y)
f2x=diff(f2,x)
f2y=diff(f2,y)
J=np.array([[f1x,f1y],[f2x,f2y]])
J1=J(0,0)
print J1

错误对应

---> 16 J1=J(0,0)

TypeError: 'numpy.ndarray' object is not callable 

最佳答案

你得到的错误确实是因为你正在重新绑定(bind) J 到一个不可调用的 numpy 数组。

您应该使用 sympy 表达式的 subs 方法来计算一个点中的表达式(如 basic operations documentation of Sympy 中所述):

J = sympy.Matrix([[f1x,f1y],[f2x,f2y]])
J.subs([(x,0), (y,0)])

此外,您可能有兴趣知道 sympy 也提供了一个 jacobian 方法:

>>> F = sympy.Matrix([f1,f2])
>>> F.jacobian([x,y])
Matrix([
[ 0, -1],
[6*x*y + 1, 3*x**2 - 3]])
>>> F.jacobian([x,y]).subs([(x,0), (y,0)])
Matrix([
[0, -1],
[1, -3]])

关于python - 使用 sympy 在特定点评估 Jacobian,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26669706/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com