鱼C论坛

 找回密码
 立即注册
查看: 3089|回复: 8

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

[复制链接]
发表于 2022-4-16 09:47:54 | 显示全部楼层 |阅读模式
10鱼币
公式就如图1所示有v'和γ两个参数,并且里面嵌套了很多函数,其中f这个函数还需要对v_i这个变量积分,且f里面还有一个判断条件,下面的代码是我自己写的,其他部分都没问题了就是积分那里那一块怎么算都是返回0,想求教一下各路大神

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

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

  8. def seed_photon_number_density(vi):
  9.     g = gamma(vi)
  10.     usy = photon_energy_density(vi)
  11.     return usy / ( h*vi )

  12. def f_ic(vi,g,v):
  13.     g2 = g**2
  14.     x_ic = (v)/(4*g2*vi)
  15.     e_ic = (h*v)/(g*mc)
  16.     sig = (4*g*h*v)/(mc)
  17.     q = (e_ic)/( sig*(1-e_ic) )
  18.     if 0 <= q <=1:
  19.         lnq = np.log(q)
  20.         q2 = q**2
  21.         sigq = sig*q
  22.         sigq2 = sigq**2
  23.         a0 = ( sigq2 ) / ( 1+sigq )
  24.         a1 = 2*q*lnq+1+q-2*q2+(1/2)*a0*(1-q)
  25.         return x_ic*a1
  26.     else:
  27.         return 0

  28. def p_ssc(v,g):
  29.     r02 = r0**2
  30.     def sactter(vi,g,v):
  31.         return f_ic(vi,g,v)*seed_photon_number_density(vi)
  32.     add,err = integrate.quad(sactter, 1e8, 1e30, args=(g,v))
  33.     return 8*pi*r02*c*h*add
复制代码

图片1.png
图片2.png
图片3.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-16 09:48:36 | 显示全部楼层
里面其他的变量都是一些常数,有需要用到的话我再贴上来
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-16 11:11:40 From FishC Mobile | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-4-16 11:40 编辑

请问图中的 h 和 mec^2 怎么获得?你代码中的 h 和 mc 也没有定义(第18行、第19行),是怎么知道值的?
me 是电子质量?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 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是电子质量
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-16 12:00:44 | 显示全部楼层
其他一些常数我是这么设置的

  1. ##常数, ##电子质量, ##光速, ##电子能量, ##普朗克常数,
  2. ##自然对数, ##电子电量, ##玻尔兹曼常量, ##电子散射截面,
  3. ##电子经典半径
  4. pi, me, c, c2, mc, h, lnN,\
  5. e, k, sigmat, r0 = [3.14159, 9.109e-28, 2.997925e+10, (2.997925e+10)**2, (9.109e-28)*( (2.997925e+10) **2),
  6.                 6.626e-27, 2.718, 4.803242e-10, 1.38e-16, 0.665e-24, 2.8179e-13
  7.                  ]
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-4-16 12:27:17 From FishC Mobile | 显示全部楼层
题目太难了,但至于为什么老是输出 0,可能是参数影响,因为程序语言对于浮点数太小无法正常计算的,根据你给的参数,其中包含 6.626e-27 这类的浮点(表示小数点后27位)基本程序语言无法计算,都视为 0。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

前面有个稍微简单点的 我也用这种方法写出来了那个没有问题就这里这个不行
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

抱歉了,这我就不清楚了,这是有关电子学,微积分学等知识,太难了。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-4-16 18:29:11 | 显示全部楼层
傻眼貓咪 发表于 2022-4-16 16:08
抱歉了,这我就不清楚了,这是有关电子学,微积分学等知识,太难了。

哈哈哈哈 谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 04:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表