Có nhiều hơn một cách để căn bậc hai Python. Tìm hiểu 5 cách tiếp cận căn bậc hai trong Python + thêm một số thủ thuật nâng cao
Sau khi tìm hiểu về 4 cách để bình phương một số trong Python, giờ là lúc giải quyết phép toán ngược lại - Căn bậc hai trong Python. Bài viết này sẽ hướng dẫn bạn năm cách khác nhau để lấy căn bậc hai trong Python và sẽ kết thúc với phần bổ sung về căn bậc ba và căn bậc hai của danh sách Python
Hãy bắt đầu bằng cách giới thiệu chủ đề và giải quyết các vấn đề tiềm ẩn mà bạn phải xem xét khi tính căn bậc hai trong Python
Giới thiệu về Python Square Roots
Nói một cách đơn giản, căn bậc hai của một số là một giá trị trả về cùng một số khi nhân với chính nó. Đó là một hoạt động nghịch đảo của bình phương
Ví dụ: 3 bình phương là 9 và căn bậc hai của 9 là 3 vì 3 x 3 là 9. Đó là một khái niệm hơi khó giải thích trong một câu, nhưng bạn sẽ hiểu ngay khi nhìn thấy nó trong thực tế
Trước khi đi sâu vào các cách khác nhau để lấy căn bậc hai trong Python, hãy xem qua các bộ số mà bạn có thể và không thể lấy căn bậc hai
Căn bậc hai của một số dương
Căn bậc hai chỉ chơi tốt với số dương. Hiện tại, hãy bỏ qua mã chịu trách nhiệm tính toán và chỉ tập trung vào kết quả
Đoạn mã sau in căn bậc hai của số 1 và 25
import math
a = 1
b = 25
# Square root of a positive number
a_sqrt = math.sqrt[a]
b_sqrt = math.sqrt[b]
# Print
print["Square root of a positive number"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
print[f"Square root of {b} = {b_sqrt}"]
Đây là đầu ra
Vì vậy, 1x1 = 1 và 5x5 = 25 - về cơ bản đó là cách căn bậc hai hoạt động. Nhưng nếu bạn lấy căn bậc hai của 0 thì sao?
Căn bậc hai của số không
Bây giờ, số 0 không phải là số nguyên tố hay hợp số, vì vậy chúng ta không thể tìm ra thừa số nguyên tố của nó. Vì lý do này, căn bậc hai của 0 bằng 0
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
Đây là đầu ra
Chỉ còn một trường hợp sử dụng và đó là số âm
Căn bậc hai của một số âm
Không có cách nào tính căn bậc hai của số âm bằng số thực. Hai số âm nhân với nhau bao giờ cũng ra một số dương
Tuy nhiên, chúng ta hãy cho nó một shot
import math
a = -10
# Square root of a negative number
a_sqrt = math.sqrt[a]
# Print
print["Square root of a negative number"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
Nó dẫn đến một lỗi
Có nhiều cách để tính căn bậc hai của số âm, đó là viết chúng dưới dạng bội số của -1. Chẳng hạn, -9 có thể được viết là -1 x 9. Kết quả sẽ là 3i. Bước sang lĩnh vực số ảo nằm ngoài phạm vi của ngày hôm nay, vì vậy tôi sẽ dừng lại ở đây
Tiếp theo, hãy xem qua 5 cách để giải quyết căn bậc hai của Python
Tính căn bậc hai với hàm sqrt[]
Phương pháp đầu tiên thực sự là phương pháp bạn đã thấy trong phần trước. Nó dựa vào hàm
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
2 để thực hiện thủ thuật. Mô-đun này đi kèm với cài đặt Python mặc định, vì vậy không cần cài đặt bất kỳ thư viện bên ngoài nàoDưới đây là đoạn mã minh họa cách lấy căn bậc hai trong Python bằng hàm này
import math
a = 1
b = 25
c = 30.82
d = 100
e = 400.40
# Method #1 - math.sqrt[] function
a_sqrt = math.sqrt[a]
b_sqrt = math.sqrt[b]
c_sqrt = math.sqrt[c]
d_sqrt = math.sqrt[d]
e_sqrt = math.sqrt[e]
# Print
print["Method #1 - math.sqrt[] function"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
print[f"Square root of {b} = {b_sqrt}"]
print[f"Square root of {c} = {c_sqrt}"]
print[f"Square root of {d} = {d_sqrt}"]
print[f"Square root of {e} = {e_sqrt}"]
Và đây là kết quả
Đây có lẽ là phương pháp duy nhất bạn cần, nhưng chúng ta cũng hãy xem xét một số phương pháp thay thế
Tính Căn bậc hai với Hàm pow[]
Nếu bình phương một số có nghĩa là nâng nó lên lũy thừa của 2, thì lấy căn bậc hai về cơ bản là nâng nó lên lũy thừa của 0. 5. Đó chính xác là hành vi bạn có thể thực hiện với hàm
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
2. Phải mất hai đối số - số và số mũHãy xem xét một vài ví dụ
import math
a = 1
b = 25
c = 30.82
d = 100
e = 400.40
# Method #2 - math.pow[] function
a_sqrt = math.pow[a, 0.5]
b_sqrt = math.pow[b, 0.5]
c_sqrt = math.pow[c, 0.5]
d_sqrt = math.pow[d, 0.5]
e_sqrt = math.pow[e, 0.5]
# Print
print["Method #2 - math.pow[] function"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
print[f"Square root of {b} = {b_sqrt}"]
print[f"Square root of {c} = {c_sqrt}"]
print[f"Square root of {d} = {d_sqrt}"]
print[f"Square root of {e} = {e_sqrt}"]
Đầu ra giống hệt với những gì chúng ta có trước đây
Gọn gàng, nhưng chúng ta có thể loại bỏ hoàn toàn việc sử dụng thư viện không?
Toán tử số mũ của Python [**] để lấy căn bậc hai
Logic tương tự từ chức năng trước được áp dụng ở đây. Bạn có thể nâng một số lên lũy thừa 0. 5 với toán tử số mũ của Python. Nó làm tương tự như
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
4, nhưng cú pháp ngắn hơn và không dựa vào bất kỳ thư viện nàoĐây là cách sử dụng nó trong Python
________số 8_______Kết quả một lần nữa giống hệt nhau, không có gì ngạc nhiên ở đây
Tiếp theo, chúng ta hãy xem việc lấy căn bậc hai của số và mảng với Numpy
Numpy - Tính toán gốc của một số hoặc một mảng
Numpy là một thư viện truy cập để tính toán số trong Python. Nó có hàm
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
5 tích hợp sẵn và bạn có thể sử dụng nó để lấy căn bậc hai cho cả số và mảngChỉ cần ghi nhớ kiểu trả về - nó sẽ là
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
6 cho một số và import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
7 cho mảng. Tất nhiên, mỗi phần tử mảng sẽ có kiểu import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
6import numpy as np
a = 1
b = 25
c = 30.82
d = 100
e = 400.40
arr = [a, b, c]
# Method #4 - Numpy square roots
a_sqrt = np.sqrt[a]
b_sqrt = np.sqrt[b]
c_sqrt = np.sqrt[c]
d_sqrt = np.sqrt[d]
e_sqrt = np.sqrt[e]
arr_sqrt = np.sqrt[arr]
# Print
print["Method #4 - Numpy square roots"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
print[f"Square root of {b} = {b_sqrt}"]
print[f"Square root of {c} = {c_sqrt}"]
print[f"Square root of {d} = {d_sqrt}"]
print[f"Square root of {e} = {e_sqrt}"]
print[f"Square root of {arr} = {arr_sqrt}"]
Đây là đầu ra giao diện điều khiển
Cho đến nay, đây là phương pháp thuận tiện nhất vì nó dựa trên thư viện Python được sử dụng rộng rãi và quy trình tính toán giống nhau bất kể kiểu dữ liệu nào được đưa vào.
Cmath - Lấy căn bậc hai của số phức trong Python
Bạn có nhớ câu chuyện về căn bậc hai và số âm không? . Mô-đun này được sử dụng để làm việc với các số phức
Trong đoạn mã bên dưới, bạn sẽ thấy căn bậc hai được lấy từ số nguyên dương, số thực, số phức và số âm
import cmath
a = 1
b = 25.44
c = cmath.pi
d = 10+10j
e = -100
# Method #5 - Square roots of complex numbers
a_sqrt = cmath.sqrt[a]
b_sqrt = cmath.sqrt[b]
c_sqrt = cmath.sqrt[c]
d_sqrt = cmath.sqrt[d]
e_sqrt = cmath.sqrt[e]
# Print
print["Method #5 - Square roots of complex numbers"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
print[f"Square root of {b} = {b_sqrt}"]
print[f"Square root of {c} = {c_sqrt}"]
print[f"Square root of {d} = {d_sqrt}"]
print[f"Square root of {e} = {e_sqrt}"]
Lần này không có lỗi
Tôi chưa bao giờ có nhu cầu sử dụng mô-đun này, nhưng thật tốt khi biết nó tồn tại
Tiếp theo, hãy xem qua một số ví dụ sử dụng nâng cao hơn về căn bậc hai Python
Thưởng. Chủ đề gốc Python nâng cao
Bây giờ chúng ta sẽ sang số và thảo luận về một số chủ đề nâng cao hơn. Chúng bao gồm các cách tính căn bậc ba trong Python và lấy căn bậc hai của danh sách vanilla Python. Hãy bắt đầu với căn bậc ba
Căn bậc ba trong Python
Nếu lấy căn bậc hai có nghĩa là nâng một số lên lũy thừa của 0. 5, thì căn bậc ba phải được biểu diễn bằng lũy thừa của 0. 333 hay 1/3
Đây là cách triển khai logic này trong Python mà không cần bất kỳ thư viện bên ngoài nào
a = 1
b = 27
c = 30.82
d = 1000
e = 400.40
# Bonus #1 - Cube roots
a_cbrt = a ** [1./3.]
b_cbrt = b ** [1./3.]
c_cbrt = c ** [1./3.]
d_cbrt = d ** [1./3.]
e_cbrt = e ** [1./3.]
# Print
print["Bonus #1 - Cube roots"]
print["--------------------------------------------------"]
print[f"Cube root of {a} = {a_cbrt}"]
print[f"Cube root of {b} = {b_cbrt}"]
print[f"Cube root of {c} = {c_cbrt}"]
print[f"Cube root of {d} = {d_cbrt}"]
print[f"Cube root of {e} = {e_cbrt}"]
Kết quả được in dưới đây
Numpy cung cấp một cách dễ dàng hơn để lấy căn bậc ba trong Python. Nó có chức năng
import math
a = -10
# Square root of a negative number
a_sqrt = math.sqrt[a]
# Print
print["Square root of a negative number"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
1 được tích hợp sẵn, viết tắt của cube root. Bạn có thể sử dụng nó trên cả số và mảng, giống như với căn bậc haiimport numpy as np
a = 1
b = 27
c = 30.82
d = 1000
e = 400.40
arr = [a, b, c]
# Bonus #1.2 - Cube roots with Numpy
a_cbrt = np.cbrt[a]
b_cbrt = np.cbrt[b]
c_cbrt = np.cbrt[c]
d_cbrt = np.cbrt[d]
e_cbrt = np.cbrt[e]
arr_cbrt = np.cbrt[arr]
# Print
print["Bonus #1.2 - Cube roots with Numpy"]
print["--------------------------------------------------"]
print[f"Cube root of {a} = {a_cbrt}"]
print[f"Cube root of {b} = {b_cbrt}"]
print[f"Cube root of {c} = {c_cbrt}"]
print[f"Cube root of {d} = {d_cbrt}"]
print[f"Cube root of {e} = {e_cbrt}"]
print[f"Cube root of {arr} = {arr_cbrt}"]
Hãy cùng xem kết quả
Vâng, thật dễ dàng
Căn bậc hai của danh sách trong Python
Ngoài ra còn có một cách dễ dàng để tính căn bậc hai của danh sách Python mà không cần Numpy. Bạn có thể chỉ cần lặp lại danh sách và lấy căn bậc hai của một mục danh sách riêng lẻ
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
0Đây là kết quả
Hoặc, nếu bạn thích cách tiếp cận Pythonic hơn, không có lý do gì để không sử dụng cách hiểu danh sách và chỉ đơn giản là phép tính trên cho một dòng mã
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
1Đầu ra giống hệt nhau
Và đó là cách dễ dàng để lấy căn bậc hai trong Python - cho số nguyên, số float, danh sách và thậm chí cả số phức. Hãy làm một bản tóm tắt ngắn tiếp theo
Phần kết luận
Bây giờ bạn đã biết 5 cách khác nhau để tính căn bậc hai trong Python. Trong thực tế, bạn chỉ cần một, nhưng sẽ không hại gì khi biết một vài lựa chọn thay thế. Bạn có thể sử dụng mô-đun
import math
a = 0
# Square root of a zero
a_sqrt = math.sqrt[a]
# Print
print["Square root of a zero"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
9 tích hợp, chọn import math
a = -10
# Square root of a negative number
a_sqrt = math.sqrt[a]
# Print
print["Square root of a negative number"]
print["--------------------------------------------------"]
print[f"Square root of {a} = {a_sqrt}"]
3 hoặc sử dụng toán tử số mũ và tránh hoàn toàn các thư viện. Tất cả các phương pháp đều hiệu quả và sự lựa chọn là tùy thuộc vào bạn