snowJR 发表于 2022-4-16 09:47:54

有一个两个参数的积分想问问大家该怎么写

公式就如图1所示有v'和γ两个参数,并且里面嵌套了很多函数,其中f这个函数还需要对v_i这个变量积分,且f里面还有一个判断条件,下面的代码是我自己写的,其他部分都没问题了就是积分那里那一块怎么算都是返回0,想求教一下各路大神{:5_104:} {:5_104:}

def gamma(v):
    return ((3*v) / (4*vl))**0.5

def photon_energy_density(vi):
    g = gamma(vi)
    lvi = syn_luminosity_jet(g)
    R2 = R**2
    return (9/4)*( lvi / (4*pi*R2*c) )

def seed_photon_number_density(vi):
    g = gamma(vi)
    usy = photon_energy_density(vi)
    return usy / ( h*vi )

def f_ic(vi,g,v):
    g2 = g**2
    x_ic = (v)/(4*g2*vi)
    e_ic = (h*v)/(g*mc)
    sig = (4*g*h*v)/(mc)
    q = (e_ic)/( sig*(1-e_ic) )
    if 0 <= q <=1:
      lnq = np.log(q)
      q2 = q**2
      sigq = sig*q
      sigq2 = sigq**2
      a0 = ( sigq2 ) / ( 1+sigq )
      a1 = 2*q*lnq+1+q-2*q2+(1/2)*a0*(1-q)
      return x_ic*a1
    else:
      return 0

def p_ssc(v,g):
    r02 = r0**2
    def sactter(vi,g,v):
      return f_ic(vi,g,v)*seed_photon_number_density(vi)
    add,err = integrate.quad(sactter, 1e8, 1e30, args=(g,v))
    return 8*pi*r02*c*h*add

snowJR 发表于 2022-4-16 09:48:36

里面其他的变量都是一些常数,有需要用到的话我再贴上来

傻眼貓咪 发表于 2022-4-16 11:11:40

本帖最后由 傻眼貓咪 于 2022-4-16 11:40 编辑

请问图中的 h 和 mec^2 怎么获得?你代码中的 h 和 mc 也没有定义(第18行、第19行),是怎么知道值的?
me 是电子质量?

snowJR 发表于 2022-4-16 11:58:01

傻眼貓咪 发表于 2022-4-16 11:11
请问图中的 h 和 mec^2 怎么获得?你代码中的 h 和 mc 也没有定义(第18行、第19行),是怎么知道值的?
m ...

是的 h是普朗克常数,mc是电子能量(me*c**2),me是电子质量

snowJR 发表于 2022-4-16 12:00:44

其他一些常数我是这么设置的

##常数, ##电子质量, ##光速, ##电子能量, ##普朗克常数,
##自然对数, ##电子电量, ##玻尔兹曼常量, ##电子散射截面,
##电子经典半径
pi, me, c, c2, mc, h, lnN,\
e, k, sigmat, r0 = [3.14159, 9.109e-28, 2.997925e+10, (2.997925e+10)**2, (9.109e-28)*( (2.997925e+10) **2),
                6.626e-27, 2.718, 4.803242e-10, 1.38e-16, 0.665e-24, 2.8179e-13
               ]

傻眼貓咪 发表于 2022-4-16 12:27:17

题目太难了,但至于为什么老是输出 0,可能是参数影响,因为程序语言对于浮点数太小无法正常计算的,根据你给的参数,其中包含 6.626e-27 这类的浮点(表示小数点后27位)基本程序语言无法计算,都视为 0。

snowJR 发表于 2022-4-16 14:45:38

傻眼貓咪 发表于 2022-4-16 12:27
题目太难了,但至于为什么老是输出 0,可能是参数影响,因为程序语言对于浮点数太小无法正常计算的,根据你 ...

前面有个稍微简单点的 我也用这种方法写出来了那个没有问题就这里这个不行

傻眼貓咪 发表于 2022-4-16 16:08:33

snowJR 发表于 2022-4-16 14:45
前面有个稍微简单点的 我也用这种方法写出来了那个没有问题就这里这个不行

抱歉了,这我就不清楚了{:10_277:},这是有关电子学,微积分学等知识,太难了。

snowJR 发表于 2022-4-16 18:29:11

傻眼貓咪 发表于 2022-4-16 16:08
抱歉了,这我就不清楚了,这是有关电子学,微积分学等知识,太难了。

哈哈哈哈 谢谢啦
页: [1]
查看完整版本: 有一个两个参数的积分想问问大家该怎么写