Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 导数及其符号表达式的转换_Python_Numpy_Sympy - Fatal编程技术网

Python 导数及其符号表达式的转换

Python 导数及其符号表达式的转换,python,numpy,sympy,Python,Numpy,Sympy,我需要得到一个导数,以便在以后的数值计算中使用。我的代码根本不起作用。我尝试使用lambdify,但错误是“无法将符号转换为int”。我读了其他类似问题的答案,但仍然不起作用 import numpy as np from scipy.integrate import odeint from scipy.integrate import quad from scipy.integrate import solve_bvp as bvp import matplotlib.pyplot as pl

我需要得到一个导数,以便在以后的数值计算中使用。我的代码根本不起作用。我尝试使用lambdify,但错误是“无法将符号转换为int”。我读了其他类似问题的答案,但仍然不起作用

import numpy as np
from scipy.integrate import odeint
from scipy.integrate import quad
from scipy.integrate import solve_bvp as bvp
import matplotlib.pyplot as plt
from scipy.special import genlaguerre as L
from scipy.special import gamma as G
from math import factorial
from math import sqrt
import sympy as sym
from sympy.utilities.lambdify import lambdify


mp = 938.2720813
mn = 939.5654133

mu = (mn + mp)/4

hbar = 197.3270533

h2m = hbar**2/(2*mu)

V0 = 20
Rv = 1.5

Q0 = 1.5
Rq = 4.5

EIm = 0.3
ERe = 1

V = lambda r : -V0*np.exp(-r/Rv)
Q = lambda r : -Q0*np.exp(-r/Rq)


chi = lambda r, l : sqrt(factorial(l)*beta**3/(G(3 + l))) * r * L(l,2)(beta * r) * np.exp(- beta * r / 2)

r, l, beta = sym.symbols('r, l, beta')

def chifD(r, l, beta):
    return sqrt(factorial(l)*beta**3/(G(3 + l))) * r * L(l,2)(beta * r) * np.exp(- beta * r / 2)

def chiD(r, l, beta):
    return sym.diff(chifD(r ,l, beta), r)

print(chiD(r, l, beta))

chiLambdified = lambdify(((r,l, beta),),chiD(r,l, beta),"numpy")

print(chiD(1, 1, 1))

我很确定你在混合模块,你不应该。我一直在修改你的气功能,直到我得到了一些有效的东西。除了删除所有的
math
scipy
函数外,没有其他函数返回的不是
TypeError

#与sympy sqrt一起使用。
chi=λr,l:sym.sqrt(l*r)
印刷品(chi(r,l))
#不适用于数学或numpy sqrt。
chi=lambda r,l:math.sqrt(l*r)
印刷品(chi(r,l))
如果要使用函数,必须使用Symphy附带的函数,使用基本运算符定义自己的函数(以便接受Symphy对象),或者找到更简单的方法来定义操作:sqrt()可以简单地用**(1/2)代替


也许你应该寻找一种方法,让sympy接受来自其他模块的函数,因为自己编写scipy的所有特殊函数看起来会很痛苦。

我很确定你混合了不应该混合的模块。我一直在修改你的气功能,直到我得到了一些有效的东西。除了删除所有的
math
scipy
函数外,没有其他函数返回的不是
TypeError

#与sympy sqrt一起使用。
chi=λr,l:sym.sqrt(l*r)
印刷品(chi(r,l))
#不适用于数学或numpy sqrt。
chi=lambda r,l:math.sqrt(l*r)
印刷品(chi(r,l))
如果要使用函数,必须使用Symphy附带的函数,使用基本运算符定义自己的函数(以便接受Symphy对象),或者找到更简单的方法来定义操作:sqrt()可以简单地用**(1/2)代替


也许您应该寻找一种方法,让sympy接受来自其他模块的函数,因为自己编写scipy的所有特殊函数看起来会很痛苦。

似乎scipy、numpy和math函数都是不接受符号表达式的专用数值函数,这就是为什么Symphy有自己的一组等价函数。他们的定义中可能有这样一行:
f input!=浮动或输入!=int;raise TYPE ERROR
谢谢,至少现在我知道问题出在哪里了。但我确实需要找到一种方法来使用scipy中的特殊函数。似乎阶乘和伽马都有辛函数,但即使是那些函数也不能处理符号表达式。真的有必要象征性地处理一切吗?因为我认为sympy没有符号处理函数是有原因的。是的,我已经找到了gamma和阶乘,修正了它并得到了新的错误。“无法确定关系的真值”我不确定是否有必要使用符号计算,我只是认为这必须是最简单的方法,因为通常以符号方式获得此函数的导数不是问题。似乎scipy,numpy和math函数都是专门的数值函数,不接受符号表达式,这就是为什么sympy有自己的一组等价函数。他们的定义中可能有这样一行:
f input!=浮动或输入!=int;raise TYPE ERROR
谢谢,至少现在我知道问题出在哪里了。但我确实需要找到一种方法来使用scipy中的特殊函数。似乎阶乘和伽马都有辛函数,但即使是那些函数也不能处理符号表达式。真的有必要象征性地处理一切吗?因为我认为sympy没有符号处理函数是有原因的。是的,我已经找到了gamma和阶乘,修正了它并得到了新的错误。“无法确定关系的真值”我不确定是否有必要使用符号计算,我只是认为这必须是最简单的方法,因为通常以符号方式获得此函数的导数不是问题。