חזור לתיקייה: 02340125 - אלגוריתמים נומריים

6 - התמרת פורייה

חיפוש בתיקיה
Ctrl K
לחץ כאן או הקש Ctrl K כדי לחפש בכל התיקיה
  • משפחות של מטריצות
  • מטריצות טופוליץ
  • מטריצות סיבוביות
  • לכסון מטריצות סיבוביות
  • המקרה הכללי
  • התמרת הפורייה הדיסקרטית

6 - התמרת פורייה

02340125

אלגוריתמים נומריים

רשימות הרצאה לקריאה בשבת

התמרת פורייה

הופק מתוך תקיית התואר של שקד

uni-folder.vercel.app

משפחות של מטריצות

מטריצות טופוליץ

הגדרה 1 (מטריצת טופוליץ)

מטריצה TTT בגודל n×mn\times mn×m נקראת מטריצת טופליץ אם איבריה מקיימים ti,j=ti+1,j+1t_{i,j}=t_{i+1,j+1}ti,j​=ti+1,j+1​.

הערה

לפעמים רושמים ti,j=tj−it_{i,j}=t_{j-i}ti,j​=tj−i​ וזה פשוט אומר שכל האיברים בהם ההפרש j−ij-ij−i זהה, זהים.

T=(t0t1t2…tm−1t−1t0t1⋮t−2t−1t0⋮⋮⋱⋮t1−nt2−nt3−n…tm−n)T=\begin{pmatrix} t_{0} & t_{1} & t_{2} & \dots & t_{m-1} \\ t_{-1} & t_{0} & t_{1} & & \vdots \\ t_{-2} & t_{-1} & t_{0} & & \vdots \\ \vdots & & & \ddots & \vdots \\ t_{1-n} & t_{2-n} & t_{3-n} & \dots & t_{m-n} \end{pmatrix}T=​t0​t−1​t−2​⋮t1−n​​t1​t0​t−1​t2−n​​t2​t1​t0​t3−n​​…⋱…​tm−1​⋮⋮⋮tm−n​​​

ישנן שתי תכונות מעניינות למטריצות טופוליץ:

  1. חיבור של שתי מטריצות טופליץ היא גם מטריצת טופוליץ.
  2. כפל בסקלר של מטריצת טופוליץ היא גם מטריצת טופוליץ
הגדרה 2 (מטריצה צרה)

מטריצה TTT נקראת צרה אם ערכיה השונים מאפס מרוכזים ברצועה צרה סביב האלכסון הראשי.

מה קורה אם אנו מקבלים תרגיל לפתור מערכת משוואות Ax‾=b‾A\underline{x}=\underline{b}Ax​=b​ כאשר AAA טופוליץ? האם נוכל לנצל את זה ⟸ כן! אבל בקורס זה לא נדבר על זה.
מה אם נרצה ללכסן מטריצה בעלת מבנה זה ולמצוא את הע"ע שלה? בקורס זה אנו לא נתעסק ישירות עם זה אבל נסתכל על משהו דומה אשר יוביל אותנו להתמרת פורייה.

המקור המרכזי לעיסוק במטריצות האלו היא פעולה בשם קונבולוציה!

הגדרה 3 (קונבולוציה)

יהיו שני וקטורים h‾∈Rn,  x‾∈Rm\underline{h}\in \mathbb{R}^n,\;\underline{x}\in \mathbb{R}^mh​∈Rn,x​∈Rm.
פעולת הקונבולוציה ביניהם תסומן z‾=x‾⊗h‾\underline{z}=\underline{x}\otimes \underline{h}z​=x​⊗h​ ופועלת בצורה הבאה:

zk=∑j=−∞∞xk−jhj=∑j=0n−1xk−jhjz_{k}=\sum_{j=-\infty}^{\infty} x_{k-j}h_{j}=\sum_{j=0}^{n-1}x_{k-j}h_{j}zk​=j=−∞∑∞​xk−j​hj​=j=0∑n−1​xk−j​hj​
הערה

אם אנו יוצאים מגבולות x‾\underline{x}x​ או z‾\underline{z}z​ אזי פשוט נקבל בסכימה אפסים באיברים הללו.

באיזה אורך z‾\underline{z}z​? זהו בתכלס וקטור באורך אינסופי אבל אין לנו עניין בערכי kkk שיביאו לאפסים ב-z‾\underline{z}z​ ולכן 0≤k≤m+n−20\leq k\leq m+n-20≤k≤m+n−2 כאשר אורך z‾\underline{z}z​ הוא kkk.

מה אם כעת נקח את הוקטור x‾\underline{x}x​ ונסדר אותו במטריצה בתצורה של מטריצת טופוליץ כך:

(z0z1⋮zm+m−2)=(x0x1x0x2x1x0⋮⋮⋮⋱xm−1x0xm−1x1xm−1x2⋱⋮xm−1)(h0h1h2⋮hn−1)=Xh‾\begin{pmatrix} z_{0} \\ z_{1} \\ \vdots \\ z_{m+m-2} \end{pmatrix}=\begin{pmatrix} x_{0} \\ x_{1} & x_{0} \\ x_{2} & x_{1} & x_{0} \\ \vdots & \vdots & \vdots & \ddots \\ x_{m-1} & & & & x_{0} \\ & x_{m-1} & & & x_{1} \\ & & x_{m-1} & & x_{2}\\ & & & \ddots & \vdots \\ & & & & x_{m-1} \end{pmatrix}\begin{pmatrix} h_{0} \\ h_{1} \\ h_{2} \\ \vdots \\ h_{n-1} \end{pmatrix}=X\underline{h}​z0​z1​⋮zm+m−2​​​=​x0​x1​x2​⋮xm−1​​x0​x1​⋮xm−1​​x0​⋮xm−1​​⋱⋱​x0​x1​x2​⋮xm−1​​​​h0​h1​h2​⋮hn−1​​​=Xh​

נשים לב כי זו עדיין קונבולוציה ואנו נראה בהמשך איך זה בדיוק עוזר לנו.

משפט

פעולת הקונבולוציה סימטרית:

z‾=x‾⊗h‾=h‾⊗x‾\underline{z}=\underline{x}\otimes \underline{h}=\underline{h}\otimes \underline{x}z​=x​⊗h​=h​⊗x​

הוכחה: ישירות מההגדרה.

מסקנה

z‾=Xh‾=Hx‾\underline{z}=X\underline{h}=H\underline{x}z​=Xh​=Hx​

כאשר H,XH,XH,X הן מטריצות טופוליץ הבנויות מהוקטורים h‾,x‾\underline{h},\underline{x}h​,x​ בהתאמה.
נשים לב כי קיבלנו מטריצות טופוליץ צרות.

Proposition (דרך אחרת לחשוב על פעולת הקונבולוציה)

  • הנח את הוקטור x‾\underline{x}x​ בתצורה אופקית.
  • הצב מולו את הוקטור h‾\underline{h}h​ כשמיקום האיבר הראשון(x0,h0x_{0},h_{0}x0​,h0​) מותאם בין שניהם.
  • שקף את h‾\underline{h}h​ סביב נקודת ה-000.
  • חשב את המכפלה בין איברי x‾\underline{x}x​ ואיברי h‾\underline{h}h​ לפי מיקום התואם וסכם כל מכפלות אלה - זה יהיה ערך z0z_{0}z0​.
  • הסע את הוקטור h‾\underline{h}h​ ימינה , כשבכל מיקום kkk שהוא מוצב, הוא מבצע סכום מכפלות כמקודם ויוצר את zkz_{k}zk​.

מטריצות סיבוביות

הגדרה 4 (מטריצה סיבובית)

מטריצה CCC בגודל n×nn\times nn×n נקראת סיבובית אם איבריה מקיימים ti,j=t(j−i)(mod  n)t_{i,j}=t_{(j-i)(mod\; n)}ti,j​=t(j−i)(modn)​

הערה (תזכורת מאלגברה אמ)

(j−i)(mod  n)={n+j−ij−i<0j−i0≤j−i<n(j-i)(mod\; n)=\begin{cases} n+j-i & j-i<0 \\ j-i & 0\leq j-i<n \end{cases}(j−i)(modn)={n+j−ij−i​j−i<00≤j−i<n​
הערה

  • כל מטריצה סיבובית היא מטריצת טופוליץ אך לא להפך.
  • ככלל, אין הכרח שמטריצה תהיה ריבועית על מנת להיות סיבובית.
  • סיבוביות יכולה להתקיים ביחס לשורות, לעמודות או לשניהם.
הגדרה 5 (קונבולוציה סיבובית)

קונבולוציה סיבובית (ציקלית) בין שני וקטורים h‾∈Rn,x‾∈Rm\underline{h}\in \mathbb{R}^n,\underline{x}\in \mathbb{R}^mh​∈Rn,x​∈Rm מסומנת z‾=x‾⊗ch‾\underline{z}=\underline{x}\underset{c}{\otimes}\underline{h}z​=x​c⊗​h​ ומייצרת את z‾\underline{z}z​ לפי:

zk=∑j=0n−1x(k−j)(mod  n)hjz_{k}=\sum_{j=0}^{n-1} x_{(k-j)(mod\; n)}h_{j}zk​=j=0∑n−1​x(k−j)(modn)​hj​
טענה

וקטור התוצאה בקונבולוציה סיבובית מחזורי ב-nnn. כלומר, zk+Jn=zkz_{k+Jn}=z_{k}zk+Jn​=zk​ לכל J∈ZJ \in \mathbb{Z}J∈Z.

הוכחה:

zk+Jn=∑j=0n−1x(k+Jn−j)(mod  n)hj=∑j=0n−1x(k−j)(mod  n)hj=zkz_{k+Jn}=\sum_{j=0}^{n-1}x_{(k+Jn-j)(mod\; n)}h_{j}=\sum_{j=0}^{n-1}x_{(k-j)(mod\; n)}h_{j}=z_{k}zk+Jn​=j=0∑n−1​x(k+Jn−j)(modn)​hj​=j=0∑n−1​x(k−j)(modn)​hj​=zk​

∎

לכסון מטריצות סיבוביות

נרצה כעת למצוא את הו"ע של המטריצות הסיבוביות מסיבות שנראה בהמשך.

משפט

יהיו A,BA,BA,B מטריצות לכסינות במשותף.
אזי, מכפלתן קומוטטיבית

הוכחה:
אם הן לכסינות במשותף אז קיימת SSS הפיכה כך שמתקיים:

A=SΛAS−1∧B=SΛBS−1A=S\Lambda _{A}S^{-1} \qquad \land \qquad B=S\Lambda_{B}S^{-1}A=SΛA​S−1∧B=SΛB​S−1

לכן:

AB=SΛAS−1⋅SΛBS−1=SΛAΛBS−1AB=S\Lambda_{A}S^{-1}\cdot S\Lambda_{B}S^{-1}=S\Lambda_{A}\Lambda_{B}S^{-1}AB=SΛA​S−1⋅SΛB​S−1=SΛA​ΛB​S−1

לפי משפט, הכפלה של מטריצות אלכסוניות קומוטטיבית ולכן:

AB=SΛBΛAS−1=SΛBS−1SΛAS−1=BAAB=S\Lambda_{B}\Lambda_{A}S^{-1}=S\Lambda_{B}S^{-1}S\Lambda_{A}S^{-1}=BAAB=SΛB​ΛA​S−1=SΛB​S−1SΛA​S−1=BA

∎

משפט

כל המטריצות הסיבוביות בגודל n×nn\times nn×n הינן לכסינות אורתונורמלית ובמשותף.
כלומר, כל המטריצות הסיבוביות חולקות את אותם ו"ע, אשר מהווים בסיס אורתונורמלי.

מסקנה

מכפלת מטריצות סיבוביות היא קומוטטיבית.

בקונבולוציה סיבובית נשים לב כי מתקיים:

F(Xh‾)=X(Fh‾)=X(Hf‾)=⋯F(X\underline{h})=X(F\underline{h})=X(H\underline{f})=\cdotsF(Xh​)=X(Fh​)=X(Hf​)=⋯

בואו נוכיח את המשפט הנ"ל בדרך ארוכה ומסובכת ולא פורמלית בעליל:
כעת, נגש ללכסון מטריצות סיבוביות. המשימה שלנו פה היא מציאת הו"ע והע"ע שיקיימו את המשוואה הבאה Cv‾=λv‾C\underline{v}=\lambda \underline{v}Cv​=λv​.
על מנת למצוא את הו"ע הללו, נתחיל עם מקרה פשוט של מטריצה סיבובית מאוד בסיסית שתקרא C1C_{1}C1​ אשר נראית כך:

C1v‾=(0100…00010…00001…0⋮⋮⋮⋮⋱⋮0000…11000…0)(v0v1v2v3⋮vn−1)=α(v0v1v2v3⋮vn−1)C_{1}\underline{v}=\begin{pmatrix} 0 & 1 & 0 & 0 & \dots & 0 \\ 0 & 0 & 1 & 0 & \dots & 0 \\ 0 & 0 & 0 & 1 & \dots & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & 0 & \dots & 1 \\ 1 & 0 & 0 & 0 & \dots & 0 \end{pmatrix}\begin{pmatrix} v_{0} \\ v_{1} \\ v_{2} \\ v_{3} \\ \vdots \\ v_{n-1} \end{pmatrix}=\alpha \begin{pmatrix} v_{0} \\ v_{1} \\ v_{2} \\ v_{3} \\ \vdots \\ v_{n-1} \end{pmatrix}C1​v​=​000⋮01​100⋮00​010⋮00​001⋮00​………⋱……​000⋮10​​​v0​v1​v2​v3​⋮vn−1​​​=α​v0​v1​v2​v3​⋮vn−1​​​

קיבלנו פה מערכת מעניינת של משוואות:

{v1=αv0v2=αv1v3=αv2⋮vn−1=αvn−2v0=αvn−1\begin{cases} v_{1}=\alpha v_{0} \\ v_{2}=\alpha v_{1} \\ v_{3}=\alpha v_{2} \\ \vdots \\ v_{n-1}=\alpha v_{n-2} \\ v_{0}=\alpha v_{n-1} \end{cases}⎩⎨⎧​v1​=αv0​v2​=αv1​v3​=αv2​⋮vn−1​=αvn−2​v0​=αvn−1​​

אז מספיק שנקבע v0=1v_{0}=1v0​=1 (זוהי קביעה שרירותית) אזי נקבל כי:

v1=α,v2=α2,v3=α3,…,vn−1=αn−1,v0=αn=1v_{1}=\alpha,v_{2}=\alpha^2,v_{3}=\alpha^3,\dots,v_{n-1}=\alpha^{n-1},v_{0}=\alpha^n=1v1​=α,v2​=α2,v3​=α3,…,vn−1​=αn−1,v0​=αn=1

קיבלנו פה אילוץ עבור α\alphaα וכל α∈R\alpha \in \mathbb{R}α∈R שיפתור משוואה זו יהיה כביל :)

נסתכל על המשוואה שקיבלנו שהיא αn=1\alpha^n=1αn=1 ונשים לב שזהו פולינום אשר לו nnn שורשים. נשתמש במעגל היחידה ובנוסחת אויילר אשר אומרת:

αℓ=exp⁡{−2πinℓ}=e−2π   ⁣inℓ0≤ℓ≤n−1\alpha_{\ell}=\exp \left\{ -\frac{2\pi i}{n}\ell \right\}=e^{-\frac{2\pi \;\!i}{n}\ell} \quad \quad 0\leq\ell\leq n-1αℓ​=exp{−n2πi​ℓ}=e−n2πi​ℓ0≤ℓ≤n−1
הערה

ניתן להגדיר זאת גם בדרך אחרת כאשר נאמר כי:

∀0≤ℓ≤n−1:    αℓ=wn−ℓ,      wn=e2πni\forall 0\leq \ell\leq n-1:\;\; \alpha_{\ell}=w_{n}^{-\ell},\;\;\; w_{n}=e^{\frac{2\pi}{n}i}∀0≤ℓ≤n−1:αℓ​=wn−ℓ​,wn​=en2π​i

נשים לב כי קיבלנו nnn ע"ע אפשריים למטריצה C1C_{1}C1​ וקיבלנו את nnn הו"ע המתייחסים אליהם:

v‾ℓ=(1αℓαℓ2αℓ3⋮αℓn−1)\underline{v}_{\ell}=\begin{pmatrix} 1 \\ \alpha_{\ell} \\ \alpha_{\ell}^2 \\ \alpha_{\ell}^3 \\ \vdots \\ \alpha_{\ell}^{n-1} \end{pmatrix}v​ℓ​=​1αℓ​αℓ2​αℓ3​⋮αℓn−1​​​

המקרה הכללי

ראינו עד כה מקרה מאוד מאוד פרטי של חישוב ע"ע וו"ע עבור מטריצה סיבובית. כעת, נוכל להשתמש בזה כדי למצוא את הע"ע והו"ע של כל מטריצה סיבובית.
נמשיך ונסתכל על המטריצה C1C_{1}C1​ רק שכעת בריבוע:

C12=(0100…00010…00001…0⋮⋮⋮⋮⋱⋮0000…11000…0)2=(0010…00001…0 ⋮⋮⋮⋮⋱⋮0000…11000…00100…0)=C2C_{1}^2=\begin{pmatrix} 0 & 1 & 0 & 0 & \dots & 0 \\ 0 & 0 & 1 & 0 & \dots & 0 \\ 0 & 0 & 0 & 1 & \dots & 0 \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & 0 & \dots & 1 \\ 1 & 0 & 0 & 0 & \dots & 0 \end{pmatrix}^2=\begin{pmatrix} 0 & 0 & 1 & 0 & \dots & 0 \\ 0 & 0 & 0 & 1 & \dots & 0 \\\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & 0 & \dots & 1 \\ 1 & 0 & 0 & 0 & \dots & 0 \\ 0 & 1 & 0 & 0 & \dots & 0 \end{pmatrix}=C_{2}C12​=​000⋮01​100⋮00​010⋮00​001⋮00​………⋱……​000⋮10​​2=​00 ⋮010​00⋮001​10⋮000​01⋮000​……⋱………​00⋮100​​=C2​

אנו יודעים כי מתקיים:

Av‾=λv‾  ⟹  A2v‾=AAv‾=λAv‾=λ2v‾A\underline{v}=\lambda \underline{v}\implies A^2\underline{v}=AA\underline{v}=\lambda A\underline{v}=\lambda^2\underline{v}Av​=λv​⟹A2v​=AAv​=λAv​=λ2v​

ולכן ל-C2C_{2}C2​ אותם ע"ע וו"ע של C1C_{1}C1​.
נמשיך ל-C3=C13C_{3}=C_{1}^3C3​=C13​ אשר ממשיך להזיז את האלכסון למעלה. נשים לב כי C1nC_{1}^nC1n​ היא מטריצת היחידה כאשר C1∈Rn×nC_{1} \in \mathbb{R}^{n\times n}C1​∈Rn×n.

נקח כעת מטריצה סיבובית כללית ונפרק אותה למטריצות CiC_{i}Ci​-ים כך:

C=(c0c1c2c3…cn−1cn−1c0c1c2…cn−2cn−2cn−1c0c1…cn−3⋮⋮⋮⋮⋱⋮c1c2c3c4…c0)=c1C1+c2C12+c3C13+⋯+cn−1C1n−1+c0C1nC=\begin{pmatrix} c_{0} & c_{1} & c_{2} & c_{3} & \dots & c_{n-1} \\ c_{n-1} & c_{0} & c_{1} & c_{2} & \dots & c_{n-2} \\ c_{n-2} & c_{n-1} & c_{0} & c_{1} & \dots & c_{n-3} \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ c_{1} & c_{2} & c_{3} & c_{4} & \dots & c_{0} \end{pmatrix}=c_{1}C_{1}+c_{2}C_{1}^2+c_{3}C_{1}^3+\dots+c_{n-1}C_{1}^{n-1}+c_{0}C_{1}^nC=​c0​cn−1​cn−2​⋮c1​​c1​c0​cn−1​⋮c2​​c2​c1​c0​⋮c3​​c3​c2​c1​⋮c4​​………⋱…​cn−1​cn−2​cn−3​⋮c0​​​=c1​C1​+c2​C12​+c3​C13​+⋯+cn−1​C1n−1​+c0​C1n​

מתוך כך נקבל כי:

C=c0I+c1C1+c2C12+c3C13+⋯+cn−1C1n−1=∑k=0n−1ckC1kC=c_{0}I+c_{1}C_{1}+c_{2}C_{1}^2+c_{3}C_{1}^3+\dots+c_{n-1}C_{1}^{n-1}=\sum_{k=0}^{n-1} c_{k}C_{1}^kC=c0​I+c1​C1​+c2​C12​+c3​C13​+⋯+cn−1​C1n−1​=k=0∑n−1​ck​C1k​

זהו פולינום מדרגה n−1n-1n−1 הפועל על המטריצה C1C_{1}C1​ ומקדמיו הם איברי השורה הראשונה במטריצה CCC.

נזכר במשפט מאלגברה אמ:

משפט

נניח כי λ∈C\lambda \in \mathbb{C}λ∈C הוא ע"ע של המטריצה AAA עם ו"ע תואם v‾\underline{v}v​ המקיימים Av‾=λv‾A\underline{v}=\lambda \underline{v}Av​=λv​.
יהי פולינום כללי pn(x)∈Fn[x]p_{n}(x)\in \mathbb{F}_{n}[x]pn​(x)∈Fn​[x].
אזי pn(λ)p_{n}(\lambda)pn​(λ) הינו ע"ע של המטריצה pn(A)p_{n}(A)pn​(A) עם אותו ו"ע v‾\underline{v}v​.

Av‾=λv‾  ⟹  pn(A)v‾=pn(λ)v‾A\underline{v}=\lambda \underline{v}\implies p_{n}(A)\underline{v}=p_{n}(\lambda)\underline{v}Av​=λv​⟹pn​(A)v​=pn​(λ)v​

לפי משפט זה נוכל להגיד כי עבור מטריצה סיבובית כללית CCC הו"ע שלה הינם זהים לו"ע של C1C_{1}C1​ והע"ע הינם pn(λ)p_{n}(\lambda)pn​(λ) לכל λ\lambdaλ ע"ע של C1C_{1}C1​.

מסקנה

תהי CCC מטריצה סיבובית כללית. אזי, קיימים סקלרים c0,…,cn−1∈Fc_{0},\dots ,c_{n-1}\in \mathbb{F}c0​,…,cn−1​∈F כך ש:

C=∑k=0n−1ckC1kC=\sum_{k=0}^{n-1}c_{k}C_{1}^kC=k=0∑n−1​ck​C1k​

ומתקיים כי הו"ע של CCC זהים לו"ע של C1C_{1}C1​ עם הע"ע:

λℓ=∑k=0n−1ckαℓk=∑k=0n−1ckwn−kℓ∀0≤ℓ≤n−1\lambda_{\ell}=\sum_{k=0}^{n-1}c_{k}\alpha_{\ell}^k=\sum_{k=0}^{n-1} c_{k}w_{n}^{-k\ell}\quad \forall 0\leq \ell \leq n-1λℓ​=k=0∑n−1​ck​αℓk​=k=0∑n−1​ck​wn−kℓ​∀0≤ℓ≤n−1

כעת, על מנת לסיים להוכיח את המשפט מלמעלה, נרצה רק להראות כי הו"ע מהווים סט אורתונורמלי.

הערה

בפרק זה, נשנה קצת את ההגדרה של הנורמה על מנת לתמוך במספרים מרוכבים:

∥u‾∥22=u‾Hu‾\left\lVert \underline{u} \right\rVert _{2}^2=\underline{u}^H\underline{u}∥u​∥22​=u​Hu​

כאשר HHH מבצע טרנספוז ואז עושה צמוד מרוכב לכל איבר.

נסתכל על המכפלה הפנימית בין שני ו"ע שונים שמצאנו:

v‾kHv‾j=∑m=0n−1wnmkwn−mj=∑m=0n−1wnm(k−j)=∑m=0n−1(wnk−j)m\underline{v}_{k}^H\underline{v}_{j}=\sum_{m=0}^{n-1} w_{n}^{mk}w_{n}^{-mj}=\sum_{m=0}^{n-1}w_{n}^{m(k-j)}=\sum_{m=0}^{n-1}(w_{n}^{k-j})^mv​kH​v​j​=m=0∑n−1​wnmk​wn−mj​=m=0∑n−1​wnm(k−j)​=m=0∑n−1​(wnk−j​)m

נשים לב כי זה סכום הנדסי ולכן מתקיים:

v‾kHv‾j=1−wnn(k−j)1−wnk−j=1−e2π(k−j)i1−e2π(k−i)ni\underline{v}_{k}^H\underline{v}_{j}=\frac{1-w_{n}^{n(k-j)}}{1-w_{n}^{k-j}}=\frac{1-e^{2\pi(k-j)i}}{1-e^{\frac{2\pi(k-i)}{n}i}}v​kH​v​j​=1−wnk−j​1−wnn(k−j)​​=1−en2π(k−i)​i1−e2π(k−j)i​

עבור k=jk=jk=j מתקיים כי v‾kHv‾j=n\underline{v}_{k}^H\underline{v}_{j}=nv​kH​v​j​=n ועבור k≠jk\neq jk=j מתקיים כי v‾kHv‾j=0\underline{v}_{k}^H\underline{v}_{j}=0v​kH​v​j​=0 ולכן הוקטורים אורתוגונליים.
ננרמל אותם ע"י חלוקה ב-n\sqrt{ n }n​ ואז הם גם יהיו אורתונורמליים.

בכך, סיימנו את הוכחת המשפט :O

מסקנה

בהינתן מטריצה סיבובית כלשהי CCC, המטריצה האורתונורמלית הבאה WWW מלכסנת אותה:

W=1n(1111…11wn−1wn−2wn−3…wn−(n−1)1wn−2wn−4wn−6…wn−2(n−1)1wn−3wn−6wn−9…wn−3(n−1)⋮⋮⋮⋮⋱⋮1wn−(n−1)wn−2(n−1)wn−3(n−1)…wn−(n−1)2)W=\frac{1}{\sqrt{ n }}\begin{pmatrix} 1 & 1 & 1 & 1 & \dots & 1 \\ 1 & w_{n}^{-1} & w_{n}^{-2} & w_{n}^{-3} & \dots & w_{n}^{-(n-1)} \\ 1 & w_{n}^{-2} & w_{n}^{-4} & w_{n}^{-6} & \dots & w_{n}^{-2(n-1)} \\ 1 & w_{n}^{-3} & w_{n}^{-6} & w_{n}^{-9} & \dots & w_{n}^{-3(n-1)} \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & w_{n}^{-(n-1)} & w_{n}^{-2(n-1)} & w_{n}^{-3(n-1)} & \dots & w_{n}^{-(n-1)^2} \end{pmatrix}W=n​1​​1111⋮1​1wn−1​wn−2​wn−3​⋮wn−(n−1)​​1wn−2​wn−4​wn−6​⋮wn−2(n−1)​​1wn−3​wn−6​wn−9​⋮wn−3(n−1)​​…………⋱…​1wn−(n−1)​wn−2(n−1)​wn−3(n−1)​⋮wn−(n−1)2​​​ A=WHCWA=W^HCWA=WHCW
הערה

המטריצה WWW סימטרית ולכן, WHW^HWH היא בעצם לקיחת את הצמוד הקומפלקסי לכל איבר.

נשים לב לעוד דבר, והוא במציאת הע"ע.

(λ0λ1λ2λ3λ4⋮λn−1)=(1111…11wn−1wn−2wn−3…wn−(n−1)1wn−2wn−4wn−6…wn−2(n−1)1wn−3wn−6wn−9…wn−3(n−1)⋮⋮⋮⋮⋱⋮1wn−(n−1)wn−2(n−1)wn−3(n−1)…wn−(n−1)2)(c0c1c2c3c4⋮cn−1)=nWc‾\begin{pmatrix} \lambda_{0} \\ \lambda_{1} \\ \lambda_{2} \\ \lambda_{3} \\ \lambda_{4} \\ \vdots \\ \lambda_{n-1} \end{pmatrix}=\begin{pmatrix} 1 & 1 & 1 & 1 & \dots & 1 \\ 1 & w_{n}^{-1} & w_{n}^{-2} & w_{n}^{-3} & \dots & w_{n}^{-(n-1)} \\ 1 & w_{n}^{-2} & w_{n}^{-4} & w_{n}^{-6} & \dots & w_{n}^{-2(n-1)} \\ 1 & w_{n}^{-3} & w_{n}^{-6} & w_{n}^{-9} & \dots & w_{n}^{-3(n-1)} \\ \vdots & \vdots & \vdots & \vdots & \ddots & \vdots \\ 1 & w_{n}^{-(n-1)} & w_{n}^{-2(n-1)} & w_{n}^{-3(n-1)} & \dots & w_{n}^{-(n-1)^2} \end{pmatrix}\begin{pmatrix} c_{0} \\ c_{1} \\ c_{2} \\ c_{3} \\ c_{4} \\ \vdots \\ c_{n-1} \end{pmatrix}=\sqrt{ n }W\underline{c}​λ0​λ1​λ2​λ3​λ4​⋮λn−1​​​=​1111⋮1​1wn−1​wn−2​wn−3​⋮wn−(n−1)​​1wn−2​wn−4​wn−6​⋮wn−2(n−1)​​1wn−3​wn−6​wn−9​⋮wn−3(n−1)​​…………⋱…​1wn−(n−1)​wn−2(n−1)​wn−3(n−1)​⋮wn−(n−1)2​​​​c0​c1​c2​c3​c4​⋮cn−1​​​=n​Wc​

כלומר, אותה מטריצה ששימשה ללכסון היא גם זו שאיתה נוכל לחשב את הע"ע מתוך השורה הראשונה של CCC.

למטריצה WWW זו יש שימוש מאוד מעניין ונראה אותו עכשיו:

התמרת הפורייה הדיסקרטית

הגדרה 6 (מטריצת פורייה)

המטריצה WWW שראינו נקראת מטריצת פורייה והכפלתה בווקטור c‾\underline{c}c​ נקראת התמרת הפורייה הדיסקרטית המניבה ווקטור תוצאה d‾\underline{d}d​ בעל אותו אורך nnn.

מסקנה

פעולת ה-DFTDFTDFT נתונה ע"ע d‾=Wc‾\underline{d}=W\underline{c}d​=Wc​ או בצורה מפורשת יותר:

{dℓ=1n∑k=0n−1ckwn−ℓk}ℓ=0n−1\left\{ d_{\ell}=\frac{1}{\sqrt{ n }}\sum_{k=0}^{n-1}c_{k}w_{n}^{-\ell k} \right\}_{\ell=0}^{n-1}{dℓ​=n​1​k=0∑n−1​ck​wn−ℓk​}ℓ=0n−1​

משמעות הדבר היא שחישוב ע"ע של מטריצה סיבובית CCC (עד כדי קבוע) אינו אלא חישוב התמרת הפורייה הדיסקרטית על איברי שורתה הראשונה.

להתמרת הפורייה הדיסקרטית מגוון תכונות מעניינות. אנחנו נראה שתיים מתוכן שיותר רלוונטיות לנו.

משפט (תכונה I\mathrm{I}I)

בהינתן שני וקטורים a‾,b‾∈Fn\underline{a},\underline{b} \in \mathbb{F}^na​,b​∈Fn מתקיים כי:

DFT{a‾}⋅DFT{b‾}=DFT{a‾⊗cb‾}\text{DFT}\left\{ \underline{a} \right\}\cdot \text{DFT}\left\{ \underline{b} \right\}=\text{DFT}\left\{ \underline{a}\underset{c}{\otimes} \underline{b} \right\}DFT{a​}⋅DFT{b​}=DFT{a​c⊗​b​}

מסקנה

a‾⊗cb‾=DFT−1{DFT{a‾}⋅DFT{b‾}}\underline{a} \underset{c}{\otimes}\underline{b}=\text{DFT}^{-1}\left\{ \text{DFT}\left\{ \underline{a} \right\}\cdot\text{DFT}\left\{ \underline{b} \right\} \right\}a​c⊗​b​=DFT−1{DFT{a​}⋅DFT{b​}}

מה שראינו כעת הוא תחליף לחישוב קונבולוציה סיבובית בין שני וקטורים אלה. בעצם, ניתן לבצע שתי התמרות פורייה דיסקרטיות, אחת לכל וקטור, להכפיל את התוצאות איבר איבר ואז לבצע התמרת פורייה דיסקרטית הפוכה וכך לקבל את תוצאת הקונבולוציה הסיבובית.

הוכחה של המשפט:
קונבולוציה סיבובית בין a‾\underline{a}a​ ל-b‾\underline{b}b​ ניתנת גם לכתיבה בעזרת בניית המטריצה הסיבובית BBB מהוקטור b‾\underline{b}b​ והכפלתה ב-a‾\underline{a}a​:

a‾⊗cb‾=Bta‾\underline{a} \underset{c}{\otimes}\underline{b}=B^t\underline{a}a​c⊗​b​=Bta​

נבצע את התמרת פורייה הדיסקרטית על שני החלקים של המשוואה:

DFT{a‾⊗cb‾}=WBta‾=WBtWHW⏟Ia‾=WBtWH⋅DFT{a‾}\text{DFT}\left\{ \underline{a}\underset{c}{\otimes}\underline{b} \right\}=WB^t \underline{a}=WB^t \underbrace{W^HW}_{I}\underline{a}=WB^tW^H\cdot \text{DFT}\left\{ \underline{a} \right\}DFT{a​c⊗​b​}=WBta​=WBtIWHW​​a​=WBtWH⋅DFT{a​}

שכן Wa‾=DFT{a‾}W\underline{a}=\text{DFT}\left\{ \underline{a} \right\}Wa​=DFT{a​}.

(WBtWH)t=(WH)tBWt=↓W=Wt(WH)t=WHWHBW(WB^tW^H)^t=(W^H)^tBW^t \underset{\begin{matrix} \downarrow \\ W=W^t \\ (W^H)^t=W^H \end{matrix}}{=}W^HBW(WBtWH)t=(WH)tBWt↓W=Wt(WH)t=WH​=​WHBW

מכיוון שהביטוי שהתקבל שווה לפעולת הכלסון שהינה מטריצה אלכסונית, מתקיים השוויון WBtWH=WHBWWB^tW^H=W^HBWWBtWH=WHBW ולכן:

DFT{a‾⊗cb‾}=diag(DFT{b‾})⋅DFT{a‾}\text{DFT}\left\{ \underline{a}\underset{c}{\otimes}\underline{b} \right\}=diag( \text{DFT}\left\{ \underline{b} \right\})\cdot\text{DFT}\left\{ \underline{a} \right\}DFT{a​c⊗​b​}=diag(DFT{b​})⋅DFT{a​}

∎

נשים לב כי כעת, ביצוע של התמרת פורייה דיסקרטית דורשת Θ(n2)\Theta(n^2)Θ(n2) פעולות. זה לא טוב ולכן נרצה לייעל זאת. פה מגיע המשפט הבא:

טענה

ניתן להכפיל במטריצה WWW ביעילות Θ(nlog⁡n)\Theta (n\log n)Θ(nlogn) ע"י אלגוריתם בשם התמרת פורייה מהירה(FFTFFTFFT).

הוכחה:
נניח כי nnn הוא חזקה של 222 ונפצל את הסכימה בהגדרת התמרת הפורייה הדיסקרטית לזוגיים ואי זוגיים.

dℓ=∑k=0n−1ckwn−ℓk=(∑k=0,2,4,…n−1ckwn−ℓk+∑k=1,3,5,…n−1ckwn−ℓk) ⁣ ⁣ ⁣ ⁣ ⁣=↑j=k2∨j=k−12 ⁣ ⁣ ⁣ ⁣ ⁣(∑j=0n2−1c2jwn−jℓ+∑j=0n2−1c2j+1wn−(2j+1)ell)d_{\ell}=\sum_{k=0}^{n-1} c_{k}w_{n}^{-\ell k}=\left( \sum_{k=0,2,4,\dots}^{n-1} c_{k}w_{n}^{-\ell k}+\sum_{k=1,3,5,\dots}^{n-1}c_{k}w_{n}^{-\ell k} \right) \!\!\!\!\!\underset{\begin{matrix} \uparrow \\ j=\frac{k}{2} \lor j=\frac{k-1}{2} \end{matrix}}{=}\!\!\!\!\!\left( \sum_{j=0}^{\frac{n}{2}-1}c_{2j}w_{n}^{-j\ell}+\sum_{j=0}^{\frac{n}{2}-1}c_{2j+1}w_{n}^{-(2j+1)e^{ ll }} \right)dℓ​=k=0∑n−1​ck​wn−ℓk​=​k=0,2,4,…∑n−1​ck​wn−ℓk​+k=1,3,5,…∑n−1​ck​wn−ℓk​​↑j=2k​∨j=2k−1​​=​​j=0∑2n​−1​c2j​wn−jℓ​+j=0∑2n​−1​c2j+1​wn−(2j+1)ell​​

נשים לב כי מתקיים:

wn−2jℓ=exp⁡{−2πin⋅2jℓ}=exp⁡{−2πin2⋅jℓ}=wn2−jℓw_{n}^{-2j\ell}=\exp \left\{ -\frac{2\pi i}{n}\cdot2j\ell \right\}=\exp \left\{ -\frac{2\pi i}{\frac{n}{2}}\cdot j\ell \right\}=w_{\frac{n}{2}}^{-j\ell}wn−2jℓ​=exp{−n2πi​⋅2jℓ}=exp{−2n​2πi​⋅jℓ}=w2n​−jℓ​

ולכן:

dℓ=(∑j=0n2−1c2jwn2−jℓ+wn−ℓ∑j=0n2−1c2j+1wn2−jℓ)=(DFT{c‾even}+wn−ℓDFT{c‾odd})d_{\ell}=\left( \sum_{j=0}^{\frac{n}{2}-1} c_{2j}w_{\frac{n}{2}}^{-j\ell}+w_{n}^{-\ell}\sum_{j=0}^{\frac{n}{2}-1} c_{2j+1}w_{\frac{n}{2}}^{-j\ell} \right)={\Large(}\text{DFT}\left\{ \underline{c}_{even} \right\}+w_{n}^{-\ell}\text{DFT}\left\{ \underline{c}_{odd} \right\}{\Large)}dℓ​=​j=0∑2n​−1​c2j​w2n​−jℓ​+wn−ℓ​j=0∑2n​−1​c2j+1​w2n​−jℓ​​=(DFT{c​even​}+wn−ℓ​DFT{c​odd​})

קיבלנו כי את ה-DFTDFTDFT ה-nnn מימדי ניתן לקבל ע"י שתי פעולות DFTDFTDFT במימד n2\frac{n}{2}2n​ ובינהם אוסף של nnn פעולות "מיזוג".
ניתן לנצל קשר זה ולהמשיך רקורסיבית בפיצול כל וקטור לשני חלקים באופן דומה.
∎

הערה

כשנציב n2≤ℓ≤n\frac{n}{2}\leq \ell\leq n2n​≤ℓ≤n בשתי הסכימות הללו, נקבל פשוט מחזוריות. כלומר, איברי הסדרות שיתקבלו ישמשו פעמיים.

בואו נחשב את סיבוכיות האלגוריתם הרקורסיבי T(n)T(n)T(n) של DFTDFTDFT ב-nnn מימדים.

T(n)=2T(n2)+n  ⟹  T(n)=nlog⁡2nT(n)=2T\left( \frac{n}{2} \right)+n \implies T(n)=n\log_{2} nT(n)=2T(2n​)+n⟹T(n)=nlog2​n

אין ספק שזה הרבה יותר טוב מ-n2n^2n2 פעולות :)

הערה

שימושים של התמרת הפורייה רואים בתרגול (לא הסמסטר)