我想用python集成一个函数,其中的输出是一个新函数,而不是一个数值。例如,我有一个方程式(来自Arnett 1982——对超新星的分析描述):
def A(z,tm,tni):
y=tm/(2*tni)
tm=8.8 # diffusion parameter
tni=8.77 # efolding time of Ni56
return 2*z*np.exp((-2*z*y)+(z**2))
然后求A的积分,然后画出结果。首先,我天真地尝试过西皮·夸德公司名称:
^{pr2}$其中B也是一个预定义的函数(这里没有介绍)。A和B都是z的函数,但是最后的方程是时间t的函数(我相信这就是我导致代码失败的原因)
A和B的积分从0到x,其中x是时间t的函数。尝试按代码的原样运行会出现错误:“ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()”。在
所以经过短暂的搜索,我想也许辛普森会是最好的选择。不过,我在这方面也失败了。在
我想知道有没有人能给我一个有用的建议,如何完成这项任务?在
非常感谢, 扎克
我想你要找的是lambda表达式(如果我没听错你说的话。。有关lambda函数的额外信息和一些示例,请参见here)。在
它们允许您在A中定义一个匿名函数并返回它,这样您就可以得到B函数了,应该是这样工作的:
希望我能给你一个体面的答复!在
我想你得到的错误来自于一个错误的调用scipy.integrate.quad公司名称:
最后,以下功能应该起作用:
但是一个更好的解决方案可能是对A和B进行分析积分,然后计算表达式as murison suggested。在
你可以把一个解析积分。假设我没有因为起床太晚而错过一些愚蠢的事情,下面的方法有帮助吗?在
最后一行给出了解析形式的A函数的积分,尽管它需要计算虚误差函数(可以用它来计算scipy.special.erfi()). 在
相关问题 更多 >
编程相关推荐