Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.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
如何使用SymPy.core.add.add作为Python函数内数学计算的值_Python_Function_Sympy - Fatal编程技术网

如何使用SymPy.core.add.add作为Python函数内数学计算的值

如何使用SymPy.core.add.add作为Python函数内数学计算的值,python,function,sympy,Python,Function,Sympy,我有一个使用值数组循环的函数。然后我把它积分两次,我需要 在另一个函数中使用第二次积分的值 import numpy as np import sympy from sympy.abc import a, x, y #First function def m1(x): mn = (-110 + 210*x + -113*x**2 + 141*x**3 + -869*x**4 + 2980*x**5 + -6150*x**6 + 7848*x**7 + -6079*

我有一个使用值数组循环的函数。然后我把它积分两次,我需要 在另一个函数中使用第二次积分的值

import numpy as np
import sympy 
from sympy.abc import a, x, y

#First function
def m1(x):
    mn = (-110 + 210*x + -113*x**2 + 141*x**3 + -869*x**4 + 2980*x**5 +
          -6150*x**6 + 7848*x**7 + -6079*x**8 + 2626*x**9 + -485*x**10)
    return mn

#Array of values 
dist = np.arange(0, 1.09, 0.01)
result_m1 = [] #Empty list to store results

#Iteration over array
for v in dist:
    result_m1.append(m1(v))

f1 = sympy.integrate(m1(x), x) #First symbolic integration
f2 = sympy.integrate(f1, x) #second symbolic integration

def d(x):
    df = (-1)*(f2)/(67e9*4.72537401e-9)
    return df

#Second iteration for another batch of results
result_d = []
for v in dist:
    result_d.append(d(v))
每当我运行上面的代码时,我得到的结果是一个数字列表(可用),结果是一个表达式/符号方程列表(不可用)。
我需要f2是一个符号方程,这样我就得到了一个类似m1函数的函数(我可以用数组进行迭代)。

全局sympy变量
x
和函数的参数
x
之间存在混淆。这些不一样。最好给他们分别命名,以减少混淆。然后,您将注意到
f2
使用符号
x
。可通过f2将其替换为参数值。subs(x,xi):

将numpy导入为np
进口交响乐
从sympy.abc导入a,x,y
#第一功能
def m1(xi):
mn=-110+210*xi+-113*xi**2+141*xi**3+-869*xi**4+2980*xi**5+
-6150*xi**6+7848*xi**7+-6079*xi**8+2626*xi**9+-485*xi**10)
返回mn
#值数组
dist=np.arange(0,1.09,0.01)
结果_m1=[]#存储结果的空列表
#数组上的迭代
对于v区:
结果_m1.追加(m1(v))
f1=共积分(m1(x),x)#第一符号积分
f2=共积分(f1,x)#第二符号积分
定义d(xi):
df=(-1)*(f2.subs(x,xi))/(67e9*4.72537401e-9)
返回df
#另一批结果的第二次迭代
结果d=[]
对于v区:
结果附加(d(v))
如注释中所述,
lambdify()
可用于创建numpy版本,该版本允许编写有益于numpy的调用:

将numpy导入为np
进口交响乐
从sympy.abc导入a,x,y
#第一功能
def m1(xi):
mn=-110+210*xi+-113*xi**2+141*xi**3+-869*xi**4+2980*xi**5+
-6150*xi**6+7848*xi**7+-6079*xi**8+2626*xi**9+-485*xi**10)
返回mn
dist=np.arange(0,1.09,0.01)
m1_np=sympy.lambdify(x,m1(x))使用lambdify创建函数m1的numpy版本
结果_m1=m1 _np(距离)
f1=共积分(m1(x),x)#第一符号积分
f2=共积分(f1,x)#第二符号积分
定义d(xi):
df=(-1)*(f2.subs(x,xi))/(67e9*4.72537401e-9)
返回df
d_np=sympy.lambdify(x,d(x))
结果d=d\U np(距离)

全局sympy变量
x
与函数的参数
x
之间存在混淆。这些不一样。最好给他们分别命名,以减少混淆。然后,您将注意到
f2
使用符号
x
。可通过f2将其替换为参数值。subs(x,xi):

将numpy导入为np
进口交响乐
从sympy.abc导入a,x,y
#第一功能
def m1(xi):
mn=-110+210*xi+-113*xi**2+141*xi**3+-869*xi**4+2980*xi**5+
-6150*xi**6+7848*xi**7+-6079*xi**8+2626*xi**9+-485*xi**10)
返回mn
#值数组
dist=np.arange(0,1.09,0.01)
结果_m1=[]#存储结果的空列表
#数组上的迭代
对于v区:
结果_m1.追加(m1(v))
f1=共积分(m1(x),x)#第一符号积分
f2=共积分(f1,x)#第二符号积分
定义d(xi):
df=(-1)*(f2.subs(x,xi))/(67e9*4.72537401e-9)
返回df
#另一批结果的第二次迭代
结果d=[]
对于v区:
结果附加(d(v))
如注释中所述,
lambdify()
可用于创建numpy版本,该版本允许编写有益于numpy的调用:

将numpy导入为np
进口交响乐
从sympy.abc导入a,x,y
#第一功能
def m1(xi):
mn=-110+210*xi+-113*xi**2+141*xi**3+-869*xi**4+2980*xi**5+
-6150*xi**6+7848*xi**7+-6079*xi**8+2626*xi**9+-485*xi**10)
返回mn
dist=np.arange(0,1.09,0.01)
m1_np=sympy.lambdify(x,m1(x))使用lambdify创建函数m1的numpy版本
结果_m1=m1 _np(距离)
f1=共积分(m1(x),x)#第一符号积分
f2=共积分(f1,x)#第二符号积分
定义d(xi):
df=(-1)*(f2.subs(x,xi))/(67e9*4.72537401e-9)
返回df
d_np=sympy.lambdify(x,d(x))
结果d=d\U np(距离)

您对结果的描述不清楚。如果您展示了一些结果,而不是仅仅谈论它们,这可能会有所帮助(否则我们必须自己运行您的代码-ugg:)。
dist
是否是
numpy
的唯一用途?同时使用
sympy
numpy
通常会导致问题,尽管这里可能不是这样。我已经运行了您的代码,看到了问题(但还没有找到解决方案)。我认为你可以构造一个更简单的例子。虽然
x
m1
函数的参数,
m1(y)
m1(0)
表明,
d
不是同一类函数
df
不依赖于
x
argumenttry使用
symlp.lambdify
@hpaulj,很抱歉没有显示一些结果,这是一个重复mn表达式109次的列表,所以我不想在这里显示。但我明白你所说的x的差异,下面的答案为我做到了!谢谢你的帮助。你对结果的描述不清楚。如果您展示了一些结果,而不是仅仅谈论它们,这可能会有所帮助(否则我们必须自己运行您的代码-ugg:)。
dist
是否是
numpy
的唯一用途?同时使用
sympy
numpy
通常会导致问题,尽管这里可能不是这样。我已经运行了您的代码,看到了问题(但还没有找到解决方案)。我认为你可以构造一个更简单的例子。虽然
x
m1
函数的参数,
m1(y)
m1(0)
表明,
d
不是同一类型的