23 lines
747 B
Python
23 lines
747 B
Python
import math
|
||
A = [1, 2, 3]
|
||
B = [4, 5, 6]
|
||
def dot_product(v1, v2):
|
||
return sum(x * y for x, y in zip(v1, v2))
|
||
A_dot_B = dot_product(A, B)
|
||
print("1. A · B =", A_dot_B)
|
||
def vector_norm(v):
|
||
return math.sqrt(sum(x ** 2 for x in v))
|
||
def cosine_similarity(v1, v2):
|
||
dot = dot_product(v1, v2)
|
||
norm1 = vector_norm(v1)
|
||
norm2 = vector_norm(v2)
|
||
if norm1 == 0 or norm2 == 0:
|
||
return 0.0
|
||
return dot / (norm1 * norm2)
|
||
cos_sim = cosine_similarity(A, B)
|
||
print("2. 余弦相似度 =", round(cos_sim, 4))
|
||
A2 = [1, 0]
|
||
B2 = [0, 1]
|
||
cos_sim2 = cosine_similarity(A2, B2)
|
||
print("3. A=[1,0], B=[0,1] 的余弦相似度 =", cos_sim2)
|
||
print(" 原因:点积为 0,说明两向量正交,夹角为 90°,所以余弦相似度为 0。") |