Modified Bessel Function of the First Kind

news2024/11/18 19:39:55

Abstract

最近接触到 von Mises–Fisher distribution, 其概率密度如下:
f p ( x ; μ , κ ) = κ p 2 − 1 ( 2 π ) p 2 I p 2 − 1 ( κ ) e κ μ ⊺ x \begin{aligned} f_{p}(\bm{x}; \bm{\mu}, \kappa) = \frac{\kappa^{\frac{p}{2}-1}} {(2\pi)^{\frac{p}{2}} I_{\frac{p}{2}-1}(\kappa)} e^{\kappa\bm{\mu^\intercal}\bm{x}} \end{aligned} fp(x;μ,κ)=(2π)2pI2p1(κ)κ2p1eκμx 其中 I α ( x ) I_{\alpha}(x) Iα(x) α \alpha α 阶第一类贝塞尔函数.查阅 Wikipedia, 其公式为:


前者是定义式, 后者是积分式. 其计算比较麻烦, 更不用说求导了, 好在这类带有 e ∗ ∗ ∗ e^{***} e∗∗∗ 的积分式能推出递推式, 主要有:

1. 推导 d I α d x = I α − 1 ( x ) − α x I α ( x ) \frac{dI_{\alpha}}{dx} = I_{\alpha-1}(x) - \frac{\alpha}{x} I_{\alpha}(x) dxdIα=Iα1(x)xαIα(x):

I α ( x ) = ∑ m = 0 ∞ ( x 2 ) 2 m + α m ! Γ ( m + α + 1 ) d I α d x = ∑ m = 0 ∞ ( 2 m + α ) ( x 2 ) 2 m + α − 1 2 m ! Γ ( m + α + 1 ) = ∑ m = 0 ∞ ( 2 m + 2 α − α ) ( x 2 ) 2 m + α − 1 2 m ! Γ ( m + α + 1 ) = ∑ m = 0 ∞ ( m + α ) ( x 2 ) 2 m + [ α − 1 ] m ! ( m + α ) Γ ( m + [ α − 1 ] + 1 ) − α x ∑ m = 0 ∞ ( x 2 ) ( x 2 ) 2 m + α − 1 m ! Γ ( m + α + 1 ) = I α − 1 ( x ) − α x I α ( x ) \begin{aligned} I_{\alpha}(x) &= \sum_{m=0}^{\infin} \frac{(\frac{x}{2})^{2m+\alpha}}{m!\Gamma(m+\alpha+1)} \\ \frac{dI_{\alpha}}{dx} &= \sum_{m=0}^{\infin} \frac{(2m+\alpha)(\frac{x}{2})^{2m+\alpha-1}}{2m!\Gamma(m+\alpha+1)} \\ &= \sum_{m=0}^{\infin} \frac{(2m+2\alpha-\alpha)(\frac{x}{2})^{2m+\alpha-1}}{2m!\Gamma(m+\alpha+1)} \\ &= \sum_{m=0}^{\infin} \frac{(m+\alpha)(\frac{x}{2})^{2m+[\alpha-1]}}{m!(m+\alpha)\Gamma(m+[\alpha-1]+1)} - \frac{\alpha}{x}\sum_{m=0}^{\infin} \frac{(\frac{x}{2})(\frac{x}{2})^{2m+\alpha-1}}{m!\Gamma(m+\alpha+1)} \\ &= I_{\alpha-1}(x) - \frac{\alpha}{x} I_{\alpha}(x) \end{aligned} Iα(x)dxdIα=m=0m!Γ(m+α+1)(2x)2m+α=m=02m!Γ(m+α+1)(2m+α)(2x)2m+α1=m=02m!Γ(m+α+1)(2m+2αα)(2x)2m+α1=m=0m!(m+α)Γ(m+[α1]+1)(m+α)(2x)2m+[α1]xαm=0m!Γ(m+α+1)(2x)(2x)2m+α1=Iα1(x)xαIα(x)

2. 推导 d I α d x = I α + 1 ( x ) + α x I α ( x ) \frac{dI_{\alpha}}{dx} = I_{\alpha+1}(x) + \frac{\alpha}{x} I_{\alpha}(x) dxdIα=Iα+1(x)+xαIα(x):

d I α d x = ∑ m = 0 ∞ ( 2 m + α ) ( x 2 ) 2 m + α − 1 2 m ! Γ ( m + α + 1 ) = ∑ m = 0 ∞ m ( x 2 ) 2 m + α − 1 m ! Γ ( m + α + 1 ) + ∑ m = 0 ∞ α ( x 2 ) 2 m + α − 1 2 m ! Γ ( m + α + 1 ) \begin{aligned} \frac{dI_{\alpha}}{dx} &= \sum_{m=0}^{\infin} \frac{(2m+\alpha)(\frac{x}{2})^{2m+\alpha-1}}{2m!\Gamma(m+\alpha+1)} \\ &= \sum_{m=0}^{\infin} \frac{m(\frac{x}{2})^{2m+\alpha-1}}{m!\Gamma(m+\alpha+1)} + \sum_{m=0}^{\infin} \frac{\alpha(\frac{x}{2})^{2m+\alpha-1}}{2m!\Gamma(m+\alpha+1)} \\ \end{aligned} dxdIα=m=02m!Γ(m+α+1)(2m+α)(2x)2m+α1=m=0m!Γ(m+α+1)m(2x)2m+α1+m=02m!Γ(m+α+1)α(2x)2m+α1 后一项就是 α x I α ( x ) \frac{\alpha}{x} I_{\alpha}(x) xαIα(x), 但前面一项看着不好搞, 式中 x 2 \frac{x}{2} 2x 的次数是 ( 2 m + α − 1 ) (2m+\alpha-1) (2m+α1), 却能推到 I α + 1 ( x ) I_{\alpha+1}(x) Iα+1(x), 起初还从 Γ ( m + α + 1 ) = Γ ( m + [ α + 1 ] + 1 ) m + α + 1 \Gamma(m+\alpha+1) = \frac{\Gamma(m+[\alpha+1]+1)}{m+\alpha+1} Γ(m+α+1)=m+α+1Γ(m+[α+1]+1) 搞, 但发现结果是: ∑ m = 0 ∞ m ( x 2 ) 2 m + α − 1 m ! Γ ( m + α + 1 ) = ∑ m = 0 ∞ m ( m + α + 1 ) ( x 2 ) 2 m + α − 1 m ! Γ ( m + [ α + 1 ] + 1 ) \sum_{m=0}^{\infin} \frac{m(\frac{x}{2})^{2m+\alpha-1}}{m!\Gamma(m+\alpha+1)} = \sum_{m=0}^{\infin} \frac{m(m+\alpha+1)(\frac{x}{2})^{2m+\alpha-1}}{m!\Gamma(m+[\alpha+1]+1)} m=0m!Γ(m+α+1)m(2x)2m+α1=m=0m!Γ(m+[α+1]+1)m(m+α+1)(2x)2m+α1 次数都不对, 咋搞? 发现若约去 m m m, 则 ( m − 1 ) ! ∣ m = 0 = ( − 1 ) ! (m-1)!|_{m=0} = (-1)! (m1)!m=0=(1)!, 那就单独拿出来看看: m ( x 2 ) 2 m + α − 1 m ! Γ ( m + α + 1 ) ∣ m = 0 = 0 \frac{m(\frac{x}{2})^{2m+\alpha-1}}{m!\Gamma(m+\alpha+1)}|_{m=0} = 0 m!Γ(m+α+1)m(2x)2m+α1m=0=0, 则:
d I α d x = ∑ m = 0 ∞ m ( x 2 ) 2 m + α − 1 m ! Γ ( m + α + 1 ) + α x I α ( x ) = ∑ m = 1 ∞ ( x 2 ) 2 m + α − 1 ( m − 1 ) ! Γ ( m + α + 1 ) + α x I α ( x ) t = m − 1 ⇒ = ∑ t = 0 ∞ ( x 2 ) 2 ( t + 1 ) + α − 1 t ! Γ ( ( t + 1 ) + α + 1 ) + α x I α ( x ) = ∑ t = 0 ∞ ( x 2 ) 2 t + [ α + 1 ] t ! Γ ( t + [ α + 1 ] + 1 ) + α x I α ( x ) = I α + 1 ( x ) + α x I α ( x ) \begin{aligned} \frac{dI_{\alpha}}{dx} &= \sum_{m=0}^{\infin} \frac{m(\frac{x}{2})^{2m+\alpha-1}}{m!\Gamma(m+\alpha+1)} + \frac{\alpha}{x} I_{\alpha}(x) \\ &= \sum_{m=1}^{\infin} \frac{(\frac{x}{2})^{2m+\alpha-1}}{(m-1)!\Gamma(m+\alpha+1)} + \frac{\alpha}{x} I_{\alpha}(x) \\ t = m-1 \Rightarrow &= \sum_{t=0}^{\infin} \frac{(\frac{x}{2})^{2(t+1)+\alpha-1}}{t!\Gamma((t+1)+\alpha+1)} + \frac{\alpha}{x} I_{\alpha}(x) \\ &= \sum_{t=0}^{\infin} \frac{(\frac{x}{2})^{2t+[\alpha+1]}}{t!\Gamma(t+[\alpha+1]+1)} + \frac{\alpha}{x} I_{\alpha}(x) \\ &= I_{\alpha+1}(x) + \frac{\alpha}{x} I_{\alpha}(x) \end{aligned} dxdIαt=m1=m=0m!Γ(m+α+1)m(2x)2m+α1+xαIα(x)=m=1(m1)!Γ(m+α+1)(2x)2m+α1+xαIα(x)=t=0t!Γ((t+1)+α+1)(2x)2(t+1)+α1+xαIα(x)=t=0t!Γ(t+[α+1]+1)(2x)2t+[α+1]+xαIα(x)=Iα+1(x)+xαIα(x)

3. 其他两个递推式

推了这两个, 那么两式相加得: I α − 1 ( x ) + I α + 1 ( x ) = 2 d I α d x I_{\alpha-1}(x) + I_{\alpha+1}(x) = 2 \frac{dI_{\alpha}}{dx} Iα1(x)+Iα+1(x)=2dxdIα 两式相减得: I α − 1 ( x ) − I α + 1 ( x ) = 2 I α I_{\alpha-1}(x) - I_{\alpha+1}(x) = 2 I_{\alpha} Iα1(x)Iα+1(x)=2Iα 就很自然了.

4. 积分式的递推式证明

见第一类修正贝塞尔函数的递推公式怎么证明?, 这是阶数 α \alpha α 为整数时的情况.

5. Exponentially Scaled Modified Bessel Function of the First Kind.

Defined as::
	ive(v, z) = iv(v, z) * exp(-abs(z.real))

所以当假定 z . r e a l ≥ 0 z.real \ge 0 z.real0 时, 求导数就按照莱布尼茨法则, 就可以了:

ive(v, z)' = ive(ctx.v - 1, z) - ive(ctx.v, z) * (ctx.v + z) / z

6. 用 scipy.special 包进行验证

import numpy as np
from scipy import special

v = 5.5
z = 3
iv = special.iv(v, z)
ive = special.ive(v, z)  # iv * np.exp(-abs(Re(z)))
print(iv)  # 0.04532335799965591
print(ive)  # 0.0022565171233900425

print(iv * np.exp(-z))  # 验证 ive = iv * exp(-z), 0.002256517123390042

# %% 验证导数
ivp = special.ivp(v, z)
ivp_1 = (special.iv(v - 1, z) + special.iv(v + 1, z)) / 2
ivp_2 = special.iv(v - 1, z) - v / z * iv
ivp_3 = special.iv(v + 1, z) + v / z * iv

print(ivp_1)  # 0.09310529508597687
print(ivp_2)  # 0.09310529508597686
print(ivp_3)  # 0.09310529508597688

# %% 验证ive的导数
ivep = (ivp - iv) * np.exp(-z)
ivep_1 = special.ive(v - 1, z) - (z + v) / z * ive
print(ivep)  # 0.0023789225684656356
print(ivep_1)  # 0.002378922568465644
补充材料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1507842.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

linux系统下,配置开机自启脚本常见的5种方法

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 所属的专栏:linux基础与进阶,shell脚本编写实战 景天的主页:景天科技苑 文章目录 linux下设置开机自动运行脚本的5种方法一、编辑/etc/rc.d/rc.local文件1、在自己需要启动的文件目录中编写一个…

CPU独占内核运行方式实现,并指定线程到特定CPU上执行

CPU独占内核运行方式实现,并指定线程到特定CPU上执行1. 隔离指定的CPU,避免其余线程run在被隔离的CPU上2. 绑定所有的interrupts(中断)到非隔离的CPU上,避免被隔离的CPU收到interrupt.3. C绑定线程运行在指定CPU也可以通过taskset来使线程/进…

一文详解WebView,不好理解就想想iframe,类比后秒懂了。

Hi,我是贝格前端工场,又到了给大家做技术扫盲的时候,本文讲一讲webview,有些老铁觉得很难懂,其实借助iframe来中转一下,就好理解了。 WebView是一种用于在应用程序中显示Web内容的组件。它可以嵌入到应用程…

免费、好用、强大的轻量级笔记软件评测

在我们不断寻找能提高个人和团队效率的工具的过程中,优质的笔记软件扮演着至关重要的角色。本文将介绍几款经过精选的免费且功能强大的笔记应用,这些应用不仅适合个人记录和整理思维,也适合团队合作和信息共享。 Joplin —— 隐私保护的开源…

京东按关键字搜索商品 API 返回值说明

京东按关键字搜索商品的API返回值说明如下: 总记录数(total_count):搜索结果的总数量。当前页码(page_no):当前请求的页码。每页记录数(page_size):每页显示…

蓝桥杯倒计时 36天-DFS练习

文章目录 飞机降落仙境诅咒小怂爱水洼串变换 飞机降落 思路&#xff1a;贪心暴搜。 #include<bits/stdc.h>using namespace std; const int N 10; int t,n; //这题 N 比较小&#xff0c;可以用暴力搜搜复杂度是 TN*N! struct plane{int t,d,l; }p[N]; bool vis[N];//用…

Elasticsearch:机器学习与人工智能 - 理解差异

作者&#xff1a;来自 Elastic Aditya Tripathi, Jessica Taylor 长期以来&#xff0c;人工智能几乎完全是科幻小说作家的玩物&#xff0c;人类将技术推得太远&#xff0c;以至于它变得活跃起来 —— 正如好莱坞让我们相信的那样 —— 开始造成严重破坏。 令人愉快的东西&#…

保护图纸不能打印,加密图纸如何加密只能看,不能打印复制

图纸是表达设计思想、传递产品信息、交流产品构思的最重要的工具&#xff0c;是企业中最重要的技术资料。 图纸作为企业重要的技术资料&#xff0c;包含了产品的核心设计、制造工艺、材料选择等关键信息。 那么&#xff0c;如何才能保护图纸呢&#xff1f; 首先&#xff0c;我…

Covalent(CQT)降低数据可用性成本,加快 Layer2 在 Web3 领域的扩张

Covalent Network&#xff08;CQT&#xff09;通过其统一 API&#xff0c;正在为 EVM Layer2 生态系统提供支持&#xff0c;减少了开发者需要导航多个数据供应商的需求&#xff0c;通过解决多链环境中的碎片化挑战&#xff0c;极大地提高了他们的效率。 通过其统一 API 支持 2…

静态源代码安全扫描工具测评结果汇总

测评背景 随着数字技术的进步&#xff0c;网络安全行业日益发展&#xff0c;企业对于DevSecOps的应用和落地的需求日益增加&#xff0c;静态源代码安全扫描工具已成为其中的关键产品或工具。同时&#xff0c;在代码安全审计或检测过程中&#xff0c;也需要选择一款合适的、好用…

动态代理详解(原理+代码+代码解析)

动态代理 1.什么是动态代理&#xff1f; 动态代理是一种在运行的时候动态的生成代理对象的技术。它在不改变原始类的情况下&#xff0c;对原始类的方法进行拦截或者增强。 2.动态代理可以实现的功能&#xff1f; 使用动态代理可以实现如下常用功能&#xff1a; 1.AOP&#x…

Python实现线性查找算法

Python实现线性查找算法 以下是使用 Python 实现线性查找算法的示例代码&#xff1a; def linear_search(arr, target):"""线性查找算法:param arr: 要搜索的数组:param target: 目标值:return: 如果找到目标值&#xff0c;返回其索引&#xff1b;否则返回 -1…

Observer 模式

文章目录 &#x1f4a1;问题引入&#x1f4a1;概念&#x1f4a1;例子&#x1f4a1;总结 &#x1f4a1;问题引入 假设有一个在线商店系统&#xff0c;用户可以订阅商品的库存通知。当某个商品的库存数量发生变化时&#xff0c;系统会自动发送通知给所有订阅了该商品的用户。设计…

Anaconda下载安装及配置pytorch环境

先解释一下Python、Anaconda、Pytorch是啥 Python是一种广泛使用的编程语言&#xff0c;在许多领域都有应用。它具有简洁的语法&#xff0c;易于学习&#xff0c;并且有大量的第三方库可以使用。 Anaconda是一个Python的包和环境管理软件&#xff0c;提供了许多用于数据科学&a…

融资利率选哪家好?

第一&#xff1a;怎么理解融资融券&#xff1f; 融资融券交易&#xff0c;又称“证券信用交易”&#xff0c;分为融资交易和融券交易。是指投资者通过向具有融资融券业务资格的证券公司提供担保物&#xff0c;借入资金买入证券&#xff08;融资交易&#xff09;或借入证券并卖…

前端基础篇-深入了解用 HTML 与 CSS 实现标题排版

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 HTML 与 CSS 概述 2.0 HTML - 标题排版 2.1 图片标签 2.2 标题标签 2.3 水平标签 2.4 实现标题排版 3.0 HTML - 标题样式(style 样式) 3.1 CSS 的引入方式 3.2…

docker学习入门篇

1、docker简介 docker官网&#xff1a; www.docker.com dockerhub官网&#xff1a; hub.docker.com docker文档官网&#xff1a;docs.docker.com Docker是基于Go语言实现的云开源项目。 Docker的主要目标是&#xff1a;Build, Ship and Run Any App, Anywhere(构建&…

ScaleKD: Distilling Scale-Aware Knowledge in Small Object Detector

ScaleKD: Distilling Scale-Aware Knowledge in Small Object Detector在小目标检测器中提取尺度感知知识 摘要 尽管通用目标检测取得了显著的成功&#xff0c;但小目标检测&#xff08;SOD&#xff09;的性能和效率仍然令人不满意。与现有的努力平衡推理速度和SOD性能之间的…

华为数通方向HCIP-DataCom H12-821题库(多选题:121-140)

第121题 以下哪些事件会导致IS-IS产生一个新的LSP? A、引入的IP路由发送变化 B、周期性更新 C、接口开销发生了变化 D、邻接Up或Down 【参考答案】ABCD 【答案解析】 第122题 以下哪些协议既支持网络配置管理又支持网络监控管理? A、Telemetry B、NETCONF C、SNMP D、LLDP …

机器视觉学习(一)—— 认识OpenCV、安装OpenCV

目录 一、认识OpenCV 二、通过pip工具安装OpenCV 三、PyCharm安装OpenCV 一、认识OpenCV OpenCV&#xff08;Open Source Computer Vision Library&#xff0c;开源计算机视觉库&#xff09;是一个跨平台的计算机视觉库&#xff0c;最初由威尔斯理工学院的Gary Bradski于199…