《冯洛伊曼物理常数库》
【前言:数学的完美与硅基的残缺】
计算机,本质上是数学的完美与物理的极限在硅片上的强行拼凑。
数学允许除以零,允许无穷大,允许绝对连续;但冯·诺依曼架构的寄存器不行。我是怎么深刻认识到这点的?通过无数个跑了一夜的物理场,在凌晨瞬间被 NaN 和 Inf 吞噬的绝望。NaN 是瘟疫,0乘以它依然是NaN,传染整个数组;Inf 是雪崩,瞬间摧毁所有边界。机器不懂你的推导,它只懂溢出。
比崩溃更让人掉头发的,是那些反人类的易错公式:扩散差分忘除dx²,Adam偏置校正写反,Boussinesq浮力少个负号导致热下沉冷上升……人类的直觉在这些繁复的数学细节面前不堪一击,一错就是灾难。搞这个库,就是为了终结这些无谓的折磨。
更深的无奈在于架构的妥协。为了防爆加if-else截断?导数断裂会让优化器当场暴毙,GPU也会因分支惩罚停摆,只能逼出“无分支平滑掩码”;伪随机算法跑着跑着陷入局部最优、死锁卡平衡?只能引入热力学噪声和反停滞机制去“踹”它一脚。底层开发,就是在一堆无奈中给物理法则打补丁,掉头发是常态。
这个库,就是这些补丁的终极形态:把防爆、连续、反卡死、易错公式全焊死在底层。以后,数学归数学,物理归物理,寄存器的破事,不再忍受。受够了无限翻篇的试错!看不懂这个库是做什么没关系,它对底层开发者来说是百科全书,开发各种项目的乐高搭建。从此不摸边界!
库不再新增已经够了,只做后期维护,开源!!作者联系方式在本说明书最底。LICENSE-2.0
网盘分享的文件:vonneumann-physics
链接: https://pan.baidu.com/s/1saDFtatrAQ4SRrxSdpIl1w 提取码: 1949
为了在离散机器上重构连续宇宙,我们必须敬畏以下底线常数:
EPSILON_MACHINE (1e-10):宇宙的真空下限,任何分母必须穿上这层防护服。
CFL_SAFE_CONVECTIVE (0.45):对流因果律的锁,时间步长必须追上空间波速。
CFL_SAFE_DIFFUSIVE (0.25):扩散因果律的锁,比对流更严!别混用!
CUTOFF_STRESS (0.001):存在感的阈值,低于此值的扰动在宏观场不复存在。
ENTROPY_FLOOR (1e-6):熵的地板,低于此值系统判定为热寂停滞,触发救援。
本库四大铁律:
常参是确定的:不靠玄学调参,只查物理手册(水就是998,岩浆就是2600)。
连续即稳定:用 tanh/softsign/smoothstep 替代一切截断,消灭数值爆炸。
无分支即并行:一切逻辑转乘法掩码,GPU全员满载飞驰。
空间即因果:降维映射防维度灾难,拓扑边传导定结构因果。
为了在离散机器上重构连续宇宙,我们必须敬畏以下底线常数:
EPSILON_MACHINE (1e-10):宇宙的真空下限,任何分母必须穿上这层防护服。
CFL_SAFE_CONVECTIVE (0.45):对流因果律的锁,时间步长必须追上空间波速。
CFL_SAFE_DIFFUSIVE (0.25):扩散因果律的锁,比对流更严!别混用!
CUTOFF_STRESS (0.001):存在感的阈值,低于此值的扰动在宏观场不复存在。
ENTROPY_FLOOR (1e-6):熵的地板,低于此值系统判定为热寂停滞,触发救援。
本库四大铁律:
常参是确定的:不靠玄学调参,只查物理手册(水就是998,岩浆就是2600)。
连续即稳定:用 tanh/softsign/smoothstep 替代一切截断,消灭数值爆炸。
无分支即并行:一切逻辑转乘法掩码,GPU全员满载飞驰。
空间即因果:降维映射防维度灾难,拓扑边传导定结构因果。
【第一卷:宇宙常参字典】
业务代码绝不出现魔法数字,只许查表!
Rust 接口: use vonneumann_physics::constitute:😗;
-
数学常量 [03]
圆周率:PI (3.141592653589793)
全圆:TAU (6.283185307179586) — 一个完整圆的弧度,比2*PI更本源
欧拉数:E (2.718281828459045) — 自然对数的底,指数增长/衰减的根基
根号二:SQRT2 (1.4142135623730951) — 对角线/勾股/傅里叶
根号三:SQRT3 (1.7320508075688772) — 六角/三角/晶体
黄金比例:GOLDEN_RATIO (1.618033988749895) — 斐波那契/螺旋/审美
自然对数底2:LN2 (0.6931471805599453) — 信息论/二进制/半衰期
自然对数底10:LN10 (2.302585092994046) — 分贝/pH/对数尺度 -
时空底线 [01]
光速:C_LIGHT (299792458.0)
重力加速度:G_EARTH (9.80665) / G_MOON (1.625) / G_MARS (3.721) / G_VENUS (8.87) / G_JUPITER (24.79) / G_SUN (274.0)
大气压:P_ATM (101325.0)
玻尔兹曼常数:KB (1.380649e-23)
斯特番-玻尔兹曼常数:STEFAN_BOLTZMANN (5.670374419e-8 W/(m²·K⁴))
阿伏伽德罗常数:AVOGADRO (6.02214076e23 /mol)
普适气体常数:R_GAS (8.314462618 J/(mol·K))
普朗克常数:PLANCK (6.62607015e-34 J·s)
基本电荷:ELEMENTARY_CHARGE (1.602176634e-19 C)
法拉第常数:FARADAY (96485.33212 C/mol)
真空介电常数:PERMITTIVITY_VACUUM (8.8541878128e-12 F/m)
真空磁导率:PERMEABILITY_VACUUM (1.25663706212e-6 H/m) -
大气与热学 [01]
空气声速:SPEED_SOUND_AIR (343.0 m/s, 20°C)
空气摩尔质量:MOLAR_MASS_AIR (0.02897 kg/mol)
空气比热容:SPECIFIC_HEAT_AIR_CP (1005.0 J/(kg·K))
水比热容:SPECIFIC_HEAT_WATER_CP (4186.0 J/(kg·K))
水汽化潜热:LATENT_HEAT_VAPORIZATION_WATER (2.26e6 J/kg)
空气导热系数:THERMAL_CONDUCTIVITY_AIR (0.026 W/(m·K))
水导热系数:THERMAL_CONDUCTIVITY_WATER (0.6 W/(m·K))
水三相点:TRIPLE_POINT_WATER (273.16 K)
绝对零度(摄氏):ABSOLUTE_ZERO_C (-273.15 °C) -
计算与数值底线 [21]
机器极小值:EPSILON_MACHINE (1e-10)
存在感阈值:CUTOFF_STRESS (0.001)
收敛容差:TOLERANCE_CONVERGE (1e-8)
松弛因子:RELAXATION_FACTOR (0.8) -
流体本构查询 [02] (Fluid Struct)
10种流体一键查询:water/steam/air/honey/magma/seawater/oil/mercury/blood/ethanol
每种包含:密度rho/动力粘度mu/声速c0/表面张力/热膨胀系数/沸点
派生方法:nu()运动粘度=mu/rho, impedance()声阻抗=rho*c0let water = Fluid::water();
println!("水密度: {}", water.rho); // 998.0
println!("运动粘度: {}", water.nu()); // mu / rho
println!("声阻抗: {}", water.impedance()); // rho * c0 -
自由能与智能底座 [22]
探索温度:TEMPERATURE_EXPLORE (1.0)
预测精度:PRECISION_WEIGHT (1.0)
模型复杂度惩罚:KL_DIVERGENCE_CAP (10.0)
未来折扣因子:DISCOUNT_FUTURE (0.95) -
闭环与抗饱和 [23]
PID默认:KP (1.0) / KI (0.1) / KD (0.05)
抗积分饱和上限:ANTI_WINDUP_LIMIT (10.0)
微分滤波:DERIVATIVE_FILTER (0.1) -
几何与网格流形 [24]
雅可比行列式:JACOBIAN_DETERMINANT (1.0)
单元体积:CELL_VOLUME (1.0)
面面积:FACE_AREA (1.0)
长宽比:ASPECT_RATIO (1.0) -
信号滤波与阻尼 [25]
截止时间常数:TAU_CUTOFF (0.1)
阻尼比:ZETA_DAMPING (0.7) -
误差度量 [26]
Huber阈值:HUBER_DELTA (1.0) -
几何代数与反演映射 [27]
逆平方根魔法数:INV_SQRT_MAGIC (1.5) -
状态机抗震荡 [28]
磁滞带宽:HYSTERESIS_BAND (0.1) -
时间积分与演化 [29]
默认步长:DT (0.001) -
随机涨落与热力学 [30]
噪声标准差:SIGMA_NOISE (0.01) -
反停滞与热救援 [31]
停滞阈值:STAGNATION_THRESHOLD (0.01) — 方差低于此值触发救援
热冲击强度:THERMAL_KICK_STRENGTH (0.1) — 救援脉冲振幅
退火冷却率:ANNEALING_COOLING_RATE (0.995) — 指数衰减温度调度
熵地板:ENTROPY_FLOOR (1e-6) — 系统热寂判定下限 -
易错公式环境变量 [32]
对流柯朗数:CFL_SAFE_CONVECTIVE (0.45) — 对流CFL上限,别改
扩散柯朗数:CFL_SAFE_DIFFUSIVE (0.25) — 扩散CFL上限,比对流更严!别混用!
浮力符号修正:BOUSSINESQ_SIGN_YDOWN (-1.0) — 屏幕y向下,浮力向上=负y方向
相变默认宽度:PHASE_SHARPNESS (0.5) — 相变混合宽度标准值,别自己瞎调
反停滞检查间隔:STAGNATION_CHECK_INTERVAL (120) — 多少帧/步检查一次方差,别太频繁 -
优化器默认参数 [33]
Adam一阶矩衰减:ADAM_BETA1 (0.9)
Adam二阶矩衰减:ADAM_BETA2 (0.999)
默认学习率:DEFAULT_LR (0.001)
Leaky ReLU斜率:LEAKY_RELU_ALPHA (0.01) -
金融默认参数 [34]
年交易日:TRADING_DAYS_PER_YEAR (252)
无风险利率:RISK_FREE_RATE (0.02)
【第二卷:无分支连续映射算子核武库】
替代一切 if-else 截断,消灭数值爆炸与高频噪声!
按从地基到顶层排列,第一层是一切的基础。
Rust 接口: use vonneumann_physics::ops:😗;
═══════════════════════════════════════════════════
第一层:数值安全 — 防NaN/Inf,一切的地基
═══════════════════════════════════════════════════
safe_div(a, b, eps): 正则化安全除法,连续过渡绝不除零。
safe_inv(x): 安全求逆。1 / (x + eps*sign(x))。终结 1.0/x 在x=0处爆炸。
safe_inv_sqrt(x): 安全逆平方根。1 / sqrt(x + eps)。终结 1.0/sqrt(x) 在x=0处爆炸。
safe_sqrt(x): 负数→0再开方。终结负数开方NaN。
safe_acos(x): clamp到[-1,1]再acos。终结浮点漂移越界NaN。
safe_asin(x): clamp到[-1,1]再asin。同上。
safe_log(x): x≤0时返回ln(eps)。终结ln(负数)NaN。信息熵/似然/对数尺度必备。
safe_log2(x): 安全2底对数。信息论基础,log2(0)=-Inf。
safe_log10(x): 安全10底对数。分贝/pH/工程,log10(0)=-Inf。
safe_pow(base, exp): 负数底取绝对值计算。终结(-2)1.5=NaN。物理公式r1.5到处都是。
safe_exp(x): 限制输入≤700。终结exp(710)=Inf。softmax/高斯/玻尔兹曼必炸点。
safe_tan(x): 极点处返回大有限值。终结tan(π/2)=Inf。角度/投影/相机必崩。
nan_to_zero(x): NaN/Inf→0。处理脏数据/物理场的最后一道防线。
is_finite(x): 排除Inf和NaN。调试断言底线。
═══════════════════════════════════════════════════
第二层:基础运算 — 算术/限制/比较
═══════════════════════════════════════════════════
clamp(x, lo, hi): 硬限制x在[lo,hi]。比soft_clamp更底层。Rust要写x.max(lo).min(hi)两行,每次忘顺序。
saturate(x): = clamp(x, 0, 1)。shader/概率/归一化最常见操作,没有之一。
lerp(a, b, t): 线性插值 a+t*(b-a)。最基础。
inverse_lerp(a, b, x): lerp的逆,求t。自动除零保护。
remap(x, lo_in, hi_in, lo_out, hi_out): 值域映射。=inverse_lerp+lerp。终结每次手写5行搞反lo/hi。
approx_eq(a, b, eps): |a-b|<eps。浮点比较唯一正确姿势。
═══════════════════════════════════════════════════
第三层:插值与平滑
═══════════════════════════════════════════════════
smoothstep(t): 3次多项式平滑过渡,两端一阶导为零。
smootherstep(t): 5次多项式平滑过渡,两端一阶二阶导均为零。比smoothstep更丝滑,动画/相机首选。
inverse_smoothstep(x): 平滑阶梯的反函数,重塑梯度。
smooth_min(a, b, k): 多项式连续最小值。k越小越硬,k越大越平滑。SDF融合/场叠加必备。
smooth_max(a, b, k): 多项式连续最大值 = -smooth_min(-a,-b,k)。
soft_clamp(x, lo, hi): 双边平滑钳制。硬限制用clamp,软限制用soft_clamp。
═══════════════════════════════════════════════════
第四层:振幅防爆 (终结数值雪崩)
═══════════════════════════════════════════════════
tanh_compress(x, a_max): tanh渐近线压缩,永远逼近极限但绝不爆炸。替代 if u > MAX。
softsign_compress(x, a_max): 对付tanh饱和死锁,导数衰减更快。
═══════════════════════════════════════════════════
第五层:相变与阈值 (终结状态跳变)
═══════════════════════════════════════════════════
phase_mix(x, threshold, sharpness): 薛定谔混合态,返回0.0~1.0。替代 if T > T_boil。
phase_blend(x, threshold, sharpness, val_below, val_above): 直接输出相变混合物性值。
sigmoid(x, threshold, sharpness): 生硬开关的连续替代。
═══════════════════════════════════════════════════
第六层:逻辑与掩码 (终结 max/min 与 if/else)
═══════════════════════════════════════════════════
positive_flux(x): 提取正向通量。替代 max(0, x)。
negative_flux(x): 提取负向通量。替代 max(0, -x)。
mask_zero(condition): 条件为真时归零(抹除物理存在)。
mask_one(condition): 条件为真时为1。
═══════════════════════════════════════════════════
第七层:角度工具
═══════════════════════════════════════════════════
wrap_angle(x): 归一化到[-π,π]。无分支,终结负数分支手写必错。
deg_to_rad(d): 度→弧度。
rad_to_deg(r): 弧度→度。
═══════════════════════════════════════════════════
第八层:周期与取整
═══════════════════════════════════════════════════
fract(x): 取小数部分 = x-floor(x)。shader/动画/纹理坐标到处用。
mod_positive(x, y): 始终正的模。终结跨语言%对负数行为不一致。
═══════════════════════════════════════════════════
第九层:阻力
═══════════════════════════════════════════════════
quadratic_drag(v, k): 连续平方阻力,自动包含方向。替代 if v>0 k*v^2。
═══════════════════════════════════════════════════
第十层:死区
═══════════════════════════════════════════════════
smooth_deadzone(x, band): 平滑死区,消灭摇杆漂移/传感器抖动。
═══════════════════════════════════════════════════
第十一层:时间积分与随机
═══════════════════════════════════════════════════
symplectic_euler(pos, vel, force, dt, damping): 辛欧拉积分,指数阻尼保能量不飘逸。
返回(new_pos, new_vel)。FFI导出为 vn_symplectic_euler_pos / vn_symplectic_euler_vel。
wiener_step(current, sigma, dt, rand_normal): 布朗运动/热涨落注入。
═══════════════════════════════════════════════════
第十二层:反停滞与热救援 [31]
═══════════════════════════════════════════════════
adaptive_sigma(variance, base_sigma, threshold, kick):
自适应噪声强度。方差低于阈值时自动增强扰动,全程smoothstep零分支。
防伪随机种子卡平衡的核心武器。
annealing_temperature(step, initial_temp, cooling_rate):
模拟退火温度调度,指数衰减。打破局部最优的锤子。
stagnation_kick(variance, threshold, strength, rand_normal):
停滞救援脉冲。方差过低时注入随机扰动,方差正常时静默归零。全靠smoothstep门控。
═══════════════════════════════════════════════════
第十三层:易错公式防护 [32]
═══════════════════════════════════════════════════
safe_dt_convection(c, dx): 安全对流CFL步长。CFL_SAFE_CONVECTIVE * dx / (c + eps)。
终结手写 dt = 0.001 随缘爆炸。
safe_dt_diffusion(nu, dx): 安全扩散CFL步长。CFL_SAFE_DIFFUSIVE * dx^2 / (nu + eps)。
扩散比对流更严,dx^2衰减极快。
diffusion_1d(u_left, u_mid, u_right, dx): 一维扩散中心差分。
(u_left - 2*u_mid + u_right) / dx^2。终结两种经典错误:(1)写成1阶导 (2)忘除dx^2。
laplacian_2d(u_ij, u_ip, u_im, u_jp, u_jm, dx, dy): 二维拉普拉斯中心差分。
终结差分方向搞反、dx/dy混用。
boussinesq_ydown(g, alpha, t_local, t_ref): 屏幕坐标Boussinesq浮力。
自动包含负号,热→轻→浮力向上=负y方向。终结浮力方向搞反导致热下沉冷上升。
【第三卷:概率与随机过程】
统计/金融/AI/排队论的数学根基。手写几乎必错。
Rust 接口: use vonneumann_physics::prob::; / stochastic::;
-
概率分布 (prob)
erf(x): 误差函数近似 (Abramowitz & Stegun 7.1.26),最大误差1.5e-7。概率论基础中的基础。
norm_pdf(x): 标准正态分布PDF。φ(x) = (1/√2π)·exp(-x²/2)。贝叶斯更新/金融定价。
norm_cdf(x): 标准正态分布CDF。Φ(x) = 0.5·(1+erf(x/√2))。统计检验/置信区间。终结每次Google出不同结果。
norm_inv(p): 标准正态逆CDF(分位函数)。Acklam近似,精度|ε|<1.15e-9。VaR/Monte Carlo。终结手写二分搜索又慢又不准。 -
随机过程 (stochastic)
gbm_step(price, mu, sigma, dt, rand_normal): 几何布朗运动单步。
dS = μSdt + σSdW。精确离散化含Itô修正项(-0.5σ²)。股价/商品/资产最基础模型。终结忘写Itô修正。
ou_step(x, mu, theta, sigma, dt, rand_normal): Ornstein-Uhlenbeck均值回归单步。
dx = θ(μ-x)dt + σdW。精确离散化(非Euler-Maruyama)。利率/利差/波动率模型。终结手写OU忘用精确解导致漂移。
poisson_prob(k, lambda): 泊松分布概率。对数空间计算防爆溢出。排队论/事件仿真/保险理赔。
exponential_cdf(x, lambda): 指数分布CDF。1-exp(-λx)。事件间隔/寿命/等待时间/可靠性工程。
【第四卷:优化器与神经网络】
ML/控制/金融/工程优化的一等公民。Adam偏置校正手写几乎必错。
Rust 接口: use vonneumann_physics::optim::; / nn::;
-
优化器 (optim)
gradient_descent_step(x, gradient, lr): 最基础梯度下降。x_new = x - lr·g。
momentum_step_x(x, velocity, gradient, lr, beta): 动量优化器返回新位置。
momentum_step_v(velocity, gradient, beta): 动量优化器返回新速度。v = β·v + g。
adam_step_x(x, m, v, gradient, lr, beta1, beta2, step, eps):
Adam优化器返回新位置。m_hat=m/(1-β1^t), v_hat=v/(1-β2^t), x_new=x-lr·m_hat/(√v_hat+ε)。
终结手写Adam偏置校正搞反/忘写/公式不一致。
adam_step_m(m, gradient, beta1): Adam返回新一阶矩。m = β1·m + (1-β1)·g。
adam_step_v(v, gradient, beta2): Adam返回新二阶矩。v = β2·v + (1-β2)·g²。
rmsprop_step_x(x, v, gradient, lr, beta, eps): RMSProp返回新位置。
rmsprop_step_v(v, gradient, beta): RMSProp返回新累积方差。v = β·v + (1-β)·g²。 -
神经网络原语 (nn)
relu(x): ReLU = max(0, x)。无分支版 = positive_flux。
leaky_relu(x, alpha): Leaky ReLU = max(αx, x)。消灭ReLU死神经元。
softplus(x): ln(1+ex)。ReLU的连续可导版。大x直接返回x,小x返回ex,防爆。
gelu(x): GELU = x·Φ(x)。Transformer标配。近似: 0.5·x·(1+tanh(√(2/π)·(x+0.044715·x³)))。
swish(x): Swish/SiLU = x·σ(x)。自门控激活。
binary_cross_entropy(prediction, target, eps): 二元交叉熵。p=0或1时eps保护防爆。
categorical_cross_entropy(prediction, target, eps): 分类交叉熵。-t·ln(p)。p=0时eps保护。
cosine_similarity_2d(ax, ay, bx, by, eps): 2D余弦相似度。NLP/推荐/向量检索。
kl_divergence(p, q, eps): KL散度 p·ln(p/q)。概率分布距离度量。
【第五卷:信号、控制与几何流形】
给冯·诺依曼去噪,给感知闭环加上平滑神经。
Rust 接口: use vonneumann_physics::signal::; / control::; / geometry::; / thermo::;
-
滤波防抖 (signal)
lpf_alpha(dt, tau): 计算一阶低通滤波系数。dt负数自动保护。
low_pass_filter(y_old, x_new, alpha): 拒绝高频噪声,丝滑追踪稳态。
critical_damp(y_old, x_target, dt, tau): 临界阻尼追踪,极速且绝不超调!dt负数自动保护。
biquad_step(x_curr, x_prev1, x_prev2, y_prev1, y_prev2, b0, b1, b2, a1, a2):
Biquad IIR滤波器单步 (Direct Form I)。终结IIR差分方程符号搞反(a1/a2前面是减号不是加号)。
biquad_lowpass_coeffs(fs, fc, q): 计算低通Biquad系数。终结每次翻Audio-EQ-Cookbook。
envelope_follower(envelope, input, attack_time, release_time, dt):
包络跟随器。无分支选择attack/release。音频VU表/音符检测/信号幅度提取。
hann_window(t): Hann窗。0.5·(1-cos(2πt))。FFT/信号分析。
hamming_window(t): Hamming窗。0.54-0.46·cos(2πt)。
blackman_window(t): Blackman窗。0.42-0.5·cos(2πt)+0.08·cos(4πt)。 -
误差度量 (signal)
pseudo_huber(error, delta): 连续可导的绝对值替代品。小误差平方惩罚,大误差线性防爆。 -
闭环与状态机 (control)
pid_output(error, integral, derivative, kp, ki, kd): PID铁三角。
anti_windup(integral, error, dt, limit): 无分支抗积分饱和,渐近线防爆。
hysteresis_update(val, z_old, band, dt): 连续磁滞防抖,消灭继电器颤抖。band=0自动保护。 -
热力学 (thermo)
boussinesq_buoyancy(g, alpha_thermal, t_local, t_ref): 一行代码搞定热流体上升!
variational_free_energy(pred_err, complexity): 最小化自由能 = 最大化负熵。
ln_compress(raw): 对数压缩,消灭高维灾难。
softmax_sample(values, temperature): softmax采样,temperature=0自动保护。 -
几何与流形 (geometry)
log_barrier(val, eps): 几何软化,强力推回正域防网格反转!
safe_atan2(y, x, eps): 无跳变安全反三角函数。原点返回0,其余用标准atan2。
safe_normalize_3d(x, y, z, eps): 永不除零的3D向量归一化。返回(nx,ny,nz,len)。
dot_3d(ax, ay, az, bx, by, bz): 3D点积。
cross_3d_x/y/z: 3D叉积分量。终结叉积公式行列式展开搞反。
safe_length_2d/3d: 安全2D/3D向量长度。eps保护防爆。 -
拓扑投影 (topo)
gaussian_weight(dist_sq, sigma_sq): 高斯衰减权重。dist_sq自动保护为非负。
project_2d_to_1d(x, y, angle): 降维投影:2D到1D。
inv_sqrt(x): 快速逆平方根。x≤0返回0。
【第六卷:高级插值与物理动力学】
动画/相机/路径/碰撞/积分。手写系数和公式几乎必错。
Rust 接口: use vonneumann_physics::interp::; / dynamics::;
-
高级插值 (interp)
cubic_hermite(t, p0, p1, m0, m1): 三次Hermite插值。给定两端点值和切线。动画关键帧/相机路径/曲线编辑器必备。
catmull_rom(t, p_prev, p0, p1, p_next): Catmull-Rom样条插值。游戏路径/动画轨迹/字体渲染。终结每次翻Wiki查4x4矩阵。
bezier_quadratic(t, p0, p1, p2): 二次Bézier曲线。UI动画/矢量图形/字体轮廓。
bezier_cubic(t, p0, p1, p2, p3): 三次Bézier曲线。设计软件/CSS动画/路径规划。 -
物理动力学 (dynamics)
spring_damp_step_pos/vel(pos, vel, target, stiffness, damping, dt):
阻尼弹簧单步。涵盖欠阻尼/临界阻尼/过阻尼。角色跟随/相机震动/UI弹动/机器人柔顺控制。
collision_1d_v1/v2(v1, m1, v2, m2, restitution):
1D碰撞。e=1完全弹性, e=0完全非弹性。恢复系数公式每次都忘。
rk4_combine(x, k1, k2, k3, k4, dt):
RK4组合器。x_new = x + dt/6·(k1+2k2+2k3+k4)。终结手写RK4忘除6/忘乘dt/搞乱k2k3的偏移。
laplacian_3d(u_ijk, u_ip, u_im, u_jp, u_jm, u_kp, u_km, dx, dy, dz):
3D拉普拉斯中心差分。终结3D差分6个邻居方向搞反。
central_difference(f_plus, f_minus, h): 中心差分法求导数。数值优化/灵敏度分析。
gradient_magnitude_2d(df_dx, df_dy): 2D梯度幅值。图像边缘检测/地形分析。
【第七卷:金融工程】
收益/风险/期权定价。Black-Scholes手写必错,收益率方向经常搞反。
Rust 接口: use vonneumann_physics::finance:😗;
-
收益计算
log_return(p1, p2): 对数收益率 = ln(p2/p1)。量化回测/统计套利,写错就方向反。
simple_return(p1, p2): 简单收益率 = (p2-p1)/p1。 -
风险度量
sharpe_ratio(mean, std, risk_free): Sharpe比率 = (mean-rf)/std。std=0时防爆。
volatility_annualized(std, periods_per_year): 年化波动率 = std·√(periods)。量化风控必备。 -
期权定价
black_scholes_call(s, k, r, t, sigma): 看涨期权。C = S·N(d1) - K·e^(-rT)·N(d2)。金融工程最经典公式,手写几乎必错。
black_scholes_put(s, k, r, t, sigma): 看跌期权。P = K·e^(-rT)·N(-d2) - S·N(-d1)。
【第八卷:线性代数与傅里叶】
2x2/3x3/FFT/DFT/Goertzel。手写几乎必错。
Rust 接口: use vonneumann_physics::linalg::; / fourier::;
-
线性代数 (linalg)
det2x2(a, b, c, d): 2x2行列式。ad-bc。
det3x3(...): 3x3行列式。Sarrus法则展开,6项符号每次搞反。
inv2x2(a, b, c, d): 2x2逆矩阵。奇异时返回单位阵(safe_inv+掩码切换)。
inv3x3(m): 3x3逆矩阵。行优先9元素数组。奇异时返回单位阵。
mat3_vec3_mul(m, v): 3x3矩阵×3向量。终结行列索引搞反。
mat3_mul(a, b): 3x3矩阵乘法。
mat3_transpose(m): 3x3矩阵转置。
eigenvalues_2x2(a, b, c, d): 2x2实特征值。复数时返回(0,0)而非NaN。
gram_schmidt_3d(a, b, c, eps): 3D正交化。投影忘减/忘归一化必错。 -
傅里叶变换 (fourier)
dft(signal): 离散傅里叶变换,O(N²)。终结求和范围搞乱。
fft_radix2(signal): Cooley-Tukey FFT,O(N log N)。输入必须是2的幂。
goertzel(signal, target_freq, sample_rate): 单频点DFT,O(N)。DTMF/音调检测。
power_spectrum(spectrum): 功率谱密度 |X(k)|²。
freq_resolution(sample_rate, n): 频率分辨率 Δf = fs/N。
freq_from_bin(bin, sample_rate, n): 频率轴计算。
【第九卷:卡尔曼滤波与统计基础】
传感器融合/在线统计。Welford/卡平衡。
Rust 接口: use vonneumann_physics::kalman::; / stats::;
-
卡尔曼滤波 (kalman)
kalman_predict(state, process_noise): 预测步。P_pred = P + Q。
★ 卡平衡:Q=0时P→0=热寂!强制注入ENTROPY_FLOOR,永不拒绝观测。
kalman_update(state, measurement, measurement_noise): 更新步。K=P/(P+R)。
kalman_step(state, measurement, process_noise, measurement_noise): 完整步骤。
alpha_beta_step(pos, vel, measurement, dt, alpha, beta): α-β滤波器。 -
统计基础 (stats)
welford_mean/count/m2: Welford在线统计。单遍计算均值/M2,数值稳定。
welford_variance(m2, count): 样本方差(无偏n-1)。count<=1时掩码归零。
welford_variance_pop(m2, count): 总体方差(除n)。count==0时掩码归零。
pearson_correlation(x, y): 皮尔逊相关系数。n=0/den<eps时掩码归零。
autocorrelation(signal, lag): 自相关系数。
covariance(x, y): 协方差(无偏n-1)。
mean(data): 均值(单遍Welford)。
std_dev(data): 样本标准差。
【第十卷:卷积与图像算子】
信号/图像/深度学习的根基。
Rust 接口: use vonneumann_physics::conv:😗;
- 卷积 (conv)
conv1d(signal, kernel): 1D卷积(full模式)。边界零填充。
conv2d_3x3(field, nx, ny, kernel): 2D 3x3卷积(same模式)。
sobel_x() / sobel_y(): Sobel边缘检测核。
blur_box_3x3(): 3x3均值模糊核。
sharpen_3x3(): 3x3锐化核。
gaussian_kernel_1d(sigma, radius): 1D高斯核(归一化)。
gaussian_kernel_2d(sigma, radius): 2D高斯核(归一化)。
【附录A:V4.0 更新日志】
V3.0 → V4.0 变更:
[致命修复] prob.rs norm_inv: sigmoid掩码方向反了!w_low=sigmoid(p,p_low,1e6)在p<p_low时=0,
低尾权重为0完全反了。改为w_low=1-sigmoid(p,p_low,1e6)。所有norm_inv结果均错误!
[致命修复] ops.rs safe_tan: NaN穿透掩码!0NaN=NaN的IEEE754铁律,乘法掩码对NaN无效。
改用位运算:NaN位 & 全零掩码 = +0.0,彻底消灭NaN穿透。
[致命修复] ops.rs nan_to_zero: 同上NaN穿透。改用位运算from_bits(& mask)。
[致命修复] stats.rs welford_variance: count=0时(count-1)下溢panic!u64减法在debug模式直接崩。
改用saturating_sub。
[致命修复] stats.rs covariance: 同上n=0时(n-1)下溢panic。
[致命修复] finance.rs black_scholes: t=0时ln(S/K)在K=0产生NaN,0NaN=NaN穿透mask!
改用safe_log从源头防爆。
[卡平衡] kalman.rs: Q=0时P→0=热寂!滤波器拒绝一切观测。强制注入ENTROPY_FLOOR底线。
[卡平衡] nn.rs swish: 手写sigmoid未用库统一防爆。改用ops::sigmoid。
[统一] nn.rs: safe_log替代.ln(),safe_exp替代.exp(),全库风格统一。
【附录B:接口调用实战指南】
- 在你的工程 Cargo.toml 中引入本库
[dependencies]
vonneumann-physics = { path = "../vonneumann-physics" }
- 在 main.rs 中召唤物理法则
use vonneumann_physics::{
constitute::, ops::, prob::, stochastic::, optim::,
nn::, interp::, dynamics::, finance::, thermo::, signal:😗,
};
fn main() {
// 1. 查表获取水参数
let water = Fluid::water();
// 2. 模拟一个 127°C (400K) 的水分子相变
let rho = phase_blend(400.0, water.t_boil, PHASE_SHARPNESS, water.rho, Fluid::steam().rho);
// 3. 算浮力
let buoyancy = boussinesq_buoyancy(G_EARTH, water.alpha_thermal, 400.0, 300.0);
// 4. 防爆输出
let safe_buoy = tanh_compress(buoyancy, 10.0);
// 5. 反停滞救援 — 方差过低时自动加大噪声
let variance = 0.001;
let sigma = adaptive_sigma(variance, SIGMA_NOISE, STAGNATION_THRESHOLD, THERMAL_KICK_STRENGTH);
println!("救援噪声强度: {}", sigma);
// 6. 模拟退火 — 打破局部最优
let temp = annealing_temperature(1000, 1.0, ANNEALING_COOLING_RATE);
println!("退火温度: {}", temp);
// 7. 易错公式防护 — 不再手写CFL步长
let dx = 0.01;
let c_max = 1480.0;
let nu = water.nu();
let dt_conv = safe_dt_convection(c_max, dx);
let dt_diff = safe_dt_diffusion(nu, dx);
let dt = dt_conv.min(dt_diff);
println!("安全步长: conv={} diff={} final={}", dt_conv, dt_diff, dt);
// 8. 概率分布 — 不再手写erf/CDF
let p = norm_cdf(1.96); // ≈ 0.975
let z = norm_inv(0.975); // ≈ 1.96
println!("Φ(1.96)={} Φ⁻¹(0.975)={}", p, z);
// 9. 随机过程 — 不再忘写Itô修正
let price = gbm_step(100.0, 0.05, 0.2, 1.0/252.0, 0.5);
let rate = ou_step(0.03, 0.05, 2.0, 0.01, 1.0/252.0, -0.3);
println!("GBM价格={} OU利率={}", price, rate);
// 10. 优化器 — 不再手写Adam偏置校正
let new_x = adam_step_x(1.0, 0.0, 0.0, -0.5, DEFAULT_LR, ADAM_BETA1, ADAM_BETA2, 1, EPSILON_MACHINE);
println!("Adam一步: {}", new_x);
// 11. 神经网络 — 不再手写GELU
let activated = gelu(1.0);
let loss = binary_cross_entropy(0.9, 1.0, EPSILON_MACHINE);
println!("GELU(1.0)={} BCE={}", activated, loss);
// 12. 高级插值 — 不再翻Wiki查Catmull-Rom
let val = catmull_rom(0.5, 0.0, 1.0, 2.0, 3.0); // = 1.5
println!("Catmull-Rom: {}", val);
// 13. 物理动力学 — 不再手写碰撞公式
let v1_new = collision_1d_v1(3.0, 1.0, -1.0, 1.0, 1.0); // 完全弹性等质量碰撞
println!("碰撞后v1={}", v1_new);
// 14. 金融工程 — 不再手写Black-Scholes
let call = black_scholes_call(100.0, 105.0, 0.05, 1.0, 0.2);
println!("看涨期权价格: {}", call);
// 15. 收益与风险 — 不再搞反收益率方向
let lr = log_return(100.0, 110.0);
let sr = sharpe_ratio(0.15, 0.10, RISK_FREE_RATE);
println!("对数收益={} Sharpe={}", lr, sr);
// 16. 3D几何 — 不再手写叉积行列式
let cx = cross_3d_x(1.0, 0.0, 0.0, 1.0); // (1,0,0)×(0,1,0)的x分量=0
let cz = cross_3d_z(1.0, 0.0, 0.0, 1.0); // z分量=1
println!("叉积: x={} z={}", cx, cz);
println!("安全浮力输出: {}", safe_buoy);
}
物理法则,调用完毕。无分支,无爆炸,只有真理。
jxjx24no@163.com
qq 2623233520

浙公网安备 33010602011771号