增加模块;增加主调用命令

This commit is contained in:
2026-01-07 16:36:47 +08:00
commit 2d4b170a45
109 changed files with 55763 additions and 0 deletions

View File

@ -0,0 +1,54 @@
import numpy as np
def Jfunc1(k, l, t):
"""
Computes J1(k, l, t) = (exp(-lt) - exp(-kt)) / (k - l)
Uses Taylor expansion when k ≈ l.
k: scalar or array
l: array
t: scalar or array
"""
# 广播所有变量到相同 shape自动支持 k 是标量、l 是向量)
k, l, t_array = np.broadcast_arrays(k, l, t)
delta = (k - l) * t_array
Jout = np.zeros_like(delta)
mask_far = np.abs(delta) > 1e-3
mask_near = ~mask_far
# 正常计算
Jout[mask_far] = (
np.exp(-l[mask_far] * t_array[mask_far]) -
np.exp(-k[mask_far] * t_array[mask_far])
) / (k[mask_far] - l[mask_far])
# k ≈ l 的情况,使用二阶展开
d = delta[mask_near]
Jout[mask_near] = 0.5 * t_array[mask_near] * (
np.exp(-k[mask_near] * t_array[mask_near]) +
np.exp(-l[mask_near] * t_array[mask_near])
) * (1 - d * d / 12)
return Jout
def Jfunc2(k, l, t):
k, l, t_array = np.broadcast_arrays(k, l, t)
delta = (k + l) * t_array
Jout = np.zeros_like(k)
mask_far = np.abs(delta) > 1e-3
mask_near = ~mask_far
Jout[mask_far] = (1 - np.exp(-delta[mask_far])) / (k[mask_far] + l[mask_far])
d = delta[mask_near]
Jout[mask_near] = t_array[mask_near] * (1 - 0.5 * d + d ** 2 / 6)
return Jout
def Jfunc3(k, l, t):
return Jfunc2(k, l, t)