首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:有界包含变量的Sympy定积分

Python:有界包含变量的Sympy定积分
EN

Stack Overflow用户
提问于 2017-07-10 10:31:41
回答 1查看 1.1K关注 0票数 0

我在使用渐近模块计算定积分时遇到了一些问题。Equation当我尝试运行以下代码时,程序无法完成。问题似乎来自于这样一个事实,即积分边界包括方程中的变量。它一直在运行,并且永远不能求解方程。我能够通过使用不同的边界来求解方程,但这不是我要做的。如果你有任何建议或建议,我很乐意倾听。谢谢你的帮助。

代码语言:javascript
运行
复制
import sympy
import numpy as np
from scipy.integrate import quad
import matplotlib.pyplot as plt

sympy.init_printing()
Q, eta, phi, kappa, lamb, beta, T0, T1, deltaT, T = sympy.symbols('Q eta phi kappa lamb beta T0 T1 deltaT T', real=True)


integrand = sympy.integrate(eta**(lamb*beta-1)*sympy.exp(-eta**2), (eta,0,eta))

T = T0 + deltaT*integrand

fT = sympy.lambdify((T0,T1,eta,lamb,beta), T, 'numpy')
EN

回答 1

Stack Overflow用户

发布于 2017-07-12 01:33:38

似乎numpy没有这个表达式所需的功能。请参阅下面的示例代码。

代码语言:javascript
运行
复制
import sympy as sym
import numpy as np

eta, eta_prime, lamb, beta, temp = sym.symbols('eta eta_prime lamb beta temp', real=True)
integrand = sym.integrate(eta_prime**(temp)*sym.exp(-eta_prime**2), (eta_prime, 0, eta))
integrand = integrand.replace(temp, lamb*beta-1)
integrand = sym.simplify(integrand)

sym.pprint(integrand)

T, T0, T1, deltaT = sym.symbols('T T0 T1 deltaT', real=True)
T = T0 + deltaT*integrand

sym.pprint(T)

fT = sym.lambdify((T0,T1,eta,lamb,beta),T)

print(fT(1,2,3,4,5))

fT_numpy = sym.lambdify((T0,T1,eta,lamb,beta),T, 'numpy')

print(fT_numpy(1,2,3,4,5))

最后一行中断,因为numpy不知道渐近使用的lowergamma函数。

注意,我必须在积分中引入一个临时实变量temp,它后来被正确的表达式lamb*beta-1取代。从数学上讲,这种替换是精确的,但不知何故,渐近看不到它,当给定原始表达式时,它将永远花费时间。我还在整数(而不是边界)中用eta_prime替换了eta

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45002989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档