两向量求和后与两原向量夹角不相等的原因求解
问题原因
- 核心是你对向量和的几何性质认知有误:只有当两个待相加的向量L2范数(模长)相等时,它们的和向量才会处于两个原向量的角平分线上,与二者的夹角相等。
- 你当前代码中对u1、u2做的是L1归一化(除以向量元素和
sum(u)),不是L2归一化,归一化后的u1_norm、u2_norm的L2范数并不相等,因此二者相加的和向量自然不会平分夹角,两个角度存在差异是正常现象。 - 你使用的两种计算方法得到的结果差异极小(仅10^-16量级),属于正常的浮点运算舍入误差,两种方法的计算结果本身是一致的,不存在问题。
验证方法
你可以将归一化逻辑修改为L2归一化,即可得到两个几乎相等的夹角:
# 把原来的归一化代码替换为下面的内容 u1_norm = u1 / norm(u1) # 除以L2范数,而非元素和 u2_norm = u2 / norm(u2)
修改后重新运行,你会发现angle1和angle2的差值会缩小到舍入误差量级,符合角平分线的预期。
内容的提问来源于stack exchange,提问作者jobusch
相关产品推荐
相关产品推荐

