提问人:anonymouscoder 提问时间:8/7/2023 更新时间:8/8/2023 访问量:45
f(vector) = vector*squareMagnitude 的反函数是多少
What is the inverse of: f(vector) = vector*squareMagnitude
问:
我相信 3 分量向量的平方大小为:(xx + y y+ z*z)。如果将向量乘以它的平方大小,是否可以执行函数来获得原始向量?
让我们取原始向量 3 A = (Ax, Ay, Az)。 最终向量 3 B = A*(AxAx + Ay Ay +Az*Az)。
现在,是否有 B 的函数将返回 A?
谢谢!
我最初发现向量与自身的点积等于向量的平方大小。但是,我也读到点积的逆是不可能的,因为有很多解决方案。尽管如此,使用两个限定符(1:点积位于向量和自身之间,2:最终向量的分量与原始向量的相应分量线性相关),可能足以限制为一种可能的解决方案。
答:
0赞
MBo
8/7/2023
#1
得到 的平方大小。请注意,结果等于 的六次方(或立方)的大小。B
SMB
A
SMA=squareMagnitude(A)
B = bx + by + bx =
ax * SMA + ay * SMA + az * SMA
SMB = B.dot.B = ax^2 * SMA^2 + ay^2 * SMA^2 + az^2 * SMA^2 =
SMA^2*(ax^2 + ay^2 + az^2) =
SMA^2 * SMA =
SMA^3
因此,您可以获取 的立方根并提取squareMagnitude(A)
SMB
A
SMA = SMB^(1/3) = pow(SBB, 1./3)
ax = bx / SMA
ay = by / SMA
az = bz / SMA
P.S. 这很有趣 - 哪些操作确实提供了价值?B
关于第二个问题 - 在评论中不是很可读,所以我添加了这个:
A/(1+SMA)=B square it
SMA/(1+2*SMA+SMA^2)=SMB
SMA = SMB+2*SMA*SMB+SMA^2*SMB
SMA^2*SMB+SMA*(2*SMB-1)+SMB = 0
D = 4*SMB^2-4*SMB+1-4*SMB^2= 1-4*SMB
D should be positive, so B magnitude should be small
SMA = (1-2*SMB + Sqrt(1-4*SMB)) /(2*SMB)
the second solution with minus is definitely negative, so omit it
and finally with known SMA
A = B * (1 + SMA)
评论
0赞
anonymouscoder
8/8/2023
谢谢,这个解决方案效果很好。但是,恐怕我的问题没有正确地提出我的挑战。当 B 定义为:B = A / (1.0 + SMA) 时,我实际上需要从向量 B 获取向量 A。我真的希望原始向量 A 可以从 B 派生出来!有什么想法吗?
0赞
MBo
8/8/2023
可悲的是不,在 B = A / (1.0 + SMA) 的情况下,如果 SMA 值未知,则不可能获得 A
0赞
anonymouscoder
8/8/2023
如果我的数学是正确的,那么在最后提到的关系中,SMA/(1+SMA)^2 = SMB。因此,您将得到一个二次关系,使分子中的 SMA = -(2SMB - 1) +- sqrt((2SMB-1)^2 - 4(SMB)^2),分母中为 2SMB。有了 SMA 的这个定义,您应该能够将其插入 A = B*SMA 以单独获得 B 的 A。我猜每个组件只有 2 个可能的答案,但也许另一个函数或规则可以排除不需要的答案
0赞
anonymouscoder
8/8/2023
对不起,将 SMA 的定义代入 A = B(1 + SMA),而不是 A = B*SMA
0赞
anonymouscoder
8/8/2023
事实上,我刚刚在 c# 中尝试了这种方法,它有效
1赞
Simon Goater
8/7/2023
#2
B = (|A|^2) 阿苏 |乙|= |A|^3,所以 A = B/(|A|^2) = B/(|B|^(2/3))。
评论