Hướng dẫn dùng math tau python



Các khóa học qua video:
Lập trình C Java C# SQL Server PHP HTML5-CSS3-JavaScript

Mục lục bài viết:

  • Làm quen với Mô-đun toán học Python
  • Hằng số của Mô-đun toán học
    • Số Pi
    • Tau
    • Số của Euler
    • vô cực
    • Không phải là một số (NaN)
  • Các hàm số học
    • Tìm thừa số với giai thừa trong Python ()
    • Tìm giá trị trần với ceil ()
    • Tìm giá trị sàn với sàn ()
    • Cắt ngắn số bằng trunc ()
    • Tìm sự gần gũi của các con số với Python isclose ()
  • Chức năng nguồn
    • Tính lũy thừa của một số với pow ()
    • Tìm số mũ tự nhiên với exp ()
    • Ví dụ thực tế với exp ()
  • Hàm lôgarit
    • Nhật ký tự nhiên trong Python với nhật ký ()
    • Hiểu log2 () và log10 ()
    • Ví dụ thực tế với Nhật ký tự nhiên
  • Các chức năng mô-đun toán học quan trọng khác
    • Tính số chia chung lớn nhất
    • Tính tổng số lặp lại
    • Tính căn bậc hai
    • Chuyển đổi giá trị góc
    • Tính giá trị lượng giác
    • Bổ sung mới cho mô-đun toán học trong Python 3.8
  • cmath vs math
  • NumPy vs toán học
  • Phần kết luận


Trong bài viết này, bạn sẽ tìm hiểu tất cả về mathmô-đun của Python . Tính toán toán học là một phần thiết yếu của hầu hết sự phát triển Python. Cho dù bạn đang thực hiện một dự án khoa học, một ứng dụng tài chính hay bất kỳ loại hình lập trình nào khác, bạn vẫn không thể thoát khỏi nhu cầu về toán học.

Đối với các phép tính toán học đơn giản bằng Python, bạn có thể sử dụng các toán tử toán học được tích hợp sẵn , chẳng hạn như phép cộng ( +), phép trừ ( -), phép chia ( /) và phép nhân ( *). Nhưng các phép toán nâng cao hơn, chẳng hạn như hàm mũ, logarit, lượng giác hoặc lũy thừa, không được tích hợp sẵn. Điều đó có nghĩa là bạn cần phải triển khai tất cả các hàm này từ đầu?

May mắn thay, không. Python cung cấp một mô-đun được thiết kế đặc biệt cho các phép toán cấp cao hơn: mathmô-đun.

Đến cuối bài viết này, bạn sẽ học:

  • mathMô-đun Python là gì
  • Cách sử dụng các mathchức năng mô-đun để giải quyết các vấn đề trong cuộc sống thực
  • Hằng số của mathmô-đun là gì, bao gồm số pi, tau và số Euler
  • Sự khác biệt giữa các chức năng và mathchức năng tích hợp là gì
  • Có gì khác biệt giữa mathcmathvà NumPy là

Nền tảng về toán học sẽ rất hữu ích ở đây, nhưng đừng lo lắng nếu toán học không phải là điểm mạnh của bạn. Bài viết này sẽ giải thích những điều cơ bản về mọi thứ bạn cần biết.

Vậy hãy bắt đầu!

Làm quen với mathMô-đun Python

Các Python mathmô-đun là một tính năng quan trọng được thiết kế để đối phó với các hoạt động toán học. Nó được đóng gói với bản phát hành Python tiêu chuẩn và đã ở đó ngay từ đầu. Hầu hết các mathchức năng của mô-đun là những lớp bao bọc mỏng xung quanh các chức năng toán học của nền tảng C. Kể từ khi các chức năng cơ bản của nó được viết bằng CPython , các mathmô-đun là hiệu quả và phù hợp với những tiêu chuẩn C .

mathMô-đun Python cung cấp cho bạn khả năng thực hiện các phép tính toán học phổ biến và hữu ích trong ứng dụng của bạn. Dưới đây là một số cách sử dụng thực tế cho mathmô-đun:

  • Tính toán kết hợp và hoán vị bằng cách sử dụng giai thừa
  • Tính toán chiều cao của một cái cột bằng cách sử dụng các hàm lượng giác
  • Tính toán phân rã phóng xạ bằng cách sử dụng hàm số mũ
  • Tính toán đường cong của cầu treo bằng hàm hypebol
  • Giải phương trình bậc hai
  • Mô phỏng các hàm tuần hoàn, chẳng hạn như sóng âm thanh và ánh sáng, sử dụng các hàm lượng giác

Vì mathmô-đun được đóng gói cùng với bản phát hành Python, bạn không cần phải cài đặt nó một cách riêng biệt. Sử dụng nó chỉ là vấn đề nhập mô-đun :

Bạn có thể nhậpmath mô-đun Python bằng lệnh trên. Sau khi nhập, bạn có thể sử dụng nó ngay lập tức.

Hằng số của mathmô-đun

mathMô-đun Python cung cấp nhiều hằng số được xác định trước . Có quyền truy cập vào các hằng số này cung cấp một số lợi thế. Đối với một, bạn không phải mã hóa chúng theo cách thủ công vào ứng dụng của mình, điều này giúp bạn tiết kiệm rất nhiều thời gian. Thêm vào đó, chúng cung cấp tính nhất quán trong toàn bộ mã của bạn. Mô-đun bao gồm một số hằng số toán học nổi tiếng và các giá trị quan trọng:

  • Số Pi
  • Tau
  • Số của Euler
  • vô cực
  • Không phải số (NaN)

Trong phần này, bạn sẽ tìm hiểu về các hằng số và cách sử dụng chúng trong mã Python của bạn.

Số Pi

Pi (π) là tỷ số giữa chu vi hình tròn ( c ) và đường kính ( d ):

π = c / d

Tỷ lệ này luôn giống nhau đối với bất kỳ vòng tròn nào.

Pi là một số vô tỉ , có nghĩa là nó không thể được biểu diễn dưới dạng một phân số đơn giản. Do đó, số pi có vô số chữ số thập phân, nhưng nó có thể được tính gần đúng là 22/7 hoặc 3,141.

Sự thật thú vị: Pi là hằng số toán học được công nhận và nổi tiếng nhất trên thế giới. Nó có ngày kỷ niệm riêng, được gọi là Ngày số Pi , rơi vào ngày 14 tháng 3 (14/3).

Bạn có thể truy cập số pi như sau:

>>>

>>> math.pi
3.141592653589793

Như bạn có thể thấy, giá trị pi được đặt cho mười lăm chữ số thập phân trong Python. Số lượng chữ số được cung cấp phụ thuộc vào trình biên dịch C bên dưới. Python in mười lăm chữ số đầu tiên theo mặc định và math.piluôn trả về giá trị float.

Vì vậy, một số cách mà pi có thể hữu ích cho bạn là gì? Bạn có thể tính chu vi của một hình tròn bằng cách sử dụng 2π r , trong đó r là bán kính của hình tròn:

>>>

>>> r = 3
>>> circumference = 2 * math.pi * r
>>> f"Circumference of a Circle = 2 * {math.pi:.4} * {r} = {circumference:.4}"
'Circumference of a Circle = 2 * 3.142 * 3 = 18.85'

Bạn có thể sử dụng math.piđể tính chu vi của một hình tròn. Bạn cũng có thể tính diện tích hình tròn bằng công thức π r ² như sau:

>>>

>>> r = 5
>>> area = math.pi * r * r
>>> f"Area of a Circle = {math.pi:.4} * {r} * {r} = {area:.4}"
'Area of a Circle = 3.142 * 5 * 5 = 78.54'

Bạn có thể sử dụng math.piđể tính diện tích và chu vi của một hình tròn. Khi bạn đang thực hiện các phép tính toán học với Python và bạn bắt gặp một công thức sử dụng π, cách tốt nhất là sử dụng giá trị pi do mathmô-đun cung cấp thay vì mã hóa cứng giá trị.

Tau

Tau (τ) là tỉ số giữa chu vi hình tròn với bán kính của nó. Hằng số này bằng 2π, hay gần bằng 6,28. Giống như số pi, tau là một số vô tỉ vì nó chỉ bằng hai lần số pi.

Nhiều biểu thức toán học sử dụng 2π và thay vào đó, sử dụng tau có thể giúp đơn giản hóa các phương trình của bạn. Ví dụ, thay vì tính chu vi hình tròn với 2π r , chúng ta có thể thay tau và sử dụng phương trình đơn giản hơn τ r .

Tuy nhiên, việc sử dụng tau làm hằng số vòng tròn vẫn còn đang được tranh luận . Bạn có quyền tự do sử dụng 2π hoặc τ khi cần thiết.

Bạn có thể sử dụng tau như sau:

>>>

>>> math.tau
6.283185307179586

Giống như math.pimath.tautrả về mười lăm chữ số và là một giá trị thực. Bạn có thể sử dụng tau để tính chu vi của một hình tròn với τ r , trong đó r là bán kính, như sau:

>>>

>>> r = 3
>>> circumference = math.tau * r
>>> f"Circumference of a Circle = {math.tau:.4} * {r} = {circumference:.4}"
'Circumference of a Circle = 6.283 * 3 = 18.85'

Bạn có thể sử dụng math.tauthay thế 2 * math.piđể sắp xếp các phương trình bao gồm biểu thức 2π.

Số của Euler

Số Euler ( e ) là một hằng số là cơ số của lôgarit tự nhiên , một hàm toán học thường được sử dụng để tính toán tốc độ tăng trưởng hoặc giảm dần. Như với pi và tau, số của Euler là số vô tỉ với vô hạn thập phân. Giá trị của e thường được tính gần đúng là 2,718.

Số Euler là một hằng số quan trọng vì nó có nhiều ứng dụng thực tế, chẳng hạn như tính toán sự gia tăng dân số theo thời gian hoặc xác định tốc độ phân rã phóng xạ. Bạn có thể truy cập số của Euler từ mathmô-đun như sau:

>>>

>>> math.e
2.718281828459045

Như với math.pivà math.tau, giá trị của math.eđược cho đến mười lăm chữ số thập phân và được trả về dưới dạng giá trị thực.

vô cực

Vô cực không thể được định nghĩa bằng một con số. Đúng hơn, đó là một khái niệm toán học đại diện cho một cái gì đó không bao giờ kết thúc hoặc vô hạn. Vô cực có thể đi theo một trong hai hướng, tích cực hoặc tiêu cực.

Bạn có thể sử dụng thuật toán vô cực khi bạn muốn so sánh một giá trị nhất định với một giá trị tối đa hoặc tối thiểu tuyệt đối. Các giá trị của vô cực dương và âm trong Python như sau:

>>>

>>> f"Positive Infinity = {math.inf}"
'Positive Infinity = inf'
>>> f"Negative Infinity = {-math.inf}"
'Negative Infinity = -inf'

Vô cực không phải là một giá trị số. Thay vào đó, nó được định nghĩa là math.inf. Python đã giới thiệu hằng số này trong phiên bản 3.5 tương đương với float("inf"):

>>>

>>> float("inf") == math.inf
True

Cả hai float("inf")và math.infđại diện cho khái niệm vô hạn, math.inflớn hơn bất kỳ giá trị số nào:

>>>

>>> x = 1e308
>>> math.inf > x
True

Trong đoạn mã trên, math.inflớn hơn giá trị của x, 10 308 (kích thước tối đa của một số dấu phẩy động), là một số chính xác kép.

Tương tự, -math.infnhỏ hơn bất kỳ giá trị nào:

>>>

>>> y = -1e308
>>> y > -math.inf
True

Âm vô cực nhỏ hơn giá trị của y, là -10 308 . Không có số nào có thể lớn hơn vô cùng hoặc nhỏ hơn âm vô cùng. Đó là lý do tại sao các phép toán với math.infkhông thay đổi giá trị của vô cực:

>>>

>>> math.inf + 1e308
inf
>>> math.inf / 1e308
inf

Như bạn có thể thấy, cả phép cộng và phép chia đều không thay đổi giá trị của math.inf.

Không phải là một số (NaN)

Không phải là một số, hay NaN, không thực sự là một khái niệm toán học. Nó bắt nguồn từ lĩnh vực khoa học máy tính như một tham chiếu đến các giá trị không phải là số. Giá trị NaN có thể là do đầu vào không hợp lệ hoặc nó có thể chỉ ra rằng một biến đáng lẽ là số đã bị làm hỏng bởi các ký tự văn bản hoặc ký hiệu.

Luôn luôn là một phương pháp hay nhất để kiểm tra xem một giá trị có phải là NaN hay không. Nếu đúng như vậy, thì nó có thể dẫn đến các giá trị không hợp lệ trong chương trình của bạn. Python đã giới thiệu hằng số NaN trong phiên bản 3.5.

Bạn có thể quan sát giá trị của math.nanbên dưới:

NaN không phải là một giá trị số. Bạn có thể thấy rằng giá trị của math.nanlà nan, cùng giá trị với float("nan").

Các hàm số học

Lý thuyết số là một nhánh của toán học thuần túy, là nghiên cứu về các số tự nhiên. Lý thuyết số thường đề cập đến số nguyên dương hoặc số nguyên.

mathMô-đun Python cung cấp các hàm hữu ích trong lý thuyết số cũng như trong lý thuyết biểu diễn , một lĩnh vực liên quan. Các hàm này cho phép bạn tính toán một loạt các giá trị quan trọng, bao gồm các giá trị sau:

  • Giai thừa của một số
  • Ước chung lớn nhất của hai số
  • Tổng các lần lặp lại

Tìm thừa số bằng Python factorial()

Bạn có thể đã thấy các biểu thức toán học như 7! hoặc 4! trước. Các dấu chấm than không có nghĩa là các con số đang bị kích thích. Hơn, "!" là ký hiệu giai thừa . Các thừa số được sử dụng để tìm các hoán vị hoặc tổ hợp. Bạn có thể xác định giai thừa của một số bằng cách nhân tất cả các số nguyên từ số đã chọn xuống 1.

Bảng sau đây hiển thị các giá trị giai thừa cho 4, 6 và 7:

Biểu tượngBằng lời nóiBiểu hiệnKết quả
4! Bốn giai thừa 4 x 3 x 2 x 1 24
6! Sáu giai thừa 6 x 5 x 4 x 3 x 2 x 1 720
7! Bảy giai thừa 7 x 6 x 5 x 4 x 3 x 2 x 1 5040

Bạn có thể thấy từ bảng rằng 4 !, hoặc bốn giai thừa, cho giá trị 24 bằng cách nhân phạm vi các số nguyên từ 4 đến 1. Tương tự, 6! và 7! cho các giá trị lần lượt là 720 và 5040.

Bạn có thể triển khai một hàm giai thừa trong Python bằng một trong số các công cụ:

  1. for vòng lặp
  2. Hàm đệ quy
  3. math.factorial()

Đầu tiên, bạn sẽ xem xét việc triển khai giai thừa bằng cách sử dụng một forvòng lặp . Đây là một cách tiếp cận tương đối đơn giản:

def fact_loop(num):
    if num < 0:
        return 0
    if num == 0:
        return 1

    factorial = 1
    for i in range(1, num + 1):
        factorial = factorial * i
    return factorial

Bạn cũng có thể sử dụng một hàm đệ quy để tìm giai thừa. Điều này phức tạp hơn nhưng cũng thanh lịch hơn so với sử dụng một forvòng lặp. Bạn có thể triển khai hàm đệ quy như sau:

def fact_recursion(num):
    if num < 0:
        return 0
    if num == 0:
        return 1

    return num * fact_recursion(num - 1)

Lưu ý: Có một giới hạn đối với độ sâu đệ quy trong Python, nhưng chủ đề đó nằm ngoài phạm vi của bài viết này.

Ví dụ sau minh họa cách bạn có thể sử dụng forvòng lặp và các hàm đệ quy:

>>>

>>> fact_loop(7)
5040

>>> fact_recursion(7)
5040

Mặc dù cách triển khai của chúng khác nhau, nhưng giá trị trả về của chúng đều giống nhau.

Tuy nhiên, việc triển khai các hàm của riêng bạn chỉ để lấy giai thừa của một số là tốn thời gian và không hiệu quả. Một phương pháp tốt hơn là sử dụng math.factorial(). Đây là cách bạn có thể tìm giai thừa của một số bằng cách sử dụng math.factorial():

>>>

>>> math.factorial(7)
5040

Cách tiếp cận này trả về kết quả đầu ra mong muốn với một lượng mã tối thiểu.

factorial()chỉ chấp nhận các giá trị nguyên dương. Nếu bạn cố gắng nhập một giá trị âm, thì bạn sẽ nhận được ValueError:

>>>

>>> math.factorial(-5)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: factorial() not defined for negative values

Nhập giá trị âm sẽ dẫn đến kết quả ValueErrorđọc factorial() not defined for negative values.

factorial()cũng không chấp nhận số thập phân. Nó sẽ cung cấp cho bạn một ValueError:

>>>

>>> math.factorial(4.3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: factorial() only accepts integral values

Nhập giá trị thập phân dẫn đến kết quả ValueErrorđọc factorial() only accepts integral values.

Bạn có thể so sánh thời gian thực thi cho từng phương thức giai thừa bằng cách sử dụng timeit():

>>>

>>> import timeit
>>> timeit.timeit("fact_loop(10)", globals=globals())
1.063997201999996

>>> timeit.timeit("fact_recursion(10)", globals=globals())
1.815312818999928

>>> timeit.timeit("math.factorial(10)", setup="import math")
0.10671788000001925

Mẫu trên minh họa kết quả của timeit()từng phương pháp trong ba phương pháp giai thừa.

timeit()thực hiện một triệu vòng lặp mỗi khi nó được chạy. Bảng sau so sánh thời gian thực thi của ba phương thức giai thừa:

KiểuThời gian thực hiện
Với các vòng lặp 1,0640 giây
Với đệ quy 1.8153 giây
Với factorial() 0,1067 giây

Như bạn có thể thấy từ thời gian thực hiện, factorial()nhanh hơn các phương pháp khác. Đó là do triển khai C cơ bản của nó. Phương pháp dựa trên đệ quy là phương pháp chậm nhất trong số ba phương pháp. Mặc dù bạn có thể nhận được thời gian khác nhau tùy thuộc vào CPU của bạn , thứ tự của các chức năng phải giống nhau.

Không chỉ factorial()nhanh hơn các phương pháp khác mà còn ổn định hơn. Khi bạn triển khai chức năng của riêng mình, bạn phải viết mã rõ ràng cho các trường hợp thảm họa như xử lý số âm hoặc số thập phân. Một sai lầm trong quá trình thực hiện có thể dẫn đến lỗi. Nhưng khi sử dụng factorial(), bạn không phải lo lắng về các trường hợp thảm họa vì chức năng đã xử lý tất cả. Do đó, cách tốt nhất là sử dụng factorial()bất cứ khi nào có thể.

Tìm giá trị trần với ceil()

math.ceil()sẽ trả về giá trị nguyên nhỏ nhất lớn hơn hoặc bằng số đã cho. Nếu số là số thập phân dương hoặc âm, thì hàm sẽ trả về giá trị nguyên tiếp theo lớn hơn giá trị đã cho.

Ví dụ: đầu vào là 5,43 sẽ trả về giá trị 6 và đầu vào là -12,43 sẽ trả về giá trị -12. math.ceil()có thể nhận các số thực dương hoặc âm làm giá trị đầu vào và sẽ luôn trả về một giá trị nguyên.

Khi bạn nhập một giá trị số nguyên vào ceil(), nó sẽ trả về cùng một số:

>>>

>>> math.ceil(6)
6
>>> math.ceil(-11)
-11

math.ceil()luôn trả về cùng một giá trị khi một số nguyên được cung cấp làm đầu vào. Để xem bản chất thực sự của ceil(), bạn phải nhập các giá trị thập phân:

>>>

>>> math.ceil(4.23)
5
>>> math.ceil(-11.453)
-11

Khi giá trị là dương (4.23), hàm trả về số nguyên tiếp theo lớn hơn giá trị (5). Khi giá trị là âm (-11,453), hàm cũng trả về số nguyên tiếp theo lớn hơn giá trị (-11).

Hàm sẽ trả về a TypeErrornếu bạn nhập giá trị không phải là số:

>>>

>>> math.ceil("x")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be real number, not str

Bạn phải nhập một số vào hàm. Nếu bạn cố gắng nhập bất kỳ giá trị nào khác, thì bạn sẽ nhận được a TypeError.

Tìm giá trị sàn với floor()

floor()sẽ trả về giá trị số nguyên gần nhất nhỏ hơn hoặc bằng số đã cho. Hàm này hoạt động ngược lại với ceil(). Ví dụ: đầu vào là 8,72 sẽ trả về 8 và đầu vào là -12,34 sẽ trả về -13. floor()có thể lấy số dương hoặc số âm làm đầu vào và sẽ trả về một giá trị nguyên.

Nếu bạn nhập một giá trị số nguyên, thì hàm sẽ trả về cùng một giá trị:

>>>

>>> math.floor(4)
4
>>> math.floor(-17)
-17

Như với ceil(), khi đầu vào cho floor()là một số nguyên, kết quả sẽ được giống như số lượng đầu vào. Đầu ra chỉ khác với đầu vào khi bạn nhập các giá trị thập phân:

>>>

>>> math.floor(5.532)
5
>>> math.floor(-6.432)
-7

Khi bạn nhập một giá trị thập phân dương (5.532), nó sẽ trả về số nguyên gần nhất nhỏ hơn số đầu vào (5). Nếu bạn nhập một số âm (-6.432), thì nó sẽ trả về giá trị số nguyên thấp nhất tiếp theo (-7).

Nếu bạn cố gắng nhập một giá trị không phải là số, thì hàm sẽ trả về TypeError:

>>>

>>> math.floor("x")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be real number, not str

Bạn không thể cung cấp giá trị không phải số làm đầu vào ceil(). Làm như vậy sẽ dẫn đến a TypeError.

Cắt ngắn số với trunc()

Khi bạn nhận được một số có dấu thập phân, bạn có thể chỉ muốn giữ lại phần nguyên và loại bỏ phần thập phân. Các mathmô-đun có chức năng gọi trunc()cho phép bạn làm việc đó.

Bỏ giá trị thập phân là một kiểu làm tròn . Với trunc(), các số âm luôn được làm tròn lên về phía 0 và các số dương luôn được làm tròn xuống về phía 0.

Đây là cách trunc()hàm làm tròn số dương hoặc số âm:

>>>

>>> math.trunc(12.32)
12
>>> math.trunc(-43.24)
-43

Như bạn có thể thấy, 12,32 được làm tròn xuống về phía 0, cho kết quả là 12. Theo cách tương tự, -43,24 được làm tròn lên về phía 0, cho giá trị -43. trunc()luôn luôn làm tròn về phía 0 bất kể số đó là số dương hay số âm.

Khi xử lý các số dương, hãy trunc()cư xử giống như floor():

>>>

>>> math.trunc(12.32) == math.floor(12.32)
True

trunc()hoạt động giống như floor()đối với các số dương. Như bạn có thể thấy, giá trị trả về của cả hai hàm là như nhau.

Khi xử lý các số âm, hãy trunc()cư xử giống như ceil():

>>>

>>> math.trunc(-43.24) == math.ceil(-43.24)
True

Khi số âm, floor()hoạt động giống như ceil(). Giá trị trả về của cả hai hàm đều giống nhau.

Tìm sự gần gũi của các con số với Python isclose()

Trong một số tình huống nhất định — đặc biệt là trong lĩnh vực khoa học dữ liệu — bạn có thể cần xác định xem hai số có gần nhau hay không. Nhưng làm như vậy, trước tiên bạn cần phải trả lời một câu hỏi quan trọng: Làm thế nào gần là gần ? Nói cách khác, định nghĩa của close là gì?

Vâng, Merriam-Webster sẽ cho bạn biết rằng gần có nghĩa là “gần trong thời gian, không gian, hiệu ứng hoặc mức độ”. Không hữu ích lắm phải không?

Ví dụ, lấy bộ số sau: 2,32, 2,33 và 2,331. Khi bạn đo độ gần bằng hai dấu thập phân, 2,32 và 2,33 là gần. Nhưng trên thực tế, 2,33 và 2,331 gần nhau hơn. Do đó, sự gần gũi là một khái niệm tương đối. Bạn không thể xác định mức độ gần gũi mà không có một số loại ngưỡng.

May mắn thay, mathmô-đun cung cấp một chức năng được gọi là isclose()cho phép bạn đặt ngưỡng hoặc dung sai của riêng mình cho sự gần gũi. Nó trả về Truenếu hai số nằm trong dung sai đã thiết lập của bạn cho sự gần gũi và nếu không sẽ trả về False.

Hãy xem cách so sánh hai số bằng cách sử dụng dung sai mặc định:

  • Dung sai tương đối , hoặc rel_tol , là sự khác biệt lớn nhất được coi là "gần" so với độ lớn của các giá trị đầu vào. Đây là phần trăm dung sai. Giá trị mặc định là 1e-09 hoặc 0,000000001.
  • Dung sai tuyệt đối , hoặc abs_tol , là sự khác biệt lớn nhất để được coi là "gần" bất kể độ lớn của các giá trị đầu vào. Giá trị mặc định là 0,0.

isclose()sẽ trở lại Truekhi điều kiện sau được thỏa mãn:

abs (ab) <= max (rel_tol * max (abs (a), abs (b)), abs_tol).

isclosesử dụng biểu thức trên để xác định độ gần nhau của hai số. Bạn có thể thay thế các giá trị của riêng mình và quan sát xem liệu hai số có gần nhau hay không.

Trong trường hợp sau, 6 và 7 không gần nhau:

>>>

>>> math.isclose(6, 7)
False

Các số 6 và 7 không được coi là gần nhau vì dung sai tương đối được đặt cho chín chữ số thập phân. Nhưng nếu bạn nhập 6,999999999 và 7 dưới cùng một dung sai, thì chúng được coi là gần nhau:

>>>

>>> math.isclose(6.999999999, 7)
True

Bạn có thể thấy rằng giá trị 6,999999999 nằm trong chín chữ số thập phân của 7. Do đó, dựa trên dung sai tương đối mặc định, 6,999999999 và 7 được coi là gần nhau.

Bạn có thể điều chỉnh dung sai tương đối tùy theo nhu cầu của mình. Nếu bạn đặt rel_tolthành 0,2, thì 6 và 7 được coi là gần:

>>>

>>> math.isclose(6, 7, rel_tol=0.2)
True

Bạn có thể quan sát thấy rằng 6 và 7 đang gần nhau. Điều này là do chúng nằm trong phạm vi 20% của nhau.

Cũng như rel_tol, bạn có thể điều chỉnh abs_tolgiá trị theo nhu cầu của mình. Để được coi là gần, sự khác biệt giữa các giá trị đầu vào phải nhỏ hơn hoặc bằng giá trị dung sai tuyệt đối. Bạn có thể thiết lập abs_tolnhư sau:

>>>

>>> math.isclose(6, 7, abs_tol=1.0)
True
>>> math.isclose(6, 7, abs_tol=0.2)
False

Khi bạn đặt dung sai tuyệt đối là 1, các số 6 và 7 là gần nhau vì sự khác biệt giữa chúng bằng với dung sai tuyệt đối. Tuy nhiên, trong trường hợp thứ hai, chênh lệch giữa 6 và 7 không nhỏ hơn hoặc bằng dung sai tuyệt đối đã thiết lập là 0,2.

Bạn có thể sử dụng abs_tolcho các giá trị rất nhỏ:

>>>

>>> math.isclose(1, 1.0000001, abs_tol=1e-08)
False
>>> math.isclose(1, 1.00000001, abs_tol=1e-08)
True

Như bạn có thể thấy, bạn có thể xác định mức độ gần gũi của các số rất nhỏ với isclose. Một số trường hợp đặc biệt liên quan đến sự gần gũi có thể được minh họa bằng cách sử dụng nanvà infcác giá trị:

>>>

>>> math.isclose(math.nan, 1e308)
False
>>> math.isclose(math.nan, math.nan)
False

>>> math.isclose(math.inf, 1e308)
False
>>> math.isclose(math.inf, math.inf)
True

Bạn có thể thấy từ các ví dụ trên rằng nankhông gần với bất kỳ giá trị nào, thậm chí không đối với chính nó. Mặt khác, infkhông phải là gần với bất kỳ giá trị số, thậm chí không cho những người thân rất lớn, nhưng nó là gần với bản thân.

Chức năng nguồn

Hàm lũy thừa nhận bất kỳ số x nào làm đầu vào, nâng x lên một số lũy thừa n và trả về x n làm đầu ra. mathMô-đun của Python cung cấp một số chức năng liên quan đến nguồn. Trong phần này, bạn sẽ tìm hiểu về hàm lũy thừa, hàm mũ và hàm căn bậc hai.

Tính lũy thừa của một số với pow()

Hàm lũy thừa có công thức sau đây trong đó biến x là cơ số , biến n là lũy thừa và a có thể là hằng số bất kỳ :

Hướng dẫn dùng math tau python

Chức năng nguồn

Trong công thức trên, giá trị của cơ số x được nâng lên lũy thừa của n .

Bạn có thể sử dụng math.pow()để có được sức mạnh của một số. Có một chức năng tích hợp, pow()khác với math.pow(). Bạn sẽ tìm hiểu sự khác biệt sau trong phần này.

math.pow() nhận hai tham số như sau:

>>>

>>> math.pow(2, 5)
32.0
>>> math.pow(5, 2.4)
47.59134846789696

Đối số đầu tiên là giá trị cơ sở và đối số thứ hai là giá trị lũy thừa. Bạn có thể cung cấp một số nguyên hoặc một giá trị thập phân làm đầu vào và hàm luôn trả về một giá trị thực. Có một số trường hợp đặc biệt được định nghĩa trong math.pow().

Khi cơ số 1 được nâng lên thành lũy thừa của bất kỳ số n nào, nó cho kết quả là 1,0:

>>>

>>> math.pow(1.0, 3)
1.0

Khi bạn tăng giá trị cơ bản 1 lên bất kỳ giá trị lũy thừa nào, bạn sẽ luôn nhận được kết quả là 1,0. Tương tự như vậy, bất kỳ số cơ sở nào được nâng lên thành lũy thừa của 0 đều cho kết quả là 1,0:

>>>

>>> math.pow(4, 0.0)
1.0
>>> math.pow(-4, 0.0)
1.0

Như bạn có thể thấy, bất kỳ số nào được nâng lên lũy thừa của 0 sẽ cho kết quả là 1,0. Bạn có thể thấy kết quả đó ngay cả khi cơ sở là nan:

>>>

>>> math.pow(math.nan, 0.0)
1.0

Số 0 được nâng lên thành lũy thừa của bất kỳ số dương nào sẽ cho kết quả là 0,0:

>>>

>>> math.pow(0.0, 2)
0.0
>>> math.pow(0.0, 2.3)
0.0

Nhưng nếu bạn cố gắng tăng 0,0 lên một lũy thừa âm, thì kết quả sẽ là ValueError:

>>>

>>> math.pow(0.0, -2)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error

Các ValueErrorchỉ xảy ra khi các cơ sở là 0. Nếu cơ sở là bất kỳ số nào khác ngoài 0 thì hàm sẽ trả về một giá trị điện hợp lệ.

Ngoài ra math.pow(), có hai cách tích hợp để tìm sức mạnh của một số trong Python:

  1. x ** y
  2. pow()

Tùy chọn đầu tiên là đơn giản. Bạn có thể đã sử dụng nó một hoặc hai lần rồi. Loại trả về của giá trị được xác định bởi các đầu vào:

>>>

>>> 3 ** 2
9
>>> 2 ** 3.3
9.849155306759329

Khi bạn sử dụng số nguyên, bạn sẽ nhận được một giá trị nguyên. Khi bạn sử dụng giá trị thập phân, kiểu trả về sẽ thay đổi thành giá trị thập phân.

Tùy chọn thứ hai là một chức năng tích hợp linh hoạt. Bạn không phải sử dụng bất kỳ nhập khẩu nào để sử dụng nó. Việc xây dựng trong pow()phương pháp có ba thông số:

  1. Các cơ sở số
  2. Các điện số
  3. Các mô đun số

Hai tham số đầu tiên là bắt buộc, trong khi tham số thứ ba là tùy chọn. Bạn có thể nhập số nguyên hoặc số thập phân và hàm sẽ trả về kết quả thích hợp dựa trên đầu vào:

>>>

>>> pow(3, 2)
9
>>> pow(2, 3.3)
9.849155306759329

Tích hợp sẵn pow()có hai đối số bắt buộc hoạt động giống như cơ sở và lũy thừa trong x ** ycú pháp. pow()cũng có một tham số thứ ba là tùy chọn: modulus . Tham số này thường được sử dụng trong mật mã . Tích hợp sẵn pow()với tham số mô đun tùy chọn tương đương với phương trình (x ** y) % z. Cú pháp Python trông giống như sau:

>>>

>>> pow(32, 6, 5)
4
>>> (32 ** 6) % 5 == pow(32, 6, 5)
True

pow()nâng cơ số (32) lên lũy thừa (6), và sau đó giá trị kết quả là môđun chia cho số môđun (5). Trong trường hợp này, kết quả là 4. Bạn có thể thay thế các giá trị của riêng mình và thấy rằng cả hai pow()và phương trình đã cho đều cho kết quả như nhau.

Mặc dù cả ba phương pháp tính toán công suất đều hoạt động giống nhau, nhưng giữa chúng có một số khác biệt về cách triển khai. Thời gian thực hiện cho mỗi phương thức như sau:

>>>

>>> timeit.timeit("10 ** 308")
1.0078728999942541

>>> timeit.timeit("pow(10, 308)")
1.047615700008464

>>> timeit.timeit("math.pow(10, 308)", setup="import math")
0.1837239999877056

Bảng sau so sánh thời gian thực hiện của ba phương pháp được đo bằng timeit():

KiểuThời gian thực hiện
x ** y 1,0079 giây
pow(x, y) 1,0476 giây
math.pow(x, y) 0,1837 giây

Bạn có thể quan sát từ bảng rằng math.pow()nhanh hơn các phương pháp khác và tích hợp sẵn pow()là chậm nhất.

Lý do đằng sau hiệu quả của math.pow()nó là cách nó được triển khai. Nó dựa trên ngôn ngữ C cơ bản. Mặt khác, pow()và x ** ysử dụng việc triển **khai toán tử của chính đối tượng đầu vào . Tuy nhiên, math.pow()không thể xử lý số phức (sẽ được giải thích trong phần sau), ngược lại pow()và **có thể.

Tìm số mũ tự nhiên với exp()

Bạn đã tìm hiểu về các hàm nguồn trong phần trước. Với hàm mũ, mọi thứ có một chút khác biệt. Thay vì cơ sở là biến, lũy thừa trở thành biến. Nó trông giống như thế này:

Hướng dẫn dùng math tau python

Hàm số mũ tổng quát

Ở đây a có thể là bất kỳ hằng số nào và x , là giá trị lũy thừa, sẽ trở thành biến số.

Vậy hàm mũ có gì đặc biệt? Giá trị của hàm tăng nhanh khi giá trị x tăng. Nếu cơ số lớn hơn 1 thì hàm số liên tục tăng giá trị khi x tăng. Tính chất đặc biệt của hàm số mũ là hệ số góc của hàm số cũng liên tục tăng khi x tăng.

Bạn đã tìm hiểu về số của Euler trong phần trước . Nó là cơ số của lôgarit tự nhiên. Nó cũng đóng một vai trò nào đó với hàm số mũ. Khi số của Euler được kết hợp vào hàm mũ, nó sẽ trở thành hàm số mũ tự nhiên :

Hướng dẫn dùng math tau python

Hàm số mũ tự nhiên

Chức năng này được sử dụng trong nhiều tình huống thực tế. Bạn có thể đã nghe nói về thuật ngữ tăng trưởng theo cấp số nhân , thường được sử dụng liên quan đến sự gia tăng dân số của con người hoặc tốc độ phân rã phóng xạ. Cả hai điều này có thể được tính bằng cách sử dụng hàm mũ tự nhiên.

mathMô-đun Python cung cấp một hàm, exp()cho phép bạn tính toán số mũ tự nhiên của một số. Bạn có thể tìm thấy giá trị như sau:

>>>

>>> math.exp(21)
1318815734.4832146
>>> math.exp(-1.2)
0.30119421191220214

Số đầu vào có thể là số dương hoặc số âm và hàm luôn trả về giá trị float. Nếu số không phải là giá trị số, thì phương thức sẽ trả về TypeError:

>>>

>>> math.exp("x")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: must be real number, not str

Như bạn có thể thấy, nếu đầu vào là giá trị chuỗi, thì hàm trả về giá trị TypeErrorđọc must be real number, not str.

Bạn cũng có thể tính toán số mũ bằng cách sử dụng math.e ** xbiểu thức hoặc bằng cách sử dụng pow(math.e, x). Thời gian thực hiện của ba phương thức này như sau:

>>>

>>> timeit.timeit("math.e ** 308", setup="import math")
0.17853009998701513

>>> timeit.timeit("pow(math.e, 308)", setup="import math")
0.21040189999621361

>>> timeit.timeit("math.exp(308)", setup="import math")
0.125878200007719

Bảng sau so sánh thời gian thực hiện của các phương pháp trên được đo bằng timeit():

KiểuThời gian thực hiện
e ** x 0,1785 giây
pow(e, x) 0,2104 giây
math.exp(x) 0,1259 giây

Bạn có thể thấy đó math.exp()là nhanh hơn các phương pháp khác và pow(e, x)là chậm nhất. Đây là hành vi được mong đợi vì triển khai C bên dưới của mathmô-đun.

Cũng cần lưu ý rằng e ** xvà pow(e, x)trả về các giá trị giống nhau, nhưng exp()trả về một giá trị hơi khác. Điều này là do sự khác biệt trong triển khai. Tài liệu Python ghi chú rằng exp()chính xác hơn hai phương pháp còn lại.

Ví dụ thực tế với exp()

Phân rã phóng xạ xảy ra khi một nguyên tử không ổn định bị mất năng lượng bằng cách phát ra bức xạ ion hóa. Tốc độ phân rã phóng xạ được đo bằng chu kỳ bán rã, là thời gian để một nửa lượng hạt nhân mẹ bị phân rã. Bạn có thể tính toán quá trình phân rã bằng công thức sau:

Hướng dẫn dùng math tau python

Phương trình phân rã phóng xạ

Bạn có thể sử dụng công thức trên để tính khối lượng còn lại của một nguyên tố phóng xạ sau một số năm nhất định. Các biến của công thức đã cho như sau:

  • N (0) là đại lượng ban đầu của chất.
  • N (t) là đại lượng còn lại và chưa bị phân rã sau một thời gian ( t ).
  • T là chu kỳ bán rã của đại lượng phân rã.
  • e là số của Euler.

Nghiên cứu khoa học đã xác định chu kỳ bán rã của tất cả các nguyên tố phóng xạ. Bạn có thể thay thế các giá trị vào phương trình để tính số lượng còn lại của bất kỳ chất phóng xạ nào. Hãy thử điều đó ngay bây giờ.

Đồng vị phóng xạ stronti-90 có chu kỳ bán rã là 38,1 năm. Một mẫu chứa 100 mg Sr-90. Bạn có thể tính số miligam Sr-90 còn lại sau 100 năm:

>>>

>>> half_life = 38.1
>>> initial = 100
>>> time = 100
>>> remaining = initial * math.exp(-0.693 * time / half_life)
>>> f"Remaining quantity of Sr-90: {remaining}"
'Remaining quantity of Sr-90: 16.22044604811303'

Như bạn thấy, chu kỳ bán rã được đặt thành 38,1 và thời hạn được đặt thành 100 năm. Bạn có thể sử dụng math.expđể đơn giản hóa phương trình. Bằng cách thay các giá trị vào phương trình, bạn có thể thấy rằng, sau 100 năm, 16,22mg Sr-90 vẫn còn.

Hàm lôgarit

Hàm lôgarit có thể được coi là nghịch đảo của hàm số mũ. Chúng được biểu thị dưới dạng sau:

Hướng dẫn dùng math tau python

Hàm Logarit tổng quát

Ở đây một là cơ sở của logarit, mà có thể là bất kỳ số. Bạn đã học về hàm mũ trong phần trước. Hàm số mũ có thể được biểu diễn dưới dạng hàm số lôgarit và ngược lại.

Nhật ký tự nhiên Python với log()

Các logarit tự nhiên của một số là logarit của mình cho các cơ sở của hằng số toán học điện tử , hoặc số Euler:

Hướng dẫn dùng math tau python

Hàm Logarit tự nhiên

Như với hàm mũ, log tự nhiên sử dụng hằng số e . Nó thường được mô tả là f (x) = ln (x), trong đó e là ẩn.

Bạn có thể sử dụng nhật ký tự nhiên giống như cách bạn sử dụng hàm mũ. Nó được sử dụng để tính toán các giá trị như tốc độ tăng dân số hoặc tốc độ phân rã phóng xạ trong các nguyên tố.

log()có hai đối số. Cái đầu tiên là bắt buộc và cái thứ hai là tùy chọn. Với một đối số, bạn có thể nhận được nhật ký tự nhiên (với cơ số e ) của số đầu vào:

>>>

>>> math.log(4)
1.3862943611198906
>>> math.log(3.4)
1.2237754316221157

Tuy nhiên, hàm trả về a ValueErrornếu bạn nhập một số không dương:

>>>

>>> math.log(-3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: math domain error

Như bạn có thể thấy, bạn không thể nhập giá trị âm cho log(). Điều này là do giá trị nhật ký không được xác định cho các số âm và số không.

Với hai đối số, bạn có thể tính nhật ký của đối số đầu tiên cho cơ sở của đối số thứ hai:

>>>

>>> math.log(math.pi, 2)
1.651496129472319
>>> math.log(math.pi, 5)
0.711260668712669

Bạn có thể thấy giá trị thay đổi như thế nào khi cơ sở nhật ký được thay đổi.

Hiểu log2()vàlog10()

mathMô-đun Python cũng cung cấp hai hàm riêng biệt cho phép bạn tính toán các giá trị nhật ký cho cơ số 2 và 10:

  1. log2() được sử dụng để tính toán giá trị log cho cơ số 2.
  2. log10() được sử dụng để tính toán giá trị log cho cơ số 10.

Với log2()bạn có thể nhận giá trị nhật ký cho cơ sở 2:

>>>

>>> math.log2(math.pi)
1.6514961294723187
>>> math.log(math.pi, 2)
1.651496129472319

Cả hai hàm đều có cùng mục tiêu, nhưng tài liệu Python lưu ý rằng log2()cách sử dụng chính xác hơn log(x, 2).

Bạn có thể tính toán giá trị nhật ký của một số cho cơ số 10 với log10():

>>>

>>> math.log10(math.pi)
0.4971498726941338
>>> math.log(math.pi, 10)
0.4971498726941338

Các tài liệu Python cũng đề cập rằng log10()là chính xác hơn log(x, 10)mặc dù cả hai chức năng có mục tiêu tương tự.

Ví dụ thực tế với Nhật ký tự nhiên

Trong phần trước , bạn đã biết cách sử dụng math.exp()để tính khối lượng còn lại của một nguyên tố phóng xạ sau một khoảng thời gian nhất định. Với math.log(), bạn có thể tìm thấy chu kỳ bán rã của một nguyên tố phóng xạ chưa biết bằng cách đo khối lượng tại một khoảng thời gian. Phương trình sau đây có thể được sử dụng để tính chu kỳ bán rã của một nguyên tố phóng xạ:

Hướng dẫn dùng math tau python

Phương trình phân rã phóng xạ

Bằng cách sắp xếp lại công thức phân rã phóng xạ, bạn có thể làm cho chu kỳ bán rã ( T ) trở thành chủ đề của công thức. Các biến của công thức đã cho như sau:

  • T là chu kỳ bán rã của đại lượng phân rã.
  • N (0) là đại lượng ban đầu của chất.
  • N (t) là đại lượng còn lại và chưa bị phân rã sau một khoảng thời gian ( t ).
  • ln là nhật ký tự nhiên.

Bạn có thể thay thế các giá trị đã biết vào phương trình để tính chu kỳ bán rã của chất phóng xạ.

Ví dụ, hãy tưởng tượng bạn đang nghiên cứu một mẫu nguyên tố phóng xạ không xác định. Khi nó được phát hiện cách đây 100 năm, kích thước mẫu là 100mg. Sau 100 năm phân rã chỉ còn lại 16,22mg. Sử dụng công thức trên, bạn có thể tính toán chu kỳ bán rã của nguyên tố chưa biết này:

>>>

>>> initial = 100
>>> remaining = 16.22
>>> time = 100
>>> half_life = (-0.693 * time) / math.log(remaining / initial)
>>> f"Half-life of the unknown element: {half_life}"
'Half-life of the unknown element: 38.09942398335152'

Bạn có thể thấy rằng nguyên tố chưa biết có chu kỳ bán rã khoảng 38,1 năm. Dựa trên thông tin này, bạn có thể xác định phần tử không xác định là strontium-90.

Các mathchức năng mô-đun quan trọng khác

mathMô-đun Python có nhiều chức năng hữu ích cho các phép tính toán học và bài viết này chỉ đề cập sâu đến một vài trong số chúng. Trong phần này, bạn sẽ tìm hiểu ngắn gọn về một số chức năng quan trọng khác có sẵn trong mathmô-đun.

Tính số chia chung lớn nhất

Ước chung lớn nhất (GCD) của hai số dương là số nguyên dương lớn nhất chia cả hai số mà không có dư.

Ví dụ, GCD của 15 và 25 là 5. Bạn có thể chia cả 15 và 25 cho 5 mà không có phần dư. Không có con số nào lớn hơn mà làm được như vậy. Nếu bạn lấy 15 và 30, thì GCD là 15 vì cả 15 và 30 đều có thể chia cho 15 mà không có dư.

Bạn không cần phải triển khai các hàm của riêng mình để tính toán GCD. mathMô-đun Python cung cấp một hàm được gọi là math.gcd()cho phép bạn tính GCD của hai số. Bạn có thể cung cấp số dương hoặc số âm làm đầu vào và nó trả về giá trị GCD thích hợp. Tuy nhiên, bạn không thể nhập số thập phân.

Tính tổng số lặp lại

Nếu bạn muốn tìm tổng các giá trị của một vòng lặp math.fsum()có thể lặp lại mà không cần sử dụng vòng lặp, thì đây có lẽ là cách dễ nhất để làm điều đó. Bạn có thể sử dụng các tệp lặp như mảng, bộ giá trị hoặc danh sách làm đầu vào và hàm trả về tổng các giá trị. Một hàm tích hợp được gọi là cũng sum()cho phép bạn tính toán tổng các lần lặp, nhưng fsum()chính xác hơn sum(). Bạn có thể đọc thêm về điều đó trong tài liệu .

Tính căn bậc hai

Căn bậc hai của một số là một giá trị mà khi nhân với chính nó, sẽ cho ra số đó. Bạn có thể sử dụng math.sqrt()để tìm căn bậc hai của bất kỳ số thực dương nào (số nguyên hoặc số thập phân). Giá trị trả về luôn là giá trị float. Hàm sẽ ném ra một ValueErrornếu bạn cố gắng nhập một số âm.

Chuyển đổi giá trị góc

Trong các tình huống thực tế cũng như trong toán học, bạn thường gặp các trường hợp bạn phải đo các góc để thực hiện các phép tính. Góc có thể được đo bằng độ hoặc bằng radian. Đôi khi bạn phải chuyển đổi độ sang radian và ngược lại. Các mathmô-đun cung cấp chức năng cho phép bạn làm như vậy.

Nếu bạn muốn chuyển đổi độ sang radian, thì bạn có thể sử dụng math.radians(). Nó trả về giá trị radian của đầu vào độ. Tương tự như vậy, nếu bạn muốn chuyển đổi radian sang độ, thì bạn có thể sử dụng math.degrees().

Tính giá trị lượng giác

Lượng giác là nghiên cứu của các hình tam giác. Nó đề cập đến mối quan hệ giữa các góc và các cạnh của một tam giác. Lượng giác chủ yếu quan tâm đến tam giác vuông (trong đó một góc trong là 90 độ), nhưng nó cũng có thể được áp dụng cho các loại tam giác khác. mathMô-đun Python cung cấp các hàm rất hữu ích cho phép bạn thực hiện các phép tính lượng giác.

Bạn có thể tính giá trị sin của một góc với math.sin(), giá trị cosin với math.cos()và giá trị tiếp tuyến với math.tan(). Các mathmô-đun cũng cung cấp chức năng để tính toán arc sin với math.asin(), arc cosine với math.acos(), và arc tangent với math.atan(). Cuối cùng, bạn có thể tính cạnh huyền của một tam giác bằng cách sử dụng math.hypot().

Bổ sung mới cho mathmô-đun trong Python 3.8

Với việc phát hành phiên bản Python 3.8 , một số bổ sung và thay đổi mới đã được thực hiện cho mathmô-đun. Các bổ sung và thay đổi mới như sau:

  • comb(n, k)trả về số cách chọn k mục từ n mục mà không lặp lại và không có thứ tự cụ thể .

  • perm(n, k)trả về số cách chọn k mục từ n mục mà không lặp lại và có thứ tự .

  • isqrt() trả về căn bậc hai số nguyên của một số nguyên không âm.

  • prod()tính toán tích của tất cả các phần tử trong đầu vào có thể lặp lại. Như với fsum(), phương pháp này có thể mất iterables như mảng, danh sách, hoặc các bộ.

  • dist()trả về khoảng cách Euclide giữa hai điểm p và q , mỗi điểm được cho dưới dạng một chuỗi (hoặc có thể lặp lại) các tọa độ. Hai điểm phải có cùng thứ nguyên.

  • hypot()bây giờ xử lý nhiều hơn hai chiều. Trước đây, nó hỗ trợ tối đa hai thứ nguyên.

cmath vs math

Một số phức là sự kết hợp của một số thực và một số ảo. Nó có công thức là a + bi , trong đó a là số thực và bi là số ảo. Số thực và số ảo có thể được giải thích như sau:

  • Một con số thực theo nghĩa đen là bất kỳ con số nào bạn có thể nghĩ ra.
  • Một số ảo là một số cho kết quả âm khi bình phương.

Một số thực có thể là bất kỳ số nào. Ví dụ, 12, 4.3, -19.0 đều là số thực. Các số tưởng tượng được hiển thị dưới dạng i . Hình ảnh sau đây cho thấy một ví dụ về một số phức:

Hướng dẫn dùng math tau python

Số phức

Trong ví dụ trên, 7 là số thực và 3i là số ảo. Số phức hầu hết được sử dụng trong hình học, giải tích, tính toán khoa học và đặc biệt là trong điện tử.

Các chức năng của mathmô-đun Python không được trang bị để xử lý các số phức. Tuy nhiên, Python cung cấp một mô-đun khác có thể xử lý cụ thể các số phức, đó là cmathmô-đun. mathMô-đun Python được bổ sung bởi cmathmô-đun này, thực hiện nhiều chức năng tương tự nhưng đối với số phức.

Bạn có thể nhập cmathmô-đun như sau:

Vì cmathmô-đun cũng được đóng gói bằng Python, bạn có thể nhập nó giống như cách bạn nhập mathmô-đun. Trước khi bạn làm việc với cmathmô-đun, bạn phải biết cách xác định một số phức. Bạn có thể xác định một số phức như sau:

>>>

>>> c = 2 + 3j
>>> c
(2+3j)

>>> type(c)
<class 'complex'>

Như bạn thấy, bạn có thể xác định rằng một số thực sự phức tạp bằng cách sử dụng type().

Lưu ý: Trong toán học, đơn vị ảo thường được ký hiệu là i . Trong một số trường, thông thường hơn là sử dụng j cho cùng một thứ. Trong Python, bạn sử dụng jđể biểu thị các số ảo.

Python cũng cung cấp một hàm tích hợp đặc biệt được gọi là complex()cho phép bạn tạo các số phức. Bạn có thể sử dụng complex()như sau:

>>>

>>> c = complex(2, 3)
>>> c
(2+3j)

>>> type(c)
<class 'complex'>

Bạn có thể sử dụng một trong hai phương pháp để tạo số phức. Bạn cũng có thể sử dụng cmathmô-đun để tính toán các hàm toán học cho các số phức như sau:

>>>

>>> cmath.sqrt(c)
(1.8581072140693775+0.6727275964137814j)

>>> cmath.log(c)
(1.3622897515267103+0.6947382761967031j)

>>> cmath.exp(c)
(-16.091399670844+12.02063434789931j)

Ví dụ này cho bạn thấy cách tính căn bậc hai, giá trị lôgarit và giá trị mũ của một số phức. Bạn có thể đọc tài liệu nếu bạn muốn tìm hiểu thêm về cmathmô-đun.

NumPy vs math

Một số thư viện Python đáng chú ý có thể được sử dụng để tính toán toán học. Một trong những thư viện nổi bật nhất là Numerical Python, hoặc NumPy . Nó chủ yếu được sử dụng trong máy tính khoa học và trong các lĩnh vực khoa học dữ liệu. Không giống như mathmô-đun, là một phần của bản phát hành Python tiêu chuẩn, bạn phải cài đặt NumPy để làm việc với nó.

Trái tim của NumPy là cấu trúc dữ liệu mảng N -dimensional (đa chiều) hiệu suất cao . Mảng này cho phép bạn thực hiện các phép toán trên toàn bộ mảng mà không cần lặp qua các phần tử . Tất cả các hàm trong thư viện được tối ưu hóa để hoạt động với các đối tượng mảng N chiều.

Cả mathmô-đun và thư viện NumPy đều có thể được sử dụng cho các phép tính toán học. NumPy có một số điểm tương đồng với mathmô-đun. NumPy có một tập hợp con các hàm , tương tự như các mathhàm mô-đun, xử lý các phép tính toán học. Cả NumPy và mathcung cấp các hàm giải quyết các phép tính lượng giác , hàm mũ , logarit , hypebol và số học .

Ngoài ra còn có một số khác biệt cơ bản giữa mathvà NumPy. mathMô-đun Python hướng nhiều hơn đến việc làm việc với các giá trị vô hướng, trong khi NumPy phù hợp hơn để làm việc với mảng, vectơ và thậm chí cả ma trận.

Khi làm việc với các giá trị vô hướng, các mathhàm mô-đun có thể nhanh hơn so với các đối tác NumPy của chúng. Điều này là do các hàm NumPy chuyển đổi các giá trị thành các mảng bên dưới để thực hiện các phép tính trên chúng. NumPy nhanh hơn nhiều khi làm việc với các mảng N -dimensional vì các tối ưu hóa cho chúng. Ngoại trừ fsum()và prod(), các mathhàm mô-đun không thể xử lý các mảng.

Phần kết luận

Trong bài viết này, bạn đã tìm hiểu về mathmô-đun Python . Mô-đun cung cấp các chức năng hữu ích để thực hiện các phép tính toán học có nhiều ứng dụng trong thực tế.

Trong bài viết này, bạn đã học được:

  • mathMô-đun Python là gì
  • Cách sử dụng các mathhàm với các ví dụ thực tế
  • Hằng số của mathmô-đun, bao gồm số pi, tau và số Euler là gì
  • Sự khác biệt giữa các chức năng và mathchức năng tích hợp là gì
  • Có gì khác biệt giữa mathcmathvà NumPy là

Hiểu cách sử dụng các mathchức năng là bước đầu tiên. Bây giờ đã đến lúc bắt đầu áp dụng những gì bạn đã học được vào các tình huống thực tế. Nếu bạn có bất kỳ câu hỏi hoặc ý kiến, xin vui lòng để lại chúng trong phần bình luận bên dưới.

Hướng dẫn dùng math tau python

Các khóa học qua video:
Lập trình C Java C# SQL Server PHP HTML5-CSS3-JavaScript
« Prev: Python: Các kiểu dữ liệu cơ bản trong Python
» Next: Python: Bố cục PyQt: Tạo các ứng dụng GUI chuyên nghiệp