🎯线性波散射非线性神经计算算法 | 🎯耦合神经元模式动态矩阵,傅里叶变换相干探测场得到频域中的动力学方程 | 🎯递归解散射问题 | 🎯散射算法对比传统神经网络分类器算法:数字识别收敛和训练速度 | 🎯化学散射算法
散射理论是研究和理解波和粒子散射的框架。通常来说,波散射对应于波与某些物体的碰撞和散射,例如雨滴散射形成的彩虹(阳光)。散射还包括台球在桌子上的相互作用、金原子核对阿尔法粒子的卢瑟福散射(或角度变化)、原子团对电子和 X 射线的布拉格散射(或衍射),以及裂变碎片穿过薄箔时的非弹性散射。更准确地说,散射包括研究偏微分方程的解如何自由传播“在遥远的过去”,聚集在一起并相互作用或与边界条件相互作用,然后传播到“遥远的未来”。
当目标是一组相对位置不可预测地变化的多个散射中心时,通常会考虑一个范围方程,其参数在不同的应用领域中采用不同的形式。在最简单的情况下,考虑一种相互作用,该相互作用以均匀的速率从“未散射光束”中移除粒子,该速率与单位时间内每单位面积的入射粒子数 (𝐼) 成比例,即
“弹性散射”一词意味着散射粒子的内部状态不会改变,因此散射过程中粒子不会发生变化。相反,在非弹性散射中,粒子的内部状态会发生变化,这可能相当于激发散射原子的一些电子,或者散射粒子完全湮灭并产生全新的粒子。
Copy 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()
Copy 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()
Copy 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()
Copy 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()