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 2Nế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 ManhattanVớ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ácimport 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____6Sử 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
15.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