文章目录

  • Airy函数
  • 积分形式
  • Airy相关函数
    • airye
    • ai_zeros,bi_zeros
    • itairy

Airy函数

Ai和Bi是微分方程的两个独立的解

y′′(x)=xy(x)y''(x)=xy(x) y′′(x)=xy(x)

函数airy的返回值有4个,分别是Ai, Bi及其导数。

import scipy.special as sc
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-15,2,0.1)
Ai, Aip, Bi, Bip = sc.airy(x)
plt.plot(x,Ai)
plt.plot(x,Bi)
plt.show()

如图所示

积分形式

Airy函数的积分形式可写为

Ai(x)=1π∫cos⁡(13t3+xt)dtBi(x)=1π∫e−t33+xt+sin⁡(t33+xt)dt\begin{aligned} A_i(x)&=\frac{1}{\pi}\int\cos(\frac{1}{3}t^3+xt)\text dt\\ B_i(x)&=\frac{1}{\pi}\int e^{-\frac{t^3}{3}+xt}+\sin(\frac{t^3}{3}+xt) \text dt \end{aligned} Ai​(x)Bi​(x)​=π1​∫cos(31​t3+xt)dt=π1​∫e−3t3​+xt+sin(3t3​+xt)dt​

Airy相关函数

在scipy的特殊函数包中,除了airy之外,还封装了四个与Airy函数相关的函数

  • airye:指数缩放的Airy函数及其导数
  • ai_zerosAi及其导数的零点
  • bi_zerosBi及其导数的零点
  • itairy:Airy函数的积分

airye

其中,airyeairy的缩放关系如下

k = 2.0/3.0
eAi  = Ai  * np.exp(k*z*sqrt(z))
eAip = Aip * np.exp(k*z*sqrt(z))
eBi  = Bi  * np.exp(-abs(k*(z*sqrt(z)).real))
eBip = Bip * np.exp(-abs(k*(z*sqrt(z)).real))

绘制图像如下

代码为

z = np.linspace(0, 50, 500)
data = sc.airye(z)
f, axes = plt.subplots(2, 1)
names = [["eAi", "eAip"], ["eBi", "eBip"]]
for i in range(2):axes[i].plot(z, data[2*i], "-r", z, data[2*i+1], "-b")axes[i].legend(names[i])axes[i].grid(True)plt.show()

ai_zeros,bi_zeros

ai_zerosbi_zeros输入为零点个数,输出为AiBi及其导数的零点所在的位置。以ai_zeros(n)为例,其返回值共有四组

  • a:Ai(x)A_i(x)Ai​(x)的前n个零点的位置
  • ap:Ai′(x)A_i'(x)Ai′​(x)的前n个零点的位置
  • ai:Ai(x)A_i(x)Ai​(x)的前n个零点对应的横坐标在Ai′(x)A_i'(x)Ai′​(x)上的值
  • aip:Ai′(x)A_i'(x)Ai′​(x)的前n个零点对应的横坐标在Ai(x)A_i(x)Ai​(x)上的值

这两个函数与airy的关系如下

绘图代码为

x = np.arange(-15,2,0.1)
data = sc.airy(x)
Ai, Aip, Bi, Bip = sc.airy(x)
names = [["eAi", "eAip"], ["eBi", "eBip"]]
f, axes = plt.subplots(2, 1)
# 绘制Ai和Bi及其导数的图像
for i in range(2):axes[i].plot(x, data[2*i], "-r", x, data[2*i+1], "-b")axes[i].legend(names[i])axes[i].grid(True)# 求出Airy函数的相应零点
aZeros = sc.ai_zeros(5)
bZeros = sc.bi_zeros(5)axes[0].stem(aZeros[0],aZeros[3])
axes[0].stem(aZeros[1],aZeros[2])
axes[1].stem(bZeros[0],bZeros[3])
axes[1].stem(bZeros[1],bZeros[2])plt.show()

itairy

最后,itairy(x)为Airy函数的积分,返回值分别是

Apt=∫0xAi(t)dtBpt=∫0xBi(t)dtAnt=∫0xAi(−t)dtBnt=∫0xAi(−t)dt\begin{aligned} A_{pt}=\int_0^xA_i(t)\text dt\quad&B_{pt}=\int_0^xB_i(t)\text dt\\ A_{nt}=\int_0^xA_i(-t)\text dt\quad&B_{nt}=\int_0^xA_i(-t)\text dt \end{aligned} Apt​=∫0x​Ai​(t)dtAnt​=∫0x​Ai​(−t)dt​Bpt​=∫0x​Bi​(t)dtBnt​=∫0x​Ai​(−t)dt​

其前两个返回值的图像为

绘图代码为

x = np.arange(-15,2,0.1)
data = sc.itairy(x)
plt.plot(x, data[0], "-r", x, data[1], "-b")
plt.legend(["Apt", "Bpt"])
plt.grid(True)plt.show()

【Python】scipy之艾里函数相关推荐

  1. boost::math模块计算艾里函数的零点的测试程序

    boost::math模块计算艾里函数的零点的测试程序 实现功能 C++实现代码 实现功能 boost::math模块计算艾里函数的零点的测试程序 C++实现代码 #ifdef _MSC_VER # ...

  2. matlab 自弯曲光束,艾里光束自弯曲性质的控制

    引用本文 施瑶瑶, 吴彤, 刘友文, 李艳, 周融. 艾里光束自弯曲性质的控制. 42(12): 1401-1407 SHI Yao-yao, WU Tong, LIU You-wen, LI Yan ...

  3. python scipy样条插值函数大全(interpolate里interpld函数)

    scipy样条插值 scipy样条插值 1.样条插值法是一种以可变样条来作出一条经过一系列点的光滑曲线的数学方法.插值样条是由一些多项式组成的,每一个多项式都是由相邻的两个数据点决定的,这样,任意的两 ...

  4. python二维图颜色函数_Python scipy的二维图像卷积运算与图像模糊处理操作示例

    本文实例讲述了Python scipy的二维图像卷积运算与图像模糊处理操作.分享给大家供大家参考,具体如下: 二维图像卷积运算 一 代码 import numpy as np from scipy i ...

  5. python中numpy.random.gamma()函数

    python中numpy.random.gamma()函数 根据官网,地址如下: https://www.w3cschool.cn/doc_numpy_1_11/numpy_1_11-generate ...

  6. python scipy.optimize.minimize多变量多参数优化

    python scipy.optimize.minimize多变量多参数优化 x是一维变量,无超参数 x是二维变量,无超参数,带bounds x是二维变量,有一个超参数,带bounds x是二维变量, ...

  7. python绘制一个简单的函数图像使用到了matplotlib库和numpy库

    文章目录 效果展示: 视频链接 实现的思想 使用到的函数包 图片一对应的代码展示 图片二 对应的代码展示 注意事项 效果展示: 视频链接 python绘制一个简单的函数图像(B站视频) 实现的思想 其 ...

  8. 【Python】收集的高级函数、功能

    说明:本文更新顺序是从下到上,最新的函数更新在开头. np.log log默认以e为底,log10, log2, log1p, emath.log dict对象的keys()和values()返回的值 ...

  9. python绘制条形图用什么函数_Python绘制正余弦函数图像完整代码

    通过python绘制正弦和余弦函数,从默认的设置开始,一步一步地调整改进,让它变得好看,变成我们初高中学习过的图象那样.通过这个过程来学习如何进行对图表的一些元素的进行调整. 01. 简单绘图 mat ...

最新文章

  1. Windows 和 Linux 应用程序从上到下调用层次比较
  2. TCP/IP协议 网络层
  3. 赠书:Java面试一战到底!
  4. linux vim配置怎么打开文件,Linux如何设置默认VIM打开文件
  5. ESFramewor使用技巧(2)-- 在插件中使用NHibernate
  6. 程序员的能力矩阵表【转载自】
  7. 多维柔性作业调用_摆脱困境:从预定作业中调用安全方法
  8. [js] 如何判断两个对象相等?
  9. 薪资是跳出来的,不是涨出来的!
  10. 颜色选择器的设计与实现II
  11. 华为Mate50渲染图曝光:经典奥利奥相机模组
  12. HTML元素定义 ID,Class,Style的优先级
  13. Angular2-路由重定向的办法
  14. 聊聊高并发系统之限流特技(二)作者:张开涛
  15. wuauclt.exe是什么进程?为什么运行?wuauclt.exe进程介绍
  16. 2022版中国科技中介服务产业运行现状分析与发展机遇规划报告
  17. 【网络模拟】网络环境模拟搭建
  18. 免费的PDF转换器哪个更好用?这几款软件一定要知道!
  19. 消费者运营-阿里系三大模型
  20. 单片机交通灯控制系统

热门文章

  1. Android一键清空内存,Android 一键清理内存(ARM)
  2. 最新宝塔如何禁止某个ip访问封锁ip(ip段)教程
  3. 记录贴:RuntimeError: version_ <= kMaxSupportedFileFormatVersion INTERNAL ASSERT FAILED at /pytorch/caff
  4. 飞桨Tracking目标跟踪库开源!涵盖业界主流的VOT算法,精准检测动态目标轨迹...
  5. Kendo UI 绑定行点击事件
  6. msvcp140.dll是什么?怎么修复msvcp140.dll缺失的问题
  7. HNC 2014华为网络大会
  8. 【毕业季 进击的技术er】一个研二大龄青年的自白
  9. 企业微信发送应用消息php,企业微信如何发送应用消息?及时发布重要通知
  10. 东北师范大学计算机考研资料汇总