'VectorZero' object has no attribute 'i'
时间: 2023-06-23 22:56:08 浏览: 37
这个错误提示是因为 `N` 变量在某些情况下可能会被赋值为 `VectorZero` 对象,而该对象没有 `i`、`j`、`k` 属性。如果出现这个错误,可以在计算 `G_x_vec` 和 `G_y_vec` 之前添加一些条件判断,确保 `G_x` 和 `G_y` 不是 `0`。例如,你可以将代码修改为:
```
if G_x != 0 and G_y != 0: # 判断 G_x 和 G_y 是否均不为零
# 将 Mul 对象转换为向量
G_x_vec = G_x * N.i + G_x * N.j + G_x * N.k
G_y_vec = G_y * N.i + G_y * N.j + G_y * N.k
# 计算向量叉积
if G_x_vec.cross(G_y_vec) != N.i*N.j*N.k: # 判断向量叉积是否为零向量
N = G_x_vec.cross(G_y_vec)
N = simplify(N / N.magnitude()) # 归一化向量
else:
N = N.i*N.j*N.k # 否则将 N 赋值为零向量
else:
# 如果 G_x 或 G_y 为零,则将 N 赋值为零向量
G_x_vec = N.i*N.j*N.k
G_y_vec = N.i*N.j*N.k
N = N.i*N.j*N.k
```
这样修改之后,如果 `G_x` 或 `G_y` 为零,则将 `N`、`G_x_vec` 和 `G_y_vec` 都赋值为零向量。否则,计算 `G_x_vec` 和 `G_y_vec`,并判断向量叉积是否为零向量。请注意,这里使用的是 `magnitude` 方法计算向量模长,而不是 `norm` 方法。`magnitude` 方法用于计算向量的欧几里得长度,而 `norm` 方法用于计算向量的 L2 范数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)