簡體   English   中英

如何在 SageMath 中的向量列表中計算歐幾里得距離

[英]How to compute the Euclidean distance in a list of vectors in SageMath

我有一個向量列表,我想計算列表中任何一對向量之間的最短距離。

V = [vector([x,y]) for x in [0..1] for y in [0..1]]

output: [(0, 0), (0, 1), (1, 0), (1, 1)]

我想得到從每個向量到另一個向量的距離。 output 的格式並不重要,但可能類似於

L=[(1,1,sqrt(2)),(1,sqrt(2),1),(1,sqrt(2),1),(sqrt(2),1,1)]

其中 L[i] 返回一個元組,該元組具有從 V[i] 到 V[j] (i.= j) 的距離。

最后我取最小的數字,在這種情況下為 1。我正在使用的向量可能並不總是有整數,但它們會超過實數。

我可以寫一個 function 來計算它,但我覺得 Sage 可能已經實現了它,我不知道。 最終,我想對更高維度的向量執行此計算。 在 Sage 中有沒有辦法做到這一點?

[(vw).norm() for v in V for w in V]能給你想要的嗎? 還是[[(vw).norm() for v in V] for w in V] 第一個是一個大列表,而第二個是一個嵌套列表,一個對應於 V 中的每個 v。

norm方法給出了向量的長度,因此這會計算向量集中對的每個差異vw的長度。

編輯:從列表中刪除 0: [[(vw).norm() for v in V if v != w] for w in V][[(vw).norm() for v in V if vw] for w in V]在嵌套列表的情況下,或[(vw).norm() for v in V for w in V if vw][(vw).norm() for v in V for w in V if v != w]在未嵌套的情況下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM