在python/matplotlib中如何将积分放入函数中

2024-05-29 11:21:40 发布

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

因此,我的目标是实现一个函数f(x) 我的问题是我的函数中有一个积分,我只知道如何构造定积分,所以我的问题是如何在函数中创建不定积分(或者可能还有其他方法我目前不知道)

我的职能是:

enter image description here

(G是引力常数,尽管为了简单起见,您可以不必回答G,我将在代码中添加它) 这是起点,但我不知道怎么做积分部分

import numpy as np
def f(x):
    rho = 5*(1/(1+((x**2)/(3**2))))
    function_result = rho * 4 * np.pi * x**2
    return function_result

如果需要详细说明,请告诉我。在

编辑----------------------------------------------------- 我取得了一些重大进展,但仍有一个小错误。 差不多,我是这样做的:

^{pr2}$

当我为f插入一个数字时,这很好;但是,当我插入一个数组时(正如我稍后需要的那样),我得到了一个错误:

    raise SympifyError(a)
sympy.core.sympify.SympifyError: SympifyError: [3, 3, 3, 3, 3]

(在这里,我做了print(f([3,3,3,3,3])))。通常,函数返回一个值数组。所以如果我做了f([3,2]),它应该返回[f(3),f(2)]。但是,出于某种原因,它不适合我的功能。。。。在

提前谢谢


Tags: 方法函数代码目标错误np常数引力
2条回答

怎么样:

from sympy import *
x, p0, rc = symbols('x p0 rc', real=True, positive=True)
rho = p0*(1/(1+((x**2)/(rc))))* 4 * pi * x**2
fooply = integrate(rho,x)/x

rho, fooply
(4*pi*p0*x**2/(1 + x**2/rc),
4*pi*p0*rc*(-sqrt(rc)*atan(x/sqrt(rc)) + x)/x)

fooply = fooply.subs({p0: 2.0, rc: 3.0})
np_fooply = lambdify(x, fooply, 'numpy')

print(np_fooply(np.array([3,3,3,3,3])))
[ 29.81247362  29.81247362  29.81247362  29.81247362  29.81247362]

要将数组插入SymPy表达式,需要使用lambdify将其转换为NumPy函数(f = lambdify(x, fooply))。仅仅使用def和{}是行不通的。在

另外,一般来说,当使用符号计算时,最好使用sympy.pi,而不是{},因为前者是符号的,可以简化。它将由lambdify自动转换为数字pi。在

相关问题 更多 >

    热门问题