【线代&NumPy】第六章 - 向量1课后练习 | 向量计算 | 求两向量夹角 | 求正投影 | 简述并提供代码
2023-09-14 09:15:59 时间
💬 例1:向量计算
import numpy as np
def getVector(mag, deg): # 大小,方向,生成对应的向量
vec = np.zeros(2)
vec[0] = mag*np.cos(deg*2*np.pi/360)
vec[1] = mag*np.sin(deg*2*np.pi/360)
return vec
def getMagDeg(vec): # 计算向量的大小和方向
mag = np.sqrt(vec[0]*vec[0]+vec[1]*vec[1])
deg = np.arctan(vec[1]/vec[0]) * 360/(2*np.pi)
return mag, deg
F1 = getVector(100, 30) # 大小 100N, 方向 30˚
F2 = getVector(120, 60) # 大小 120N, 方向 60˚
Fsum = F1 + F2
magn, angle = getMagDeg(Fsum)
print("大小: ", magn)
print("方向: ", angle)
🚩 运行结果:
大小: 212.56671821060448
方向: 46.395392948206855
💬 例2:中间角,正投影
import numpy as np
def angle2vectors(v, w): # 计算两向量之间的夹角
vnorm = np.linalg.norm(v)
wnorm = np.linalg.norm(w)
vwdot = np.dot(v.T, w)
angle = np.arctan(vwdot/(vnorm*wnorm))*360/np.pi
return angle
def orthProj(u, x): # 计算正投影
xu_dot = np.dot(x.T, u)
uu_dot = np.dot(u.T, u)
projux = (xu_dot/uu_dot)*u
return projux
A = np.array([[2], [4], [1]])
B = np.array([[1], [-1], [3]])
angle = angle2vectors(A, B)
projAB = orthProj(B, A)
print("A和B的夹角 : ", angle)
print("A和B上方的正投影 : \n", projAB)
🚩 运行结果:
A和B的夹角 : [[7.52871961]]
A和B上方的正投影 :
[[ 0.09090909]
[-0.09090909]
[ 0.27272727]]
参考文献
Introduction to Linear Algebra, International 4 th Edition by Gilbert Strang, Wellesley Cambridge Press.
百度百科[EB/OL]. []. https://baike.baidu.com/.
本篇完。
相关文章
- 史蒂夫·乔布斯的打字技术很烂
- PHP 位运算(&, |, ^, ~, <<, >>)及 PHP错误级别报告设置(error_reporting) 详解
- 【云效Q&A系列3】环境管理的管理员配置使用说明
- numpy & axis
- knockoutjs -- applyBinding & Observables
- [Servlet&JSP] 初识ServletContext
- linux fedora35 zsh & oh-my-zsh 的配置与使用
- C++中的Mat, const Mat, Mat &,Mat &, const Mat &的区别
- Unable to read the project file 'client.csproj'. Could not load file or assembly 'Microsoft.Build.En
- Python语言学习:Python语言学习之容器(列表&元组&字典&集合)简介、特点/意义/经验总结及容器魔法方法(定义可变&不可变容器的协议)的简介、案例应用之详细攻略
- 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
- 空格&nbsp在不同浏览器中显示距离不一致问题解决方法
- SVN && BeyondCompare
- 已解决mysql shell 中 没有numpy & pandas module
- 2022:图元文件转换为Xaml||Paste2Xaml & ReaderWmf
- Numpy tips: 如何检查一个numpy数组是否全0?
- 【线代&NumPy】 特征值分解
- 【线代&NumPy】第十一章 - 正交性2课后练习 | 离散傅里叶变换 | 逆离散傅里叶变换 | 简述并提供代码
- 【线代&NumPy】第一章 - 线代概要课后练习 | .array 和 .shape | 简述并提供代码
- 【线代&NumPy】第五章 - 行列式课后练习 | 伴随矩阵求逆 | Cramer公式求联立方程 | 简述并提供代码
- 【线代&NumPy】第二章 - 线性方程课后练习 | Gauss-Jordan | .zero .ones .full .eye | 简述并提供代码
- Python爬虫http&https协议(理论)