如何将sympy“vector”转换为numpy数组?

2024-09-30 02:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想做一个函数并计算它的雅可比矩阵,它帮助我用sympy来推导,但现在我不能像以前那样用numpy来计算。我不知道如何把雅各比的每一个条目都传递给一个数组。因为Jacobian[1][1]的类型是sympy.core.add.add,而值为numpy.ndarray时的类型是sympy.core.add.add。但我也不知道如何评价

import numpy as np
import sympy as sp
from string import ascii_lowercase as asi
vari=list(asi)[0:10]
var=sp.symbols(vari,real=True)
Funcion=[]
for i in np.arange(1, len(var)+1,1):
    if i==1:
        Funcion=Funcion+[(3-2*var[0])*var[0]-2*var[1]+1]
    elif i!=1 and i!=10:
        Funcion=Funcion+[(3-2*var[i-1])*var[i-1]-2*var[i-2]-2*var[i]+1]
    elif i==10:
        Funcion=Funcion+[(3-2*var[9])*var[9]-var[8]+1]

Jacobiano=[]
Gradiente=[]
for i in np.arange(0, len(var),1): #varia la funcion
    Gradiente=[]
    for j in np.arange(0, len(var),1): #varia la fila (lo mato a derivadas)
        Gradiente=Gradiente+[sp.diff(Funcion[i],var[j])]
    Jacobiano=Jacobiano+[Gradiente]

Tags: inimportnumpyaddforlenvaras

热门问题