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, a0], origin\[1, origin1], origin\[2, origin2], 'r--', alpha=0.5)

向量a在y轴的投影

ax.plot(origin\[0, origin0], origin\[1, a1], origin\[2, origin2], 'r--', alpha=0.5)

向量a在z轴的投影

ax.plot(origin\[0, origin0], origin\[1, origin1], origin\[2, a2], 'r--', alpha=0.5)

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

ax.plot(a\[0, a0], a\[1, origin1], a\[2, origin2], 'r--', alpha=0.5)

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

ax.plot(a\[0, origin0], a\[1, a1], a\[2, origin2], 'r--', alpha=0.5)

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

ax.plot(a\[0, origin0], a\[1, origin1], a\[2, a2], 'r--', alpha=0.5)

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

向量b在x轴的投影

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

向量b在y轴的投影

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

向量b在z轴的投影

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

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

ax.plot(b\[0, b0], b\[1, origin1], b\[2, origin2], 'b--', alpha=0.5)

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

ax.plot(b\[0, origin0], b\[1, b1], b\[2, origin2], 'b--', alpha=0.5)

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

ax.plot(b\[0, origin0], b\[1, origin1], b\[2, b2], 'b--', alpha=0.5)

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

ax.plot(a\[0, b0], a\[1, b1], a\[2, b2], '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()

相关推荐
开开心心_Every1 小时前
快速隐藏程序工具自定义快捷键一键切换
java·开发语言·前端·spring·智能手机·word·intellij-idea
chenbingjie_c1 小时前
C++ 多态完全指南:从虚函数重写到虚函数表原理
开发语言·c++
Nuanyt1 小时前
Agent 学习笔记(下篇三):上线工程、进阶选择与操作界面(Stage 7 / 7.5 / 8 + 延伸路线)
笔记·python·学习·memory·aiagent·harness
吴卫斌1 小时前
定投ETF实战指南(四):行业/主题ETF——定投的“进攻端“
开发语言·python·股票·量化
2601_967987372 小时前
Python——入门级(定义功能def函数)
python·函数·可变参数·默认参数·关键字参数
超级架构师2 小时前
PRAXO-CORE 2.5.0:用 conformance 和显式边界构建 Go Agent 框架
开发语言·人工智能·后端·golang·ai编程·智能体框架·praxo-core
叼烟扛炮3 小时前
Linux 学习笔记(四十三):网络编程进阶——自定义协议解决 TCP 粘包与守护进程
linux·开发语言·网络·笔记·tcp/ip
LMT流氓兔4 小时前
第五单元——第十六课:给书店助手加上网页界面
java·开发语言·jvm·人工智能·oracle·langchain·1024程序员节
专注仿真4 小时前
梯度提升类(XFBoost)算法详解与代码实例
开发语言·人工智能·python·算法·大模型训练·控制算法
外收内放4 小时前
Python基础语法练习题(75)
开发语言·python·学习