Python(JAX)散射矩阵非线性神经算法和化学散射算法

60 篇文章 0 订阅
47 篇文章 0 订阅

🎯要点

🎯线性波散射非线性神经计算算法 | 🎯耦合神经元模式动态矩阵,傅里叶变换相干探测场得到频域中的动力学方程 | 🎯递归解散射问题 | 🎯散射算法对比传统神经网络分类器算法:数字识别收敛和训练速度 | 🎯化学散射算法

📜神经算法用例

📜Python视觉轨迹几何惯性单元超维计算结构算法

🍪语言内容分比

在这里插入图片描述
在这里插入图片描述

🍇Python弹性散射

散射理论是研究和理解波和粒子散射的框架。通常来说,波散射对应于波与某些物体的碰撞和散射,例如雨滴散射形成的彩虹(阳光)。散射还包括台球在桌子上的相互作用、金原子核对阿尔法粒子的卢瑟福散射(或角度变化)、原子团对电子和 X 射线的布拉格散射(或衍射),以及裂变碎片穿过薄箔时的非弹性散射。更准确地说,散射包括研究偏微分方程的解如何自由传播“在遥远的过去”,聚集在一起并相互作用或与边界条件相互作用,然后传播到“遥远的未来”。

正散射问题是根据散射体的特性确定散射辐射/粒子通量分布的问题。逆散射问题是根据物体散射的辐射或粒子的测量数据确定物体的特性(例如,其形状、内部结构)的问题。

当目标是一组相对位置不可预测地变化的多个散射中心时,通常会考虑一个范围方程,其参数在不同的应用领域中采用不同的形式。在最简单的情况下,考虑一种相互作用,该相互作用以均匀的速率从“未散射光束”中移除粒子,该速率与单位时间内每单位面积的入射粒子数 (𝐼) 成比例,即
d I d x = − Q I \frac{d I}{d x}=-Q I dxdI=QI
其中 Q 是相互作用系数,x 是在目标中行进的距离。

上述普通一阶微分方程具有以下形式的解:
I = I o e − Q Δ x = I o e − Δ x λ = I o e − σ ( η Δ x ) = I o e − ρ Δ x τ I=I_o e^{-Q \Delta x}=I_o e^{-\frac{\Delta x}{\lambda}}=I_o e^{-\sigma(\eta \Delta x)}=I_o e^{-\frac{\rho \Delta x}{\tau}} I=IoeQΔx=IoeλΔx=Ioeσ(ηΔx)=IoeτρΔx
其中 I 0 I_0 I0是初始通量,路径长度 Δ x ≡ x − x 0 \Delta x \equiv x-x_0 Δxxx0,第二个等式定义了与各种单位相互作用的平均自由路径 λ \lambda λ,第三个使用每单位的目标数量体积 η \eta η 定义面积横截面 σ \sigma σ,最后使用目标质量密度 ρ \rho ρ 定义密度平均自由程 т。因此,可以通过 Q = 1 / λ = η σ = ρ / τ Q=1 / \lambda=\eta \sigma=\rho / \tau Q=1/λ=ησ=ρ/τ 在这些量之间进行转换。

“弹性散射”一词意味着散射粒子的内部状态不会改变,因此散射过程中粒子不会发生变化。相反,在非弹性散射中,粒子的内部状态会发生变化,这可能相当于激发散射原子的一些电子,或者散射粒子完全湮灭并产生全新的粒子。

弹性散射示例:

绘制单电介质消光效率与粒径的函数关系图

import numpy as np
import matplotlib.pyplot as plt
import mp

x = np.linspace(0.1, 100, 1000)

plt.figure(figsize=(8, 4.5))
qext, qsca, qback, g = miepython.mie(1.5, x)
plt.plot(x, qext, color='red', label="$n=1.5$")

qext, qsca, qback, g = miepython.mie(1.5 - 0.1j, x)
plt.plot(x, qext, color='blue', label="$n=1.5-0.1j$")

plt.title("吸收球和非吸收球")
plt.xlabel("尺寸参数 [–]")
plt.ylabel("消光效率 $Q_{ext}$ [–]")
plt.legend()
plt.show()

绘制 4 微米玻璃球的散射效率

import numpy as np
import matplotlib.pyplot as plt
import mp


def n_bk7(wavelength):
    
    m_squared = 1 + 1.03961212 / (1 - 0.00600069867 / lambda0**2)
    m_squared += 0.231792344 / (1 - 0.0200179144 / lambda0**2)
    m_squared += 1.01046945 / (1 - 103.560653 / lambda0**2)
    refractive_index = np.sqrt(m_squared)
    return refractive_index


radius = 2                      
lambda0 = np.linspace(0.2, 1.2, 1000)  
x = 2 * np.pi * radius / lambda0
m = n_bk7(lambda0)

plt.figure(figsize=(8, 4.5))
qext, qsca, qback, g = miepython.mie(m, x)
plt.plot(lambda0 * 1000, qsca)

plt.title("4 微米玻璃球")
plt.xlabel("波长 [nm]")
plt.ylabel("散射效率 [–]")
plt.show()

绘制 1 微米水滴的散射截面

import numpy as np
import matplotlib.pyplot as plt
import mp


def n_water(wavelength):
   
    m_squared = 1.0
    m_squared += 5.666959820E-1 / (1.0 - 5.084151894E-3 / wavelength**2)
    m_squared += 1.731900098E-1 / (1.0 - 1.818488474E-2 / wavelength**2)
    m_squared += 2.095951857E-2 / (1.0 - 2.625439472E-2 / wavelength**2)
    m_squared += 1.125228406E-1 / (1.0 - 1.073842352E1 / wavelength**2)
    refractive_index = np.sqrt(m_squared)
    return refractive_index


diameter = 1                               # microns
radius = diameter / 2                      # microns
num = 200                                  # points to plot
lambda_range = np.linspace(0.2, 1.2, num)
ref_index = n_water(lambda_range)
x = 2 * np.pi * radius / lambda_range

qext, qsca, qback, g = miepython.mie(ref_index, x)

plt.figure(figsize=(8, 4.5))
plt.plot(lambda_range * 1000, qsca)
plt.title("%.2f µm 水滴" % diameter)
plt.xlabel("波长 [nm]")
plt.ylabel("散射截面 [µm²]")
plt.show()

绘制 100 nm 金球的散射截面

import numpy as np
import matplotlib.pyplot as plt
import mp

ref_lam = np.array([0.1879, 0.1916, 0.1953, 0.1993, 0.2033, 0.2073, 0.2119, 0.2164,
                    0.2214, 0.2262, 0.2313, 0.2371, 0.2426, 0.2490, 0.2551, 0.2616,
                    0.2689, 0.2761, 0.2844, 0.2924, 0.3009, 0.3107, 0.3204, 0.3315,
                    0.3425, 0.3542, 0.3679, 0.3815, 0.3974, 0.4133, 0.4305, 0.4509,
                    0.4714, 0.4959, 0.5209, 0.5486, 0.5821, 0.6168, 0.6595, 0.7045,
                    0.7560, 0.8211, 0.8920, 0.9840, 1.0880, 1.2160, 1.3930, 1.6100, 1.9370])

ref_n = np.array([1.28, 1.32, 1.34, 1.33, 1.33, 1.30, 1.30, 1.30, 1.30, 1.31, 1.30,
                  1.32, 1.32, 1.33, 1.33, 1.35, 1.38, 1.43, 1.47, 1.49, 1.53, 1.53,
                  1.54, 1.48, 1.48, 1.50, 1.48, 1.46, 1.47, 1.46, 1.45, 1.38, 1.31,
                  1.04, 0.62, 0.43, 0.29, 0.21, 0.14, 0.13, 0.14, 0.16, 0.17, 0.22,
                  0.27, 0.35, 0.43, 0.56, 0.92])

ref_k = np.array([1.188, 1.203, 1.226, 1.251, 1.277, 1.304, 1.350, 1.387, 1.427,
                  1.460, 1.497, 1.536, 1.577, 1.631, 1.688, 1.749, 1.803, 1.847,
                  1.869, 1.878, 1.889, 1.893, 1.898, 1.883, 1.871, 1.866, 1.895,
                  1.933, 1.952, 1.958, 1.948, 1.914, 1.849, 1.833, 2.081, 2.455,
                  2.863, 3.272, 3.697, 4.103, 4.542, 5.083, 5.663, 6.350, 7.150,
                  8.145, 9.519, 11.21, 13.78])

radius = 0.1                   
m = ref_n - 1.0j * ref_k
x = 2 * np.pi * radius / ref_lam
cross_section_area = np.pi * radius ** 2
mu_a = 4 * np.pi * ref_k / ref_lam    # nm
qext, qsca, qback, g = miepython.mie(m, x)

sca_cross_section = qsca * cross_section_area
abs_cross_section = (qext - qsca) * cross_section_area

plt.subplots(3, 1, figsize=(8, 8))
plt.subplot(311)
plt.plot(ref_lam * 1000, ref_n, 'ob', markersize=2)
plt.plot(ref_lam * 1000, -ref_k, 'sr', markersize=2)
plt.title("金球 200nm 直径")
plt.text(700, 1, "real refractive index", color='blue')
plt.text(1100, -6, "imaginary refractive index", color='red')

plt.subplot(312)
plt.plot(ref_lam * 1000, 1000 / mu_a, 'ob', markersize=2)
plt.ylabel("吸收长度 [nm]")

plt.subplot(313)
plt.plot(ref_lam * 1000, abs_cross_section, 'ob', markersize=2)
plt.plot(ref_lam * 1000, sca_cross_section, 'sr', markersize=2)
plt.xlabel("波长 (nm)")
plt.ylabel("截面 [µm²]")
plt.text(700, 0.01, "吸收", color='blue')
plt.text(750, 0.1, "散射", color='red')
plt.show()

👉参阅、更新:计算思维 | 亚图跨际

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值