【问题标题】:How can I find Wronskian determinant with numpy如何用 numpy 找到 Wronskian 行列式
【发布时间】:2021-07-15 23:08:17
【问题描述】:

我试图找到这 3 个函数的 Wronskian 行列式,但代码有“TypeError: No loop match the specified signature and cast was found for ufunc det”。我该如何解决?

import numpy as np
import numpy.linalg
import sympy as sp
x = sp.Symbol('x')
e=sp.exp(-3*x) #inputs
f=sp.cos(2*x) 
g=sp.sin(2*x)
buneya=np.array([e,f,g],dtype=object)


a=sp.diff(buneya[0]) #first derivative
b=sp.diff(buneya[1])
c=sp.diff(buneya[2])

k=sp.diff(a)
l=sp.diff(b) #second derivative
m=sp.diff(c)
wronskian=np.array([[e,f,g],[a,b,c],[k,l,m]],dtype=object)
print (np.linalg.det(wronskian) )  #determinant
Traceback (most recent call last):

  File "C:\Users\canat\.spyder-py3\temp.py", line 20, in <module>
    print (np.linalg.det(wronskian) )

  File "<__array_function__ internals>", line 5, in det

  File "C:\ProgramData\Anaconda3\lib\site-packages\numpy\linalg\linalg.py", line 2159, in det
    r = _umath_linalg.det(a, signature=signature)

TypeError: No loop matching the specified signature and casting was found for ufunc det 

【问题讨论】:

  • 请显示回溯
  • @MadPhysicist 完成
  • 此外,np.linalg.det 对具体数字进行操作,而不是符号对象数组。 sympy 有行列式功能吗?
  • 我强烈建议将回溯格式化为代码。使用三个反引号来避免缩进。
  • 我不知道 sympy det

标签: python arrays numpy sympy


【解决方案1】:

就这么简单:

import sympy as sp
x = sp.Symbol('x')
e=sp.exp(-3*x) #inputs
f=sp.cos(2*x) 
g=sp.sin(2*x)
buneya=[e,f,g]

a=sp.diff(buneya[0]) #first derivative
b=sp.diff(buneya[1])
c=sp.diff(buneya[2])

k=sp.diff(a)
l=sp.diff(b) #second derivative
m=sp.diff(c)
wronskian=sp.Matrix([[e,f,g],[a,b,c],[k,l,m]]).det()
print(wronskian)

返回

26*exp(-3*x)*sin(2*x)**2 + 26*exp(-3*x)*cos(2*x)**2

请参阅 sympy 矩阵 docs 了解更多信息。

编辑 #1 甚至更简单!

import sympy as sp
from sympy.matrices import dense

x = sp.Symbol('x')
e=sp.exp(-3*x) #inputs
f=sp.cos(2*x) 
g=sp.sin(2*x)

wronskian = dense.wronskian([e,f,g],x)
print(wronskian)

返回相同的

26*exp(-3*x)*sin(2*x)**2 + 26*exp(-3*x)*cos(2*x)**2

wronskian 方法也记录在 sympy docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-09
    • 2014-04-03
    • 2022-01-26
    • 2021-03-17
    • 2010-12-26
    • 1970-01-01
    • 2014-06-07
    • 1970-01-01
    相关资源
    最近更新 更多