社区首页 >问答首页 >在试图积分的同时溢出指数函数

在试图积分的同时溢出指数函数
EN

Stack Overflow用户
提问于 2021-02-19 12:05:53
回答 1查看 216关注 0票数 0

我想数值积分一个离散的数据集(给定的熊猫序列) -here橙色,它与给定的解析指数函数(费米-狄拉克分布的导数) -here蓝色相乘。然而,当指数变大时(例如对于小T),当导数fermi_dT(E, mu, T)爆炸时,我就失败了。我找不到用合适的方式重写fermi_dT(E, mu, T)的方法。

下面是一个很小的例子(不是熊猫系列),我用高斯模拟了数据集。

如果T<30.我会弄到溢出的。有没有人想出一种聪明的方法来四处走动?

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

scale_plot = 1e6
kB = 8.618292134831462e-5 #in eV
Ef = 2.0

def gaussian(E, amp, E0, sig):
    return amp * np.exp(-(E-E0)**2 / sig)

def fermi_dT(E, mu, T):
    return ((np.exp((E - mu) / (kB * T))*(E-mu)) / ((1 + np.exp((E - mu) / (kB * T)))**2*kB*T**2))


T = 100.0
energies = np.arange(1.,3.,0.001)

plt.plot(energies, (energies-Ef)*fermi_dT(energies, Ef, T))
plt.plot(energies, gaussian(energies, 1e-5, 1.8, .01))
plt.plot(energies, gaussian(energies, 1e-5, 1.8, .01)*(energies-Ef)*fermi_dT(energies, Ef, T)*scale_plot)
plt.show()

cum = integrate.cumtrapz(gaussian(energies, 1e-5, 1.8, .01)*(energies-Ef)*fermi_dT(energies, Ef, T), energies)
print(cum[-1])

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-19 13:04:12

这类数值问题在处理指数导数时是很常见的。诀窍是先计算日志,然后再应用指数:

log(a*exp(b) / (1 + c*exp(d)) ** k) = log(a) + b - k * log(1 + exp(log(c) + d)))

现在,您需要找到一种精确计算log(1 + exp(x))的方法。根据这个post的说法,幸运的是,人们以前也做过这样的事情。所以也许您可以使用fermi_dT重写log1p

代码语言:javascript
代码运行次数:0
复制
import numpy as np

def softplus(x, limit=30):
    val = np.empty_like(x)
    val[x>=limit] = x[x>=limit]
    val[x<limit] = np.log1p(np.exp(x[x<limit]))
    return val

def fermi_dT(E, mu, T):
    a = (E - mu) / (kB * T ** 2)
    b = d = (E - mu) / (kB * T)
    k = 2
    val = np.empty_like(E)
    val[E-mu>=0] = np.exp(np.log(a[E-mu>=0]) + b[E-mu>=0] - k * softplus(d[E-mu>=0]))
    val[E-mu<0] = -np.exp(np.log(-a[E-mu<0]) + b[E-mu<0] - k * softplus(d[E-mu<0]))
    return val
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66284316

复制
相关文章
Lucene系列(十)索引格式之pos文件
因此文件格式与doc总体上讲也是基本相同的,因为不用存储跳跃数据(doc文件中的跳跃数据包含了pos文件的文件位置,可以协助查找),文件反而简单了许多.
呼延十
2021/03/15
1.8K0
【说站】python如何定义索引模块类
2、索引一般都是通过文章标识来索引文章内容,而倒排索引正好相反,通过文章内容来索引文章标识。
很酷的站长
2022/11/23
4060
【说站】python如何定义索引模块类
类索引和父类索引
类索引(this_class)和父类索引(super_class)都是一个u2类型的数据,类索引用于确定这个类的全限定名,父类索引用于确定这个类的父类全限定名。由于java语言不允许多重继承,所以父类索引只有一个。
不会飞的小鸟
2020/06/14
8120
4、web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象
天降攻城狮
2019/07/03
1.1K0
4、web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
weex-24-modal模块
如果你觉得这些界面颜色风格和你的应用配色格格不入,你可以自定义自己想要的类似的组件!
酷走天涯
2018/09/14
9920
weex-24-modal模块
类模块
类是一种特殊的代码组织方式,普通模块写的代码是Sub过程、或者Function函数,而类模块里的代码,它都属于这个类,在它内部也可以有Sub过程、或者Function函数,但和普通模块里不同的是,它在使用之前,必须要先创建类的实例,也就是和VBA使用外部对象字典等那样,要New一个:
xyj
2020/07/28
7410
一起学Excel专业开发24:使用类模块创建对象3
在《一起学Excel专业开发23:使用类模块创建对象2》中,我们自定义的集合类存在两个方面的不足:
fanjy
2019/11/11
9410
一起学Excel专业开发24:使用类模块创建对象3
第24期:索引设计(多值索引的适用场景)
多值索引和基于多个字段的联合索引完全不同,联合索引是基于多个一维字段,比如字段 r1 int, r2 int,r3 int,这三个字段的组合是联合索引。一般用于三个字段的联合查找,比如 r1 = 1 and r2 = 2 and r3 = 2 等等。
爱可生开源社区
2021/04/07
6970
小程序<live-pusher>、<live-player>标签无法正常使用?
出于政策和合规的考虑,微信暂时没有放开所有小程序对 <live-pusher> 和 <live-player> 标签的支持:
hhualiu
2019/03/11
2.2K0
小程序<live-pusher>、<live-player>标签无法正常使用?
解决BRAT无法标注中文标签
你的配置文件,也就是**anntation.conf**,一定要是**UTF-8**编码的。
用户7483561
2020/06/29
1.1K0
Python基础24-MySQL模块pymysql
-多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。 -擅长Web集群架构与自动化运维,曾负责国内某大型金融公司运维工作。 -devops项目经理兼DBA。 -开发过一套自动化运维平台(功能如下): 1)整合了各个公有云API,自主创建云主机。 2)ELK自动化收集日志功能。 3)Saltstack自动化运维统一配置管理工具。 4)Git、Jenkins自动化代码上线及自动化测试平台。 5)堡垒机,连接Linux、Windows平台及日志审计。 6)SQL执行及审批流程。 7)慢查询日志分析web界面。
DriverZeng
2022/09/26
2.7K0
Python基础24-MySQL模块pymysql
nginx模块上下文索引和索引
index : 是所有模块在ngx_modules.c文件中的ngx_modules数组中的序号,它与ngx_modules数组中所有模块的顺序是一致的。
随心助手
2022/11/30
2970
类模块——举例
前面使用Open 进行的文件操作,使用起来不是很方便,但是FileSystemObject里的TextStream使用起来就比较方便了,知道了类之后,就可以使用类对Open的文件操作进行包装。
xyj
2020/07/28
5430
类模块——接口
类模块另外一种更为抽象的用法是作为接口,Excel VBA中没有真正的接口这种东西,接口也是使用类来实现的。
xyj
2020/07/28
4380
类模块——接口
TrickBot银行木马最新的POS相关模块psfin32分析
TrickBot通过不断增加窃取用户凭证的新模块而不断进化,我们已发布的最新进展是关于它的pwgrab32模块。最近,我们又发现了一个新的POS相关的恶意模块,使得该银行木马更加危险。一旦受感染的计算机连接到支持POS服务和设备的网络,新模块将开始活动。
FB客服
2018/12/25
6190
TrickBot银行木马最新的POS相关模块psfin32分析
Hibernate 4 升级到 5 后显示未知实体错误
请参考: Hibernate 4 升级到 Hibernate 5 的时候 SessionFactory 不能使用 中的内容。
HoneyMoose
2019/10/18
6930
Hibernate 4 升级到 5 后显示未知实体错误
PHP pos() 函数
每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。
用户1448800
2021/08/21
1.9K0
4. html块标签、含样式的标签
“仅供学习,转载请注明出处” html块标签 1、<div> 标签 块元素,表示一块内容,没有具体的语义。 2、<span> 标签 行内元素,表示一行中的一小段内容,没有具体的语义。 “编写一个示例如下:” <!DOCTYPE html> <html> <head> <title></title> </head> <body> <!-- span 不换行 --> <span>我</span> <span>是</span> <span>肥</span> <span>白</span> <!-- d
Devops海洋的渔夫
2022/01/14
1.5K0
4. html块标签、含样式的标签
Sparkml库标签和索引之间转化
StringIndexer StringIndexer将一串字符串标签编码为一列标签索引。这些索引范围是[0, numLabels)按照标签频率排序,因此最频繁的标签获得索引0。如果用户选择保留它们,那么看不见的标签将被放在索引numLabels处。如果输入列是数字,我们将其转换为字符串值并将为其建索引。当下游管道组件(例如Estimator或 Transformer使用此字符串索引标签)时,必须将组件的输入列设置为此字符串索引列名称。在许多情况下,您可以使用设置输入列setInputCol。 例1, 假如
Spark学习技巧
2018/01/31
7240
Hibernate 4 升级到 5 后显示未知实体错误
请参考: Hibernate 4 升级到 Hibernate 5 的时候 SessionFactory 不能使用 中的内容。
HoneyMoose
2019/10/15
6460
Hibernate 4 升级到 5 后显示未知实体错误

相似问题

java.lang.IllegalStateException:未知标签!pos=40 poolCount = 47

10

JBoss EAP7.0 java.lang.IllegalStateException:未知标签!pos=3 poolCount = 20警告

12

无法索引类模块-info.class

10

jbas015852无法索引类java.lang.IllegalStateException:未知标记

17

Weblogic 12c无法解析类文件hikaricp-3.4.5模块-info.class

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档