例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/.
本篇完。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)