You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求向量函数f(vector)=vector×squareMagnitude的逆函数

从B=A*|A|²还原原向量A的方法

给定三维向量 ( A = (A_x, A_y, A_z) ),其平方模长 ( |A|^2 = A_x^2 + A_y^2 + A_z^2 ),定义 ( B = A \times |A|^2 ),完全可以通过B还原出A,推导如下:

  1. 计算B的模长关系
    先算B的平方模长:

    |B|² = (A_x*|A|²)² + (A_y*|A|²)² + (A_z*|A|²)²
         = |A|⁴*(A_x²+A_y²+A_z²)
         = |A|⁴*|A|² = |A|⁶
    

    两边开三次方根(模长非负,结果唯一),可得 ( |A|² = |B|^{2/3} )。

  2. 还原原向量分量
    从B的定义可知,每个分量满足 ( B_i = A_i * |A|² ),因此:

    A_i = B_i / |A|² = B_i / |B|^{2/3}
    

    这里的i对应x、y、z三个分量,分量的符号完全和B一致,和原向量A的符号保持相同,满足你提到的「分量线性相关」限定,不会出现多解。

  3. 特殊情况处理

    • 如果B是零向量,那么原向量A必然也是零向量,直接返回零向量即可。
    • 如果B非零,上述公式直接适用,分母不为零,计算结果唯一。

最终函数形式

用伪代码表示的话,函数可以写成:

Vector3 RestoreA(Vector3 B) {
    if (B is zero vector) return Vector3.Zero;
    float bMagnitude = B.magnitude;
    float scale = 1.0f / Math.Pow(bMagnitude, 2.0f/3.0f);
    return B * scale;
}

内容的提问来源于stack exchange,提问作者anonymouscoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 07:09:54