Hệ số Fourier Python

Giả sử bạn muốn tạo một làn sóng định kỳ - có thể đó là một bộ tổng hợp nhạc hoặc thứ gì đó. Dù bạn cần sóng để làm gì, hóa ra sóng dễ tạo nhất là sóng hình sin [hoặc cosin]. Bạn có thể thu được sóng hình sin bằng cách chỉ lấy thành phần thẳng đứng của một điểm trên đường tròn đang quay với vận tốc góc không đổi. Như thế này

hoạt hình. Rhett Allain

Có, tôi đã tạo hoạt ảnh này bằng Glowscript — đây là mã trong trường hợp bạn muốn. Nhưng nếu bạn muốn tạo một hàm chu kỳ khác thì sao?. Giả sử bạn muốn tạo sóng vuông. Nó trông như thế này

Chà, đây là điều thú vị. Bạn có thể tạo sóng vuông này với một loạt các hàm sin và cosin. Chuẩn rồi. Đây là toàn bộ ý tưởng đằng sau chuỗi Fourier

Nếu tôi có một hàm chu kỳ f[t], thì điều sau đây là đúng

Đây là một tổng vô hạn của sin và cosin với tần số khác nhau và biên độ khác nhau. Các tần số rất dễ dàng - chỉ là bội số nguyên của ω. Đối với các biên độ, chúng có thể được tính như

Ở đây τ là chu kỳ của hàm tuần hoàn trong đó

Ồ, một điều nữa. Nếu hàm tuần hoàn không có giá trị trung bình bằng 0 [chẳng hạn như nếu nó không dao động quanh trục t], thì bạn cần dịch chuyển nó. Đó là thuật ngữ a0/2 trong đó a0 chỉ là giá trị trung bình trong một khoảng thời gian

Làm thôi nào. Hãy xây dựng một mô hình sóng vuông sử dụng sin và cosin. Chắc chắn rồi, chúng ta không thể thêm vô số wave, nhưng chúng ta có thể thêm 10 wave hoặc hơn. Đó là những gì tôi sẽ chỉ cho bạn cách làm. Đầu tiên, tôi sẽ lấy một biểu thức cho hai hệ số [a_n và b_n]. Thứ hai, tôi sẽ cộng n số hạng và vẽ đồ thị để xem nó có giống sóng vuông không. Đối với phần thứ hai này, tôi sẽ sử dụng python [đây là hướng dẫn vẽ đồ thị python của tôi]

Tìm các hệ số

Tôi cần bắt đầu với một biểu thức toán học cho sóng vuông — f[t]. Vì chức năng lặp lại, tôi chỉ có thể xác định nó trong một khoảng thời gian

Hãy để tôi tiếp tục và đưa ra các giá trị cho A và τ

Tôi không cần những giá trị đó bây giờ, nhưng chúng sẽ được yêu cầu cho biểu đồ python sau này. OK, rõ ràng là a_0 bằng 0. Tôi có cần phải làm điều đó không?

Hãy bắt đầu với a_n [Tôi đang sử dụng dấu gạch dưới cho chỉ số dưới trong trường hợp bạn không chú ý]. Tôi sẽ lấy tích phân hàm f[t] — nhưng vì nó có hai phần nên tôi sẽ lấy hai tích phân. Ngoài ra, thay vì đi từ -τ/2 đến τ/2, tôi sẽ lấy tích phân từ 0 đến τ. Tôi hy vọng điều đó ổn. Nếu không ổn, tôi sẽ bù đắp cho bạn sau. Khi đó tích phân trở thành

Điều này không quá khó để tích hợp. Nó chỉ là tích phân của cosin

Bao thanh toán ra một số nội dung và đánh giá ở các giới hạn

Sin của số 0 bằng 0 - vì vậy có điều đó. Ngoài ra, tôi có thể đặt biểu thức cho ω [từ phía trên] và tôi nhận được

Nếu bạn nghĩ lại về vòng tròn đơn vị từ lớp lượng giác của mình và nhớ rằng n là một số nguyên [1, 2, 3,…]. Vậy sin của nπ sẽ bằng 0 [nó luôn nằm trên trục x của đường tròn đơn vị]. Mọi số hạng trong biểu thức này đều bằng không. Tôi hy vọng bạn không thất vọng

Nhưng điều đó có nghĩa là tất cả các số hạng “a_n” đều bằng không. Mặc dù vậy nó vẫn ổn - thực sự. Nhìn lại chuỗi Fourier. Các điều khoản a_n là hệ số cho các điều khoản cosine. Tuy nhiên, cosin là một hàm chẵn và sóng vuông của chúng ta là một hàm lẻ. Điều hợp lý là bạn sẽ sử dụng các hàm lẻ để xây dựng một hàm lẻ — vì vậy chúng ta không cần bất kỳ thuật ngữ cosin nào

Có lẽ chúng ta có thể bỏ qua bước tính toán các số hạng a_n này vì chúng ta biết hàm của mình là số lẻ — nhưng việc thực hiện các bước vẫn rất hữu ích. Ồ, hãy nhớ rằng không phải hàm nào cũng là số lẻ hoặc số chẵn. Một số chuỗi Fourier sẽ cần cả số hạng a_n VÀ số hạng b_n

Nói về b_n, chúng ta cần tính toán những. Về cơ bản, quy trình này giống như đối với a_n. Tôi sẽ bắt đầu bằng cách đưa hàm sóng vuông của chúng ta vào định nghĩa của các hệ số b_n

Tích phân của sin là âm cosin. Tích phân và đánh giá tại các giới hạn, tôi nhận được

Một lần nữa, tất cả các giá trị đều nằm trên trục x của vòng tròn đơn vị [tại 0, π hoặc 2π — hoặc bội số nào đó của giá trị đó]. Tại 0, cosin là 1, nhưng tại π cosin là -1. Điều đó có nghĩa là các số hạng này sẽ là 1 hoặc -1. Hãy để tôi đơn giản hóa điều này một chút vì tôi có thể kết hợp một số thuật ngữ. Ngoài ra, tôi sẽ thay thế cho ω trong thuật ngữ ở phía trước

OK, chúng ta hãy nghĩ về điều này. Số hạng cos[2nπ] LUÔN LUÔN 1. Bất kể giá trị nào của n, đây sẽ là vị trí trên trục x dương nơi giá trị của cosin là +1. Vì vậy, có hai thuật ngữ +1 trong đó. Để tôi viết lại

Điều gì xảy ra khi n = 1? . Còn khi n = 2 thì cos[2π] = 1 và công cụ sẽ bằng không. Khi n là số lẻ, dấu ngoặc đơn sẽ là 2. Khi n chẵn, nó sẽ bằng không. Bạn có thể để nó ở đó - nhưng có một mẹo. Bạn có thể viết nó như

Hoặc bạn có thể viết nó như

Nhưng một trong hai cách, chúng tôi có hệ số của chúng tôi

Vẽ sơ đồ chuỗi Fourier bằng Python

Để tôi tiếp tục và cho bạn xem đồ thị của tôi cho chuỗi Fourier đến n = 5. Đây là nó. Đây là mã - nhưng đừng lo lắng, tôi sẽ giải thích nó

Khác với công cụ vẽ đồ thị thông thường của bạn [xem lại tại đây], có hai phần chính. Đầu tiên là hàm tính hệ số b_n. Nó trông như thế này

Chức năng trong python là gì? . Nhưng về cơ bản, điều này chỉ trả về một giá trị số cho hệ số với một số giá trị n. Vâng, nó phụ thuộc vào giá trị của A, nhưng điều đó được liệt kê ở trên. Lưu ý rằng tôi đã nâng [-1] lên lũy thừa n — giống như chúng ta đã nói về

Nhưng làm thế nào để bạn vẽ toàn bộ? . Đừng lo lắng, tôi sẽ đi qua những điều quan trọng

Các hệ số Fourier là gì?

Giải thích. Hệ số Fourier là. X n = 1/T∫x[t]e -njwt . dt.

Làm thế nào chúng ta có thể tính toán hệ số Fourier?

Tìm hiểu về hệ số Fourier .
f[t]=av+∞∑n=1ancos[nω0t]+bnsin[nω0t] f [ t ] = a v + ∑ n = 1 ∞ a n cos ⁡ [ n ω 0 t ] + b n sin ⁡.
av=1T∫t0+Tt0f[t]dt,.
ak=2T∫t0+Tt0f[t]cos[kω0t]dt, a k = 2 T ∫ t 0 t 0 + T f [ t ] cos ⁡.
bk=2T∫t0+Tt0f[t]sin[kω0t]dt, b k = 2 T ∫ t 0 t 0 + T f [ t ] sin ⁡

Fourier trong Python là gì?

Biến đổi Fourier là một mô hình toán học giúp biến đổi tín hiệu giữa hai miền khác nhau , chẳng hạn như biến đổi tín hiệu từ miền tần số sang miền thời gian . Biến đổi Fourier có nhiều ứng dụng trong Kỹ thuật và Vật lý, chẳng hạn như xử lý tín hiệu, RADAR, v.v.

Tại sao các hệ số Fourier hữu ích?

Lý do chính mà chúng tôi sử dụng chuỗi Fourier là vì chúng tôi có thể phân tích tín hiệu trong miền khác tốt hơn thay vì trong miền ban đầu . Đôi khi một tín hiệu bộc lộ nhiều hơn ở một miền khác.

Chủ Đề