python利用函数求不及格率_python中概率分布函数加权的二次积分

我有一个问题,在一个依赖于2个变量(q,r)的函数中执行二定积分,并且其中有一个额外的积分。

我想用高斯函数加权的函数是:

F(q,r)=f(q,r)+int_{0,r}(h(q,r')dr')

并且in必须再次积分才能用高斯函数加权:

I(q)=int_{0,inf}(F(q,r)^2*g(r)dr)

高斯g(r)位于坐标R的中心。在

你可以看到的主要问题是我把数组和标量混合在一起。对于高斯函数(np.ogrid和轴上求和)使用相同的方法可能是一个解决方案,但我不知道如何实现它。在import numpy as np

from scipy.integrate import quad

import math as m

R=53.

R0=40.

delta=50.

c=2.

qm, rm = np.ogrid[0.0005:2.0:0.0005, 20:100:500j]

#normalized gauss function

#g(r)

def gauss_grid(r,Rmin,pd):

def gauss(r,Rmin,pd):

sigma=1.5

return (1/sigma)*np.exp(-((r-Rmin)**2)/(2*sigma**2))

gauss_grid = gauss(r,Rmin,pd)

#normalization of gaussian

gauss_grid /= np.sum(gauss_grid)

return gauss_grid

#spherical function

#f(q,r)

def form(q,R):

return (4/3)*m.pi*3*(np.sin(q*R)-q*R*np.cos(q*R))/(q**3)

#FINAL function

#I(q)

def helfand():

def F(q,R):

#integral (0,R) of h(q,r)

def integral(q,Rmax):

#h(q,r)

def integrand(r,q):

return np.sin(q*r)*(r**2)/(q*r*(1+np.exp(c*(R0-r))))

return quad(integrand, 0, Rmax, args=(q))[0]

return (form(q,R)+delta*integral(q,R))**2

FF_hel=F(qm,rm)

FF_hel *= gauss_grid(rm,R,pd)

I=FF_hel.sum(axis=1)

return I,qm.ravel()

helfand()

*更新****

我试过用整合库(使用quad)和我做不到。就像它没有将正确的参数(q)传递给下一个函数。这里有一个非常简单的版本:

^{pr2}$

错误说明:Supplied function does not return a valid float.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值