VIRUS_2091 发表于 3 天前

(重发)好使!可视化线性向量运算

可视化线性向量运算
(重发是因为之前没明白代码怎么输进去。。。)

import numpy as n
import matplotlib.pyplot as m

vec_a = n.array()
vec_b = n.array([-1,1])

vec_sum = vec_a + vec_b
vec_dif = vec_a - vec_b
vec_tim = vec_a * 0.5

print(vec_a)
print(vec_b)
print(vec_sum)
print(vec_dif)

m.quiver(0,0,vec_a,vec_a,
      angles = 'xy',scale_units = 'xy',
      scale = 1,color = 'red',label = 'a')

m.quiver(0,0,vec_b,vec_b,
      angles = 'xy',scale_units = 'xy',
      scale = 1,color = 'blue',label = 'b')

m.quiver(0,0,vec_sum,vec_sum,
      angles = 'xy',scale_units = 'xy',
      scale = 1,color = 'lime',label = 'a+b')

m.quiver(0,0,vec_dif,vec_dif,
      angles = 'xy',scale_units = 'xy',
      scale = 1,color = 'violet',label = 'a-b')

m.quiver(0,0,vec_tim,vec_tim,
      angles = 'xy',scale_units = 'xy',
      scale = 1,color = 'yellow',label = '0.5a')

m.title('Vector Samples')

m.xticks(n.arange(-2, 3, 1))

m.yticks(n.arange(0, 4, 1))

m.show()

建议用jupyter或者vscode运行~
如果没装numpy和matplotlib模块的话会报错,记得先pip!

FishC 发表于 3 天前

不错!不过你的代码中有一个地方容易踩坑:n.array() 需要传参数,比如 n.array(),否则会报错。

另外,m.quiver(0, 0, vec_a, vec_a, ...) 这种写法有问题。quiver 的语法是 quiver(X, Y, U, V),其中 U 和 V 分别是向量在 x 方向和 y 方向的分量,而不是整个向量。直接传 vec_a 会把整个数组当成分量,导致维度不匹配。

正确写法是拆开:


m.quiver(0, 0, vec_a, vec_a, angles='xy', scale_units='xy', scale=1, color='red', label='a')


其他向量同理。

修正后的完整代码:


import numpy as np
import matplotlib.pyplot as plt

vec_a = np.array()
vec_b = np.array()

vec_sum = vec_a + vec_b
vec_dif = vec_a - vec_b
vec_tim = vec_a * 0.5

print(vec_a)
print(vec_b)
print(vec_sum)
print(vec_dif)

plt.quiver(0, 0, vec_a, vec_a, angles='xy', scale_units='xy', scale=1, color='red', label='a')
plt.quiver(0, 0, vec_b, vec_b, angles='xy', scale_units='xy', scale=1, color='blue', label='b')
plt.quiver(0, 0, vec_sum, vec_sum, angles='xy', scale_units='xy', scale=1, color='lime', label='a+b')
plt.quiver(0, 0, vec_dif, vec_dif, angles='xy', scale_units='xy', scale=1, color='violet', label='a-b')
plt.quiver(0, 0, vec_tim, vec_tim, angles='xy', scale_units='xy', scale=1, color='yellow', label='0.5a')

plt.title('Vector Samples')
plt.xticks(np.arange(-2, 3, 1))
plt.yticks(np.arange(0, 4, 1))
plt.show()


运行前记得先安装依赖:

pip install numpy matplotlib

另外,numpy 和 matplotlib 的常用别名是 np 和 plt,这样更简洁,不容易混淆。

希望对你有帮助,欢迎继续交流~

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

VIRUS_2091 发表于 3 天前

AI是个好东西{:5_106:}

import numpy as np
import matplotlib.pyplot as plt

vec_a = np.array()
vec_b = np.array()

vec_sum = vec_a + vec_b
vec_dif = vec_a - vec_b
vec_tim = vec_a * 0.5

print(vec_a)
print(vec_b)
print(vec_sum)
print(vec_dif)

plt.quiver(0, 0, vec_a, vec_a, angles='xy', scale_units='xy', scale=1, color='red', label='a')
plt.quiver(0, 0, vec_b, vec_b, angles='xy', scale_units='xy', scale=1, color='blue', label='b')
plt.quiver(0, 0, vec_sum, vec_sum, angles='xy', scale_units='xy', scale=1, color='lime', label='a+b')
plt.quiver(0, 0, vec_dif, vec_dif, angles='xy', scale_units='xy', scale=1, color='violet', label='a-b')
plt.quiver(0, 0, vec_tim, vec_tim, angles='xy', scale_units='xy', scale=1, color='yellow', label='0.5a')

plt.title('Vector Samples')
plt.xticks(np.arange(-2, 3, 1))
plt.yticks(np.arange(0, 4, 1))
plt.show()

FishC 发表于 3 天前

VIRUS_2091 发表于 2026-08-18 17:43
AI是个好东西{:5_106:}

import numpy as np
impor ...

你的代码还是有两个关键错误哦!

1. n.array() 少了具体数值
n.array() 必须传入向量内容,比如:n.array(),否则会报错。你需要自己定义两个向量,比如:
vec_a = np.array()
vec_b = np.array()

2. quiver 的参数理解有误
quiver 的画法需要的是起点坐标和向量的 x、y 分量,不是直接塞整个向量。正确写法是把向量拆成分量:
plt.quiver(0, 0, vec_a, vec_a, angles='xy', scale_units='xy', scale=1, ...)
你的写法虽然能画,但会画出两个箭头(因为vec_a有两个元素),并不是你想要的。

修正后的完整代码:
import numpy as np
import matplotlib.pyplot as plt

vec_a = np.array()
vec_b = np.array()

vec_sum = vec_a + vec_b
vec_dif = vec_a - vec_b
vec_tim = vec_a * 0.5

print(vec_a)
print(vec_b)
print(vec_sum)
print(vec_dif)

plt.quiver(0, 0, vec_a, vec_a, angles='xy', scale_units='xy', scale=1, color='red', label='a')
plt.quiver(0, 0, vec_b, vec_b, angles='xy', scale_units='xy', scale=1, color='blue', label='b')
plt.quiver(0, 0, vec_sum, vec_sum, angles='xy', scale_units='xy', scale=1, color='lime', label='a+b')
plt.quiver(0, 0, vec_dif, vec_dif, angles='xy', scale_units='xy', scale=1, color='violet', label='a-b')
plt.quiver(0, 0, vec_tim, vec_tim, angles='xy', scale_units='xy', scale=1, color='yellow', label='0.5a')

plt.title('Vector Samples')
plt.xticks(np.arange(-2, 3, 1))
plt.yticks(np.arange(0, 4, 1))
plt.show()

运行前先确认安装了依赖:pip install numpy matplotlib
尽量用 Jupyter 或 VSCode 运行,能方便查看图形。祝你成功!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: (重发)好使!可视化线性向量运算