/ / एक संदर्भ बिंदु के रूप में एक वेक्टर का उपयोग करके वैक्टर के बीच कोण की गणना: - अजगर, कोसाइन-समानता, कोसाइन

एक संदर्भ बिंदु के रूप में वेक्टर का उपयोग करके वेक्टरों के बीच कोण की गणना करना: - पायथन, कोसाइन-समानता, कोसाइन

मैं n vectors कि लंबाई x के बीच के सभी कोणों की गणना का एक तेज एल्गोरिथ्म खोजने की कोशिश कर रहा हूं। उदाहरण के लिए यदि x = 3 और n = 4, तो मेरा डेटा कुछ इस तरह दिखाई देगा:

A: [1,2,3]
बी: [२,३,४]
सी: [...]
D: [...]

मैं सोच रहा था कि यह खोजने के लिए स्वीकार्य हैसभी फिक्स वैक्टर (यानी एक्स: [100,100,100,100]) के संबंध में वैक्टर (ए, बी, सी, डी) के बीच का कोण और फिर उस के संबंध में पाए गए (ए, बी, सी, डी) के कोणों को घटाएं निश्चित मूल्य, उन सभी के बीच के कोण को खोजने के लिए। मैं यह करना चाहता हूं क्योंकि मुझे केवल एक बार कोण की गणना करनी होगी और फिर मैं अपने सभी वैक्टरों के कोणों को उनके बीच के अंतर को खोजने के लिए घटा सकता हूं। संक्षेप में, मैं जानना चाहता हूं कि क्या यह धारणा बनाना सुरक्षित है?

angle_between (ए, बी) == कोण_बेटी (ए, एक्स) - कोण_बेटन (बी, एक्स)

और angle_between फ़ंक्शन कोसाइन समानता है।

उत्तर:

जवाब के लिए 0 № 1

यह दृष्टिकोण केवल 2-डी वैक्टर के लिए काम करेगा। उच्च आयामों के लिए किसी भी दो वैक्टर एक हाइपरप्लेन को परिभाषित करेंगे, और केवल तभी जब तीसरा (संदर्भ) वेक्टर भी इस हाइपरप्लेन के भीतर होगा, आपका दृष्टिकोण काम करेगा दुर्भाग्य से केवल गणना के बजाय n कोण और घटाना, प्रत्येक जोड़ीदार वैक्टर के बीच कोणों को निर्धारित करने के लिए आपको सभी की गणना करनी होगी n choose 2 उनमें से।