Bạn có thể lấy căn bậc hai của một số âm trong Python không?

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

Hình 1 - Căn bậc hai của số dương [ảnh của tác giả]

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

Hình 2 - Căn bậc hai của số 0 [ảnh của tác giả]

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

Hình 3 - Căn bậc hai của số âm [ảnh của tác giả]

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ào

Dướ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ả

Hình 4 - Hàm Math sqrt[] [ảnh của tác giả]

Đâ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

Hình 5 - Hàm toán học pow[] [ảnh của tác giả]

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

Hình 6 - Toán tử số mũ Python [ảnh của tác giả]

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ảng

Chỉ 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}"]
6

import 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

Hình 7 - Căn bậc hai trong Numpy [ảnh của tác giả]

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

Hình 8 - Căn bậc hai của số phức [ảnh của tác giả]

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

Hình 9 - Rễ lập phương [1] [ảnh của tác giả]

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 hai

import 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ả

Hình 10 - Rễ lập phương [2] [ảnh của tác giả]

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ả

Hình 11 - Căn bậc hai của một danh sách [1] [ảnh của tác giả]

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

Hình 12 - Căn bậc hai của một danh sách [2] [ảnh của tác giả]

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

Chủ Đề