Khoảng cách giữa hai điểm 3d python

Nhập 2 bộ tọa độ trong hệ tọa độ Descartes 3 chiều [X1, Y1, Z1] và [X2, Y2, Z2] để có công thức tính khoảng cách cho 2 điểm và tính khoảng cách giữa 2 điểm

Chấp nhận số nguyên và số thập phân dương hoặc âm

Công thức khoảng cách

Khoảng cách giữa hai điểm là độ dài đoạn đường nối chúng. Khoảng cách đường đi ngắn nhất là một đường thẳng. Trong mặt phẳng 3 chiều, khoảng cách giữa các điểm [X1, Y1, Z1] và [X2, Y2, Z2] được cho bởi

\[ d = \sqrt {[x_{2} - x_{1}]^2 + [y_{2} - y_{1}]^2 + [z_{2} - z_{1}]^2} \

Cách tính khoảng cách giữa 2 điểm

Để tính khoảng cách giữa 2 điểm, [X1, Y1, Z1] và [X2, Y2, Z2], ví dụ: [5,6,2] và [-7,11,-13], chúng tôi cắm các giá trị của mình vào

Bạn biết rằng khoảng cách AB giữa hai điểm trong mặt phẳng có tọa độ Descartes A[x1,y1] và B[x2,y2] được cho bởi công thức sau

AB=[x2−x1]2+[y2−y1]2

Trong không gian Descartes ba chiều, mỗi điểm có ba tọa độ. Để tìm khoảng cách giữa A[x1,y1,z1] và B[x2,y2,z2] , hãy sử dụng công thức

Công cụ sau đây trực quan hóa những gì máy tính đang làm từng bước khi nó thực thi chương trình nói trên

Trình chỉnh sửa mã Python

 

Có một cách khác để giải quyết giải pháp này?

Trước. Viết chương trình Python để tính giá trị tương lai của một số tiền gốc, lãi suất và số năm cụ thể.
Tiếp theo. Viết chương trình Python để kiểm tra xem một tệp có tồn tại không.

Mức độ khó của bài tập này là gì?

Dễ dàng trung bình khó

Kiểm tra kỹ năng Lập trình của bạn với bài kiểm tra của w3resource



con trăn. Lời khuyên trong ngày

Điều kiện "Khác" bên trong vòng lặp "for"

Mặc dù tất cả các mã Python mà bạn đã thấy cho đến nay, rất có thể bạn đã bỏ lỡ phần "để làm gì khác" sau đây mà tôi cũng đã thấy lần đầu tiên cách đây vài tuần

Đây là một phương pháp lặp qua danh sách "for-else", trong đó mặc dù có một lần lặp qua danh sách, bạn cũng có một điều kiện "khác", điều này khá bất thường

Đây không phải là điều mà tôi từng thấy ở các ngôn ngữ lập trình khác như Java, Ruby hay JavaScript

Hãy xem một ví dụ về giao diện của nó trong thực tế

Giả sử rằng chúng ta đang cố kiểm tra xem không có số lẻ nào trong danh sách hay không

Hãy lặp lại nó

numbers = [2, 4, 6, 8, 1]

for number in numbers:
    if number % 2 == 1:
        print[number]
        break
else:
    print["No odd numbers"]

Trường hợp tìm được số lẻ thì số đó sẽ được in ra do ngắt sẽ được thực hiện và nhánh khác sẽ bị bỏ qua

Trong hướng dẫn này - chúng ta sẽ xem cách tính khoảng cách Euclide giữa hai điểm trong Python, sử dụng Numpy

Khoảng cách Euclide là gì?

Khoảng cách Euclide là thước đo khoảng cách cơ bản liên quan đến các hệ thống trong không gian Euclide

Không gian Euclide là không gian hình học cổ điển mà bạn quen thuộc trong lớp Toán, thường bị ràng buộc bởi 3 chiều. Mặc dù vậy, nó cũng có thể được quy định cho bất kỳ chiều nguyên không âm nào.

Khoảng cách Euclide là đường thẳng ngắn nhất giữa hai điểm trong không gian Euclide

Cái tên này xuất phát từ Euclid, người được nhiều người công nhận là "cha đẻ của hình học", vì đây là không gian duy nhất mà mọi người vào thời điểm đó thường hình dung. Theo thời gian, các loại không gian khác nhau đã được quan sát thấy trong Vật lý và Toán học, chẳng hạn như không gian Affine, không gian phi Euclide và hình học rất không trực quan đối với nhận thức nhận thức của chúng ta

Trong không gian Euclide 3 chiều, đường ngắn nhất giữa hai điểm sẽ luôn là đường thẳng giữa chúng, mặc dù điều này không đúng với các chiều cao hơn

Với thực tế này, khoảng cách Euclide không phải lúc nào cũng là thước đo hữu ích nhất để theo dõi khi xử lý nhiều chiều và chúng tôi sẽ tập trung vào không gian Euclide 2D và 3D để tính khoảng cách Euclide

Đo khoảng cách cho dữ liệu nhiều chiều thường được thực hiện với các số liệu khoảng cách khác, chẳng hạn như khoảng cách Manhattan

Nói chung, khoảng cách Euclide được sử dụng chủ yếu trong việc phát triển thế giới 3D, cũng như các thuật toán Học máy bao gồm các số liệu về khoảng cách, chẳng hạn như K-Hàng xóm gần nhất. Thông thường, khoảng cách Euclide sẽ biểu thị mức độ giống nhau của hai điểm dữ liệu - giả sử một số phân cụm dựa trên dữ liệu khác đã được thực hiện

Công thức toán học

Công thức toán học để tính khoảng cách Euclide giữa 2 điểm trong không gian 2D.
$$
d[p,q] = \sqrt[2]{[q_1-p_1]^2 + [q_2-p_2]^2 }< .
$$
The formula is easily adapted to 3D space, as well as any dimension:
$$
d[p,q] = \sqrt[2]{[q_1-p_1]^2 + [q_2-p_2]^2 + [ .
$$
The general formula can be simplified to:
$$
d[p,q] = \sqrt[2]{[q_1-p_1]^2 +. + [q_n-p_n]^2 }
$$
Người tinh mắt có thể nhận thấy sự giống nhau giữa khoảng cách Euclide và Định lý Pythagoras.
$$
C^2 = A^2 + B^2
$$

$$
d[p,q]^2 = [q_1-p_1]^2 + [q_2-p_2]^2
$

Trên thực tế, có một mối quan hệ giữa những điều này - Khoảng cách Euclide được tính thông qua Định lý Pythagoras, với tọa độ Descartes của hai điểm

Do đó, khoảng cách Euclide đôi khi còn được gọi là khoảng cách Pythagoras, tuy nhiên, tên cũ được biết đến nhiều hơn

Ghi chú. Hai điểm là các vectơ, nhưng đầu ra phải là một đại lượng vô hướng [là khoảng cách]

Chúng tôi sẽ sử dụng NumPy để tính khoảng cách này cho hai điểm và cách tiếp cận tương tự được sử dụng cho không gian 2D và 3D

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure[]
ax = fig.add_subplot[111, projection = '3d']

ax.scatter[0, 0, 0]
ax.scatter[3, 3, 3]
plt.show[]

Tính khoảng cách Euclide trong Python với NumPy

Trước tiên, chúng ta sẽ cần cài đặt thư viện NumPy

$ pip install numpy

Bây giờ, hãy nhập nó và thiết lập hai điểm của chúng ta, với tọa độ Descartes là [0, 0, 0] và [3, 3, 3]

Bây giờ, thay vì thực hiện tính toán theo cách thủ công, hãy sử dụng các phương thức trợ giúp của NumPy để thực hiện việc này dễ dàng hơn

np. sqrt[] và np. Tổng[]

Các phép toán và hàm toán học cần thiết để tính Khoảng cách Euclide khá đơn giản. cộng, trừ, cũng như hàm căn bậc hai. Nhiều phép cộng cũng có thể được thay thế bằng một tổng.
$$
d[p,q] = \sqrt[2]{[q_1-p_1]^2 + [q_2-p_2]^2 + [
$$

NumPy cung cấp cho chúng ta hàm

$ pip install numpy
3, đại diện cho hàm căn bậc hai, cũng như hàm
$ pip install numpy
4, đại diện cho tổng. Với những thứ này, việc tính toán Khoảng cách Euclide trong Python rất đơn giản và trực quan

Điều này cho chúng ta một kết quả khá đơn giản

[0-3]^2 + [0-3]^2 + [0-3]^2

bằng 27. Tất cả những gì còn lại là lấy căn bậc hai của số đó

Kết quả này trong

5.196152422706632

Theo tinh thần Pythonic thực sự, điều này có thể được rút ngắn thành một dòng duy nhất

Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó

distance = np.sqrt[np.sum[np.square[point_1 - point_2]]]

Và bạn thậm chí có thể sử dụng các phương thức

$ pip install numpy
5 và
$ pip install numpy
6 tích hợp sẵn của mô-đun
$ pip install numpy
7 của Python, mặc dù chúng yêu cầu bạn phải hack xung quanh một chút với đầu vào, được trừu tượng hóa thuận tiện bằng NumPy, vì hàm
$ pip install numpy
5 chỉ hoạt động với vô hướng [

Tuy nhiên, cách tiếp cận này trông giống với công thức mà chúng ta đã sử dụng trước đây hơn.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure[]
ax = fig.add_subplot[111, projection = '3d']

ax.scatter[0, 0, 0]
ax.scatter[3, 3, 3]
plt.show[]
2

Điều này cũng dẫn đến

5.196152422706632

np. linalg. định mức[]

Hàm

$ pip install numpy
9 đại diện cho một chuẩn toán học. Về bản chất, một chuẩn của một vectơ là độ dài của nó. Độ dài này không nhất thiết phải là khoảng cách Euclide và cũng có thể là các khoảng cách khác. Khoảng cách Euclide là chuẩn L2 của vectơ [đôi khi được gọi là chuẩn Euclide] và theo mặc định, hàm
[0-3]^2 + [0-3]^2 + [0-3]^2
0 sử dụng L2 - tham số
[0-3]^2 + [0-3]^2 + [0-3]^2
1 được đặt thành 2

Nếu bạn đặt tham số

[0-3]^2 + [0-3]^2 + [0-3]^2
1 thành một số giá trị p khác, thì bạn sẽ tính toán các định mức p khác. Chẳng hạn, định mức L1 của vectơ là khoảng cách Manhattan

Với ý nghĩ đó, chúng ta có thể sử dụng hàm

$ pip install numpy
9 để tính khoảng cách Euclide một cách dễ dàng và rõ ràng hơn nhiều so với việc sử dụng các hàm khác

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure[]
ax = fig.add_subplot[111, projection = '3d']

ax.scatter[0, 0, 0]
ax.scatter[3, 3, 3]
plt.show[]
9

Điều này dẫn đến khoảng cách L2/Euclide được in

5.196152422706632

Chuẩn hóa L2 và chuẩn hóa L1 được sử dụng nhiều trong Machine Learning để chuẩn hóa dữ liệu đầu vào

Nếu bạn muốn tìm hiểu thêm về chia tỷ lệ đối tượng - hãy đọc Hướng dẫn của chúng tôi về Dữ liệu chia tỷ lệ đối tượng với Scikit-Learn

np. dấu chấm[]

Chúng ta cũng có thể sử dụng Sản phẩm chấm để tính khoảng cách Euclide. Trong Toán học, Tích vô hướng là kết quả của phép nhân hai vectơ có độ dài bằng nhau và kết quả là một số duy nhất - một giá trị vô hướng. Do loại trả về, đôi khi nó còn được gọi là "tích vô hướng". Phép toán này thường được gọi là tích trong của hai vectơ

Để tính tích vô hướng giữa 2 vectơ, bạn có thể sử dụng công thức sau.
$$
\vec{p} \cdot \vec{q} = {[q_1-p_1] + [q_2-p_2] + [q_3-p_3
$$

Với NumPy, chúng ta có thể sử dụng hàm

[0-3]^2 + [0-3]^2 + [0-3]^2
4, truyền vào hai vectơ

Nếu chúng tôi tính toán Sản phẩm chấm của sự khác biệt giữa cả hai điểm, với cùng sự khác biệt đó - chúng tôi sẽ nhận được một số có mối quan hệ với Khoảng cách Euclide giữa hai vectơ đó. Trích xuất căn bậc hai của số đó cho chúng tôi biết khoảng cách mà chúng tôi đang tìm kiếm

Tất nhiên, bạn cũng có thể rút ngắn điều này thành một lớp lót

$ pip install numpy
2____6

Sử dụng toán học tích hợp. quận[]

Python có phương thức tích hợp sẵn, trong mô-đun

$ pip install numpy
7, tính toán khoảng cách giữa 2 điểm trong không gian 3d. Tuy nhiên, điều này chỉ hoạt động với Python 3. 8 hoặc muộn hơn

[0-3]^2 + [0-3]^2 + [0-3]^2
6 nhận vào hai tham số, là hai điểm và trả về khoảng cách Euclide giữa các điểm đó

Ghi chú. Xin lưu ý rằng hai điểm phải có cùng kích thước [i. e cả trong không gian 2d hoặc 3d]

Bây giờ, để tính Khoảng cách Euclide giữa hai điểm này, chúng ta chỉ cần đưa chúng vào phương pháp

[0-3]^2 + [0-3]^2 + [0-3]^2
7

$ pip install numpy
1
5.196152422706632

Phần kết luận

Khoảng cách Euclide là thước đo khoảng cách cơ bản liên quan đến các hệ thống trong không gian Euclide

Không gian Euclide là không gian hình học cổ điển mà bạn quen thuộc trong lớp Toán, thường bị ràng buộc bởi 3 chiều. Mặc dù vậy, nó cũng có thể được quy định cho bất kỳ chiều nguyên không âm nào.

Khoảng cách Euclide là đường thẳng ngắn nhất giữa hai điểm trong không gian Euclide

Số liệu được sử dụng trong nhiều ngữ cảnh trong khai thác dữ liệu, học máy và một số lĩnh vực khác và là một trong những số liệu khoảng cách cơ bản

Chủ Đề