python之向量、向量和、向量点积

import matplotlib.pyplot as plt

import numpy as np

设置Matplotlib字体以支持中文

plt.rcParams['font.sans-serif'] = ['SimHei'] # 设置中文显示

plt.rcParams['axes.unicode_minus'] = False # 解决负号显示问题

设置绘图

fig = plt.figure(figsize=(10, 8))

ax = fig.add_subplot(111, projection='3d')

定义向量 a 和 b

a = np.array([1, 2, 3])

b = np.array([4, 5, 6])

origin = np.array([0, 0, 0])

计算向量和

c = a + b

计算向量点积

dot_product = np.dot(a, b)

计算向量叉积

cross_product = np.cross(a, b)

绘制向量

ax.quiver(*origin, *a, color='r', label='向量 a = [1, 2, 3]', linewidth=2, arrow_length_ratio=0.1)

ax.quiver(*origin, *b, color='b', label='向量 b = [4, 5, 6]', linewidth=2, arrow_length_ratio=0.1)

ax.quiver(*origin, *c, color='g', label=f'向量 a+b = {c.tolist()}', linewidth=2, arrow_length_ratio=0.1)

ax.quiver(*origin, *cross_product, color='purple', label=f'向量 a×b = {cross_product.tolist()}', linewidth=2, arrow_length_ratio=0.1)

添加点积信息

ax.text2D(0.05, 0.95, f'向量a·向量b = {dot_product}', transform=ax.transAxes, fontsize=10, verticalalignment='top', bbox=dict(boxstyle='round', alpha=0.1))

添加辅助线 - 向量a的投影和垂线

向量a在x轴的投影

ax.plot([origin[0], a[0]], [origin[1], origin[1]], [origin[2], origin[2]], 'r--', alpha=0.5)

向量a在y轴的投影

ax.plot([origin[0], origin[0]], [origin[1], a[1]], [origin[2], origin[2]], 'r--', alpha=0.5)

向量a在z轴的投影

ax.plot([origin[0], origin[0]], [origin[1], origin[1]], [origin[2], a[2]], 'r--', alpha=0.5)

从向量a终点到x轴的垂线

ax.plot([a[0], a[0]], [a[1], origin[1]], [a[2], origin[2]], 'r--', alpha=0.5)

从向量a终点到y轴的垂线

ax.plot([a[0], origin[0]], [a[1], a[1]], [a[2], origin[2]], 'r--', alpha=0.5)

从向量a终点到z轴的垂线

ax.plot([a[0], origin[0]], [a[1], origin[1]], [a[2], a[2]], 'r--', alpha=0.5)

添加辅助线 - 向量b的投影和垂线

向量b在x轴的投影

ax.plot([origin[0], b[0]], [origin[1], origin[1]], [origin[2], origin[2]], 'b--', alpha=0.5)

向量b在y轴的投影

ax.plot([origin[0], origin[0]], [origin[1], b[1]], [origin[2], origin[2]], 'b--', alpha=0.5)

向量b在z轴的投影

ax.plot([origin[0], origin[0]], [origin[1], origin[1]], [origin[2], b[2]], 'b--', alpha=0.5)

从向量b终点到x轴的垂线

ax.plot([b[0], b[0]], [b[1], origin[1]], [b[2], origin[2]], 'b--', alpha=0.5)

从向量b终点到y轴的垂线

ax.plot([b[0], origin[0]], [b[1], b[1]], [b[2], origin[2]], 'b--', alpha=0.5)

从向量b终点到z轴的垂线

ax.plot([b[0], origin[0]], [b[1], origin[1]], [b[2], b[2]], 'b--', alpha=0.5)

添加向量a和b之间的连线

ax.plot([a[0], b[0]], [a[1], b[1]], [a[2], b[2]], 'g--', alpha=0.7, label='向量a和b的连线')

设置坐标轴范围

all_values = np.concatenate([a, b, c, cross_product])

min_range = all_values.min()

max_range = all_values.max()

ax.set_xlim([min_range - 1, max_range + 1])

ax.set_ylim([min_range - 1, max_range + 1])

ax.set_zlim([min_range - 1, max_range + 1])

添加标签和标题

ax.set_xlabel('X 轴')

ax.set_ylabel('Y 轴')

ax.set_zlabel('Z 轴')

ax.set_title('三维向量 a 和 b 的空间示意图')

ax.legend()

ax.grid(True)

显示图形

plt.show()

相关推荐
kkeeper~2 小时前
0基础C语言积跬步之深入理解指针(5下)
c语言·开发语言
一直不明飞行2 小时前
Java的equals(),hashCode()应该在什么时候重写
java·开发语言·jvm
2301_803934612 小时前
Go语言如何做网络爬虫_Go语言爬虫开发教程【指南】
jvm·数据库·python
WL_Aurora2 小时前
Python爬虫实战(六):新发地蔬菜价格数据采集.
爬虫·python
盲敲代码的阿豪3 小时前
Python 入门基础教程(爬虫前置版)
开发语言·爬虫·python
basketball6163 小时前
C++ 构造函数完全指南:从入门到进阶
java·开发语言·c++
互联科技报3 小时前
2026超融合选型:Top5品牌与市场格局解读
开发语言·perl
weixin199701080163 小时前
[特殊字符] 智能数据采集:数字化转型的“数据石油勘探队”(附Python实战源码)
开发语言·python
想唱rap4 小时前
IO多路转接之poll
服务器·开发语言·数据库·c++
@杰克成4 小时前
Java学习30
java·开发语言·学习