向量 $a-b$ 和向量 $b-a$ 是相反的,它们的大小相等,方向相反。这是因为向量减法实际上是将两个向量的对应分量相减,而向量的顺序会影响到相减的结果。
假设有两个二维向量 $a=(a_x,a_y)$ 和 $b=(b_x,b_y)$,则它们的差向量 $c=a-b$ 的计算公式为:
$$
c = (a_x-b_x, a_y-b_y)
$$
而 $b-a$ 的计算公式为:
$$
b-a = (b_x-a_x, b_y-a_y)
$$
可以看出,$c$ 和 $b-a$ 的各分量都是相反数,因此它们表示的向量大小相等,方向相反。
下面是一个示例代码,演示了如何通过运算符重载来实现向量的减法,并比较了 $a-b$ 和 $b-a$ 的结果:
```cpp
#include
#include
using namespace std;
// 定义二维向量结构体
struct Vector2D {
float x;
float y;
// 重载减法运算符
Vector2D operator-(const Vector2D& other) const {
Vector2D result;
result.x = x - other.x;
result.y = y - other.y;
return result;
}
};
int main() {
// 定义两个向量
Vector2D a = {1.0f, 2.0f};
Vector2D b = {3.0f, 4.0f};
// 计算差向量
Vector2D c = a - b;
Vector2D d = b - a;
// 输出结果
cout << "a - b = (" << c.x << ", " << c.y << ")" << endl;
cout << "b - a = (" << d.x << ", " << d.y << ")" << endl;
return 0;
}
```
在