Giới thiệu hoạt hình về chuỗi Fourier
(andreinc.net)- Bắt đầu từ tính bất biến theo phép quay của đường tròn và đường tròn đơn vị, bài viết kết nối trực quan mạch ý từ sin·cos, số phức, công thức Euler, sóng hình sin đến các epicycle rồi đi tới Fourier Series
- Chuyển động quay của đường tròn đơn vị cho phép diễn giải $\sin$ là tọa độ y, $\cos$ là tọa độ x; hai hàm này có chu kỳ $2\pi$ và độ lệch pha $\frac{\pi}{2}$
- Trên mặt phẳng phức, $e^{ix}=\cos(x)+i\sin(x)$ trở thành phép quay trên đường tròn đơn vị, và sóng hình sin phức gộp cos và sin thành một đối tượng quay duy nhất
- Khi cộng nhiều sóng hình sin, hiện tượng tăng cường và triệt tiêu sẽ xuất hiện; nếu kết hợp các tần số lẻ với biên độ giảm dần thì có thể ngày càng xấp xỉ tốt các dạng gián đoạn như sóng vuông
- Epicycle biểu diễn từng sóng hình sin dưới dạng các đường tròn quay và phép cộng vectơ; bán kính tương ứng với biên độ $A$, tốc độ quay tương ứng với tần số góc $\omega$, và góc ban đầu tương ứng với pha $\varphi$
Phép quay bắt đầu từ đường tròn, $\pi$ và radian
- Đường tròn được xác định bởi tâm $P(a,b)$ và bán kính $r$, về mặt đại số được biểu diễn là $(x-a)^2+(y-b)^2=r^2$
- Nếu đặt tâm tại gốc tọa độ và bán kính bằng 1 thì ta có đường tròn đơn vị, với phương trình đơn giản thành $x^2+y^2=1$
- Một điểm trên đường tròn và điểm phản xạ đối diện của nó vẫn giữ nguyên quan hệ khi quay; tính bất biến theo phép quay này là trực giác cốt lõi trong toán học Fourier
- $\pi$ là tỷ số giữa chu vi và đường kính của đường tròn, và có cùng giá trị $\pi \approx 3.14159...$ với mọi đường tròn
- Chu vi là $P=2\pi r$
- Diện tích là $A=\pi r^2$
- $\pi$ không phải số hữu tỉ, và cũng là một số siêu việt không phải nghiệm của bất kỳ đa thức khác 0 nào có hệ số hữu tỉ
- Radian là đơn vị chuẩn để đo góc trong toán học và vật lý; để đổi từ độ sang radian, nhân số đo góc với $\pi$ rồi chia cho 180
- Trong toán học Fourier, dùng radian giúp xử lý các hàm lượng giác không chỉ như góc đơn thuần mà như hàm của số thực, khiến phép vi tích phân của sóng và dao động trở nên gọn gàng hơn
Diễn giải đường tròn đơn vị của sin và cos
- $\sin$ và $\cos$ có thể được xem như bộ theo dõi tọa độ của một điểm quay trên đường tròn đơn vị
- $\theta$ là góc giữa bán kính và trục x dương
- $\sin$ là độ lệch theo phương thẳng đứng, tức tọa độ y
- $\cos$ là độ lệch theo phương ngang, tức tọa độ x
- Vì điểm quay trở lại vị trí xuất phát nên $\sin$ và $\cos$ là các hàm tuần hoàn có chu kỳ $2\pi$
- $\cos$ có cùng dạng sóng với $\sin$ nhưng bị dịch đi $\frac{\pi}{2}$, tức $90^\circ$
- $\sin(x+\frac{\pi}{2})=\cos(x)$
- Nói chính xác hơn, $\cos$ đi trước $\sin$ một góc $\frac{\pi}{2}$
- Vì độ lệch pha này, hai hàm có quan hệ quadrature
- Trong phân tích Fourier, dùng cả thành phần sin và cos cho phép biểu diễn tín hiệu tuần hoàn bất kỳ mà không phụ thuộc vào vị trí bắt đầu, tức là pha
- Xét theo tính đối xứng parity của hàm, $\cos$ là hàm chẵn còn $\sin$ là hàm lẻ
- $\cos(x)=\cos(-x)$
- $\sin(-x)=-\sin(x)$
Số phức, $i$ và công thức Euler
- Trên mặt phẳng phức, mọi điểm trên đường tròn đơn vị tương ứng với một số phức có độ lớn bằng 1
- Với góc thực $\theta$, $z=\cos(\theta)+i\sin(\theta)$ là một điểm trên đường tròn đơn vị, biểu thị trạng thái quay một góc $\theta$ tính từ trục thực dương
- Nhân một số phức với $i$ sẽ quay nó trên mặt phẳng phức ngược chiều kim đồng hồ một góc $\frac{\pi}{2}$, tức 90 độ
- Độ lớn $r=|a+bi|=\sqrt{a^2+b^2}$ được giữ nguyên
- Chỉ có argument tăng thêm $\frac{\pi}{2}$
- Nếu tiếp tục nhân cùng số phức đó với $i$ nhiều lần, nó sẽ lần lượt đi qua các góc phần tư và sau bốn lần sẽ trở về vị trí ban đầu
- Hằng số tự nhiên $e \approx 2.71828$ là một số vô tỉ và cũng là số siêu việt, có thể được định nghĩa bằng chuỗi và giới hạn
- $e=\sum_{n=0}^{\infty}\frac{1}{n!}$
- $e=\lim_{x\to\infty}(1+\frac{1}{x})^x$
- $e=\lim_{x\to0}(1+x)^{1/x}$
- Hàm mũ tự nhiên là một eigenfunction của phép vi phân, vì khi đạo hàm vẫn cho lại chính hàm đó nhân với một hằng số
- $\frac{d}{dx}e^{ax}=ae^{ax}$
- Với $f(x)=e^{ix}$, mỗi lần đạo hàm sẽ nhân thêm với $i$, và sau bốn lần đạo hàm thì quay lại hàm ban đầu
- $\frac{d}{dx}f(x)=ie^{ix}$
- $\frac{d^2}{dx^2}f(x)=-e^{ix}$
- $\frac{d^3}{dx^3}f(x)=-ie^{ix}$
- $\frac{d^4}{dx^4}f(x)=e^{ix}$
- Mẫu hình này giống hệt việc liên tục nhân số phức với $i$ để quay, từ đó dẫn tới trực giác rằng $e^{ix}$ vẽ nên một đường tròn trên mặt phẳng phức
- Công thức Euler là $e^{ix}=\cos(x)+i\sin(x)$, và khi thay $x=\pi$ thì được $e^{i\pi}+1=0$
- Nhờ công thức Euler, ta có thể viết sin và cos dưới dạng hàm mũ
- $\cos(x)=\frac{e^{ix}+e^{-ix}}{2}$
- $\sin(x)=\frac{e^{ix}-e^{-ix}}{2i}$
- Cùng một tham số $x$, $t$, $\theta$ có thể được hiểu là góc hoặc thời gian tùy ngữ cảnh, nhưng hình thức toán học vẫn như nhau
Sóng hình sin và sóng hình sin phức
- Sóng hình sin là dao động lặp lại, mượt mà, và có thể biểu diễn như một hàm theo thời gian $t$: $y(t)=A\sin(2\pi ft+\varphi)=A\sin(\omega t+\varphi)$
- Mỗi hạng tử quyết định hình dạng và chuyển động của dạng sóng
- $A$ là biên độ, tức độ lệch lớn nhất so với giá trị trung tâm 0
- $f$ là tần số thông thường, biểu thị số dao động hoàn chỉnh mỗi giây và được đo bằng Hz
- $\omega=2\pi f$ là tần số góc, được đo bằng radian mỗi giây thay vì chu kỳ mỗi giây
- $\varphi$ là độ lệch pha hoặc dịch pha, làm sóng hình sin dịch trái hoặc phải theo trục x
- $\sin$ và $\cos$ là các trường hợp đặc biệt của sóng hình sin; sóng cos tương đương với sóng sin dịch sang trái $\frac{\pi}{2}$ radian
- Bằng cách điều chỉnh $A$, $\omega$, $\varphi$, có thể biểu diễn nhiều dạng dao động khác nhau, từ âm thanh guitar bass đến dòng điện xoay chiều trong gia đình
- Nếu thay góc tĩnh $\theta$ trong công thức Euler bằng $\omega t+\varphi$ thay đổi theo thời gian, ta có sóng hình sin phức
- $s(t)=Ae^{i(\omega t+\varphi)}$
- $s(t)=A\cos(\omega t+\varphi)+iA\sin(\omega t+\varphi)$
- Sóng hình sin phức gộp hai sóng thành một đối tượng toán học duy nhất
- Phần thực hoạt động như sóng cos
- Phần ảo hoạt động như sóng sin
- Hai thành phần phụ thuộc vào cùng một góc quay $\theta=\omega t+\varphi$ nên được đồng bộ hóa
- Khi chiếu sóng hình sin phức lên mặt phẳng Y-Z sẽ thu được sóng sin, còn chiếu lên mặt phẳng X-Z sẽ thu được sóng cos
- Bóng chiếu của một đối tượng quay duy nhất lên các mặt phẳng trực giao khác nhau tạo thành những sóng hình sin giá trị thực quen thuộc
Tổng của các sóng hình sin và giao thoa
- Khi cộng nhiều sóng hình sin, giá trị hàm tại từng điểm được cộng lại, và tùy vào cách các đỉnh và đáy thẳng hàng mà chúng có thể tăng cường hoặc triệt tiêu lẫn nhau
- Nếu đỉnh và đáy của hai sóng hình sin khớp theo hướng triệt tiêu, tổng của chúng có thể tiến gần về 0
- Hiện tượng này có thể được hiểu là giao thoa sóng
- Ví dụ, nếu cộng hai sóng hình sin $y_1(x)=\frac{9}{10}\sin(7x+\frac{\pi}{2})$ và $y_2(x)=\frac{12}{10}\sin(3x-2)$ thì $y(x)=y_1(x)+y_2(x)$ sẽ tạo ra một mẫu hình phức tạp
- Các dạng sóng có tần số và độ lệch pha khác nhau sẽ liên tục chuyển giữa đồng bộ và lệch nhịp; càng cộng nhiều sóng hình sin thì mẫu hình càng phức tạp
Tạo sóng vuông bằng sóng hình sin
- Nếu chọn cẩn thận một số sóng hình sin nhất định, có thể tạo ra các mẫu hình hình học có thể dự đoán được
- Sóng vuông được cấu thành từ tổng vô hạn sau
- $y(x)=\frac{4}{\pi}\sin(\omega x)+\frac{4}{3\pi}\sin(3\omega x)+...+\frac{4}{(2k-1)\pi}\sin((2k-1)\omega x)+...$
- Biểu diễn này chỉ cộng các tần số lẻ, với biên độ của từng hạng tử giảm dần
- Khi cộng các đường cong trơn, liên tục này lại với nhau, giao thoa giữa các đỉnh và đáy sẽ tạo thành một sóng vuông có phần đỉnh phẳng
- Càng đưa nhiều sóng hình sin vào tổng thì phép xấp xỉ càng sắc nét hơn
- Vì một sóng hình sin đơn lẻ tương ứng với một điểm quay quanh đường tròn, quá trình cộng các sóng hình sin có thể được nhìn như các epicycle là những đường tròn quay được nối tiếp nhau
- Trong epicycle, tâm của đường tròn thứ hai nằm trên vành của đường tròn thứ nhất, tâm của đường tròn thứ ba nằm trên vành của đường tròn thứ hai, cứ thế tiếp diễn
- Mỗi epicycle tương ứng với một sóng hình sin cụ thể, và việc kết hợp chúng có thể được hiểu như phép cộng vectơ tuần tự
- Ba sóng hình sin ví dụ được cộng như sau
- $y_1(x)=1.4\sin(x+1)$
- $y_2(x)=0.8\sin(2x)$
- $y_3(x)=0.5\sin(3x)$
- $y(x)=1.4\sin(x+1)+0.8\sin(2x)+0.5\sin(3x)$
- Tại một thời điểm bất kỳ, vectơ vị trí tổng thể được biểu diễn là $\vec{u}=\vec{u_1}+\vec{u_2}+\vec{u_3}$
- Nếu chọn đúng các sóng hình sin, các đường tròn chuyển động có thể xấp xỉ những hình mong muốn như hình bông hoa, còn để tìm ra từng sóng hình sin riêng lẻ thì cần đến Fourier Analysis
Dạng cơ bản của Fourier Series
- Fourier Series là quá trình toán học mở rộng một hàm tuần hoàn có chu kỳ $P$ thành tổng vô hạn của nhiều hàm lượng giác dao động
- Trong phép ẩn dụ bằng bìa album Dark Side of The Moon của Pink Floyd, hàm tuần hoàn $f(x)$ là ánh sáng, lăng kính là Fourier Mathematics, và các màu sắc được tách ra tương ứng với những thành phần sóng hình sin đơn giản
- Công thức cơ bản như sau
- $f(x)=A_0+\sum_{n=1}^{\infty}[A_n\cos(\frac{2\pi nx}{P})+B_n\sin(\frac{2\pi nx}{P})]$
- $A_0$, $A_n$, $B_n$ là các Fourier coefficients, biểu thị mức độ cần thiết của một tần số cụ thể để tái tạo lại dạng sóng ban đầu
- Các hệ số được tính bằng tích phân
- $A_0=\frac{1}{P}\int_{-\frac{P}{2}}^{+\frac{P}{2}}f(x)dx$
- $A_n=\frac{2}{P}\int_{-\frac{P}{2}}^{+\frac{P}{2}}f(x)\cos(\frac{2\pi nx}{P})dx$
- $B_n=\frac{2}{P}\int_{-\frac{P}{2}}^{+\frac{P}{2}}f(x)\sin(\frac{2\pi nx}{P})dx$
- Sin và cos trực quan về mặt hình ảnh nhưng có thể hơi bất tiện khi thao tác đại số, nên có thể dùng công thức Euler để đổi sang dạng hàm mũ
- Fourier Series ở dạng hàm mũ như sau
- $f(x)=\sum_{n=-N}^{N}C_ne^{i2\pi\frac{n}{P}x}$
- Ở dạng hàm mũ, chỉ số $n$ được mở rộng sang cả giá trị âm, qua đó đưa vào khái niệm tần số âm biểu thị hướng quay của vectơ phức
- Công thức hệ số hợp nhất như sau
- $C_n=\frac{1}{P}\int_{-\frac{P}{2}}^{\frac{P}{2}}e^{-i2\pi\frac{n}{P}x}f(x)dx$
Hàm hộp và tính hệ số của sóng vuông
- Phép xấp xỉ sóng vuông đã dùng ở trên là
- $y(x)=\frac{4}{\pi}\sum_{k=1}^{\infty}\frac{\sin(2\pi(2k-1)fx)}{2k-1}$
- Nếu dùng $\omega=2\pi f$ thì $y(x)=\frac{4}{\pi}\sum_{k=1}^{\infty}\frac{\sin((2k-1)\omega x)}{2k-1}$
- Hàm sóng vuông trên đoạn $[0,2L]$ có thể được viết bằng Heaviside Step Function dưới dạng $f(x)=2[H(\frac{x}{L})-H(\frac{x}{L}-1)]-1$
- $A_0$ là giá trị trung bình của hàm trên đoạn $[0,2L]$, và do phần diện tích dương với âm triệt tiêu nhau nên bằng 0
- $A_n$ là hệ số chi phối các hạng tử $\cos$; vì $f(x)$ là hàm lẻ còn $\cos$ là hàm chẵn nên tích của chúng là hàm lẻ
- Khi lấy tích phân trên cả một chu kỳ, diện tích sẽ triệt tiêu nhau
- Mọi hệ số $A_n$ đều bằng 0
- $B_n$ là hệ số chi phối các hạng tử $\sin$
- Với $n$ chẵn, phần diện tích màu đỏ và xanh lá triệt tiêu nhau nên giá trị tích phân bằng 0
- Với các hạng tử lẻ, các diện tích sẽ cộng lại
- Kết quả tính được là $B_n=\frac{2}{n\pi}(1-(-1)^n)$
- Vì chỉ còn lại các hạng tử $B_n$ lẻ nên sóng vuông có dạng
- $f(x)=\frac{4}{\pi}\sum_{n=1,3,5...}^{+\infty}(\frac{1}{n}\sin(\frac{\pi nx}{L}))$
- Nếu đổi $n\rightarrow2k-1$ thì $f(x)=\frac{4}{\pi}\sum_{k=1}^{+\infty}\frac{\sin(\frac{\pi(2k-1)x}{L})}{2k-1}$
- Thay $L\rightarrow\frac{1}{2f}$, $2\pi f\rightarrow\omega$ thì được $f(x)=\frac{4}{\pi}\sum_{k=1}^{\infty}\frac{\sin((2k-1)\omega x)}{2k-1}$
- Trong thực tế không thể cộng vô hạn nên ta dùng tổng riêng phần $s(x)$ dừng ở một giá trị hữu hạn $n$
- $s(x)=\frac{4}{\pi}\sum_{k=1}^{n}\frac{\sin((2k-1)\omega x)}{2k-1}\approx f(x)$
- Khi tăng $n$, độ chính xác của phép xấp xỉ được cải thiện và khoảng sai lệch còn lại ngày càng nhỏ đi
- Năm hạng tử đầu tiên gồm các sóng hình sin đơn giản có biên độ giảm nhanh và tần số tăng dần
Ví dụ về sóng tam giác và sóng răng cưa
- Phép xấp xỉ Fourier Series của sóng tam giác như sau
- $s(x)=\frac{8}{\pi^2}\sum_{k=1}^{N}\frac{(-1)^{k-1}}{(2k-1)^2}\sin((2k-1)x)$
- Sóng tam giác mượt hơn và hội tụ nhanh hơn; khi $n$ tiến gần 6 thì hình tam giác hiện ra rõ ràng
- Trong khai triển sóng tam giác, các hạng tử số chẵn như $s_2(x)$, $s_4(x)$, $s_6(x)$ có giá trị âm
- Vì biên độ âm không trực quan về mặt vật lý nên có thể viết lại theo hai cách
- Có thể biến tần số thành âm bằng cách dùng $\sin(-x)=-\sin(x)$
- Hoặc giữ biên độ dương và cộng thêm pha $\pi$
- Trên thực tế, cách thứ hai hữu ích hơn và cho khả năng điều khiển hình học tốt hơn
- $-\frac{8}{3^2\pi^2}\sin(3x)$ có thể viết thành $\frac{8}{3^2\pi^2}\sin(3x+\pi)$
- Hàm sóng răng cưa ngược có dạng
- $s(x)=\frac{2}{\pi}\sum_{k=1}^{N}(-1)^k\frac{\sin(kx)}{k}$
Thiết bị nhìn Fourier Series như các epicycle
- Nếu nhìn dưới dạng chuyển động vật lý thay vì phương trình tĩnh, các hạng tử Fourier hoạt động như nhiều đường tròn quay nối đầu-cuối trên các thanh
- Trong thiết bị trực quan này, có thể chọn sawtooth wave, triangle wave, square wave để tạo hình tín hiệu mong muốn
- Mỗi yếu tố trực quan tương ứng trực tiếp với các biến trong công thức Fourier
- Bán kính của mỗi đường tròn là biên độ $A$
- Tốc độ quay của mỗi đường tròn là tần số góc $\omega$
- Góc ban đầu của thanh bên trong đường tròn tại $t=0$ là độ lệch pha $\varphi$
- Ngay cả những dạng sóng phức tạp, nhọn và sắc cũng có thể được phân rã ngược thành tổ hợp các đường tròn quay trơn tru
- Hoạt hình đóng vai trò cho thấy từng bước mối liên hệ giữa đường tròn, sóng hình sin, số phức, epicycle và Fourier Series
1 bình luận
Ý kiến trên Hacker News
Biến đổi Fourier rời rạc chỉ là một ma trận trực giao nhân với vector; FFT nghịch đảo, định lý Plancherel và định lý Parseval cũng tự nhiên suy ra từ việc ma trận đó là trực chuẩn.
Đây có thể là cách chỉ hiệu quả nếu bạn đã hiểu đại số tuyến tính, nhưng sau khi nắm được góc nhìn rời rạc thì việc chuyển sang biến đổi Fourier liên tục cũng dễ hơn.
Cá nhân tôi thấy nhìn thẳng vào công thức dễ hơn nhiều so với xem các vòng tròn và animation.
[1] https://www.youtube.com/watch?v=spUNpyF58BY
[2] https://betterexplained.com/articles/an-interactive-guide-to...
[3] https://en.wikipedia.org/wiki/Discrete_Fourier_transform
Phần còn lại gần như tự suy ra từ đó. Trong một cách ký hiệu, biến đổi Fourier nhân f(x) với e^{-ikx} rồi lấy tích phân; tích phân là một tích vô hướng khổng lồ, còn e^{-ikx} giống như “chuyển vị” của vector cơ sở e^{ikx}, nên rốt cuộc là biểu diễn f_i theo thành phần cơ sở tương ứng.
Phần lớn những người hiểu đại số tuyến tính có lẽ sẽ học biến đổi Fourier theo cách họ học toán cao cấp, tức là qua giáo trình hoặc bài giảng đại học. Trong bối cảnh đó, cách giải thích như “ma trận trực giao nhân với vector” là điểm xuất phát cơ bản, nhưng có thể thiếu trực giác, và các video YouTube thường nhằm lấp khoảng trống đó.
Ví dụ video của 3b1b còn từ tốn giải thích lại vì sao số phức hữu ích, nghĩa là đối tượng khán giả ngay từ đầu đã khác.
Vì vậy với các chủ đề toán học, tôi vẫn tự làm chứng minh để kiểm tra xem mình có thể tự suy ra được hay không.
Sẽ thật tuyệt nếu chỉ cần xem các hình ảnh trực quan đẹp là khái niệm tự đi vào đầu như phép màu, nhưng với tôi nó giống một dạng dopamine trí tuệ hơn.
Nó giống như câu “monoid trong phạm trù endofunctor” của lĩnh vực tín hiệu và hệ thống vậy.
/, và link đúng là:https://www.andreinc.net/2024/04/24/assets/js/2024-04-24-fro...
Có vẻ animation dùng Processing.
https://github.com/nomemory/andreinc-site/tree/main/assets/j...
Khi viết bài tôi đang học p5.js, nên ban đầu làm theo cách khá kém hiệu quả, và cũng không đặc biệt tự hào về nó.
Khi có thời gian tôi sẽ sửa bài để thêm link đúng.
Tôi cũng từng có kế hoạch trực quan hóa toàn bộ đại số tuyến tính cơ bản bằng Processing để hồi phục khỏi chứng trầm cảm không điển hình, nhưng trong một thời gian tôi không thể lập trình trên máy tính.
Một số cách giải thích khác đến tận phần cuối mới gượng ép nhét số phức vào.
Nếu quan tâm chủ đề này, bạn cũng có thể xem phần trực quan hóa biến đổi Fourier phân số [1] và mặt phẳng phức [2] do tôi làm.
[1]: https://static.laszlokorte.de/frft-cube/
[2]: https://static.laszlokorte.de/complex-plane/
Nếu ai thích làm tài liệu giải thích thì mong cũng nói về biến đổi Laplace [1].
Trước đây tôi từng biết cách dùng nó để phân tích mạch điện, nhưng giờ gần như quên hết rồi, nên coi như đây là một lời nhờ vả lười biếng.
1: https://en.wikipedia.org/wiki/Laplace_transform
Nhưng bài viết này còn vượt xa trang đó. Sau này sẽ rất tiện để chia sẻ với mọi người.
Introduction to Graduate Algorithmscủa Georgia Tech và tự triển khai toàn bộ nội dung bài giảng bằng Python.Đây là một khóa học thật sự hay:
https://edstem.org/us/courses/47529/lessons/80063/slides/440...
Đây là lần đầu tôi nghe đến Ed và cũng thấy quan tâm, nhưng mục “see how it works” cũng không thật sự cho biết nó hoạt động ra sao. Hơi tiếc vì có vẻ như theo xu hướng hiện nay là phải đăng ký trước.
Cũng có một trang hữu ích tập hợp video và sách về chuỗi Fourier và biến đổi Fourier:
https://howthefouriertransformworks.com/