תהליך גרם-שמידט

תהליך גרם-שמידט (Gram–Schmidt process) הוא תהליך המקבל בסיס סדור של מרחב מכפלה פנימית ומחזיר בסיס אורתונורמלי (אפשר לבצע את התהליך באופן חלקי לקבלת בסיס אורתוגונלי).

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

לתהליך שימושים בחקר מרחבי מכפלה פנימית, מטריצות סימטריות ומרחבי הילברט.

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

== האלגוריתם ==
תהליך גרם-שמידט במישור
סרטון המדגים את תהליך גרם-שמידט במרחב

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

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

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

אפשר להפעיל את אותו אלגוריתם גם ללא שלב הנרמול, ולקבל קבוצה אורתוגונלית.

===תיאור פורמלי===
נניח כי קבוצת הווקטורים שעליה אנו רוצים להפעיל את התהליך מסומנת בתור <math>\ \left\{v_1,v_2,\dots\right\}</math>. התוצאה של התהליך תהיה הקבוצה <math>\ \left\{e_1,e_2,\dots\right\}</math> שפורשת אותו מרחב ליניארי כמו הקבוצה המקורית, ומקיימת <math>\ \langle e_i,e_j\rangle=\delta_{ij}</math> (הדלתא של קרונקר).

בהינתן וקטור <math>\ v_i</math> כלשהו ווקטור מנורמל <math>\ e_j</math>, הווקטור <math>\ \langle v_i,e_j\rangle e_j</math> (הווקטור שמתקבל מהכפלת <math>\ e_j</math> בסקלר שהוא המכפלה הפנימית שלו ושל <math>\ v_i</math>) מכונה "ההטלה" של <math>\ v_i</math> על <math>\ e_j</math>. זהו הרכיב של <math>\ v_i</math> בכיוון של <math>\ e_j</math>. על כן ניתן להוכיח על ידי בדיקה מיידית כי הווקטור <math>\ v_i'=v_i- \langle v_i,e_j\rangle e_j</math> הוא וקטור אורתוגונלי ל-<math>\ e_j</math>. כמו כן <math>\ \operatorname{Span}\left\{v_i,e_j\right\}=\operatorname{Span}\left\{v_i',e_j\right\}</math>.

מתוצאה זו ניתן לקבל כי באופן כללי, אם עד כה הפכנו את הווקטורים <math>\ \left\{v_1,\dots,v_n\right\}</math> לקבוצה אורתונורמלית <math>\ \left\{e_1,\dots,e_n\right\}</math> שפורשת אותו מרחב, נקבל את הווקטור הבא לקבוצה האורתונורמלית בצורה הבאה:
*נגדיר <math>\ v_{n+1}'=v_{n+1}-\sum_{k=1}^n\langle v_{n+1},e_k\rangle e_k</math>

בהגדרה זו הורדנו מ-<math>\ v_{n+1}</math> את כל ההטלות שלו עם אברי הבסיס האורתונורמלי שבנינו עד כה ונותרנו עם רכיב אחד שאורתוגנלי לכולם. כעת נותר לנרמל את הווקטור הזה:
*<math>\ e_{n+1}=\frac{v_{n+1}'}{\|v_{n+1}'\|}</math>

וכך קיבלנו את האיבר הבא בסדרה.

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

אם <math>\ \left\{v_1,v_2,\dots\right\}</math> היא קבוצת הווקטורים שעליה הפעלנו את התהליך, ואילו <math>\ \left\{v_1',v_2',\dots v_n'\right\}</math> היא קבוצת הווקטורים האורתוגונליים שהתקבלה עד כה, נגדיר את האיבר הבא על ידי:

<math>\ v_{n+1}'=v_{n+1}-\sum_{k=1}^n\frac{\langle v_{n+1},v_k'\rangle}{\|v_k'\|^2} v_k'</math>

כלומר, ההבדל היחיד הוא שאנו מחלקים את המכפלה הפנימית בנורמה של <math>\ v_k</math> בריבוע. כדי לראות את הסיבה לכך נשים לב כי על פי ההגדרה <math>\ e_k=\frac{v_k'}{\|v_k'\|}</math> ולכן, אם נציב משוואות אלו בנוסחה שהראינו בסעיף הקודם, נקבל:
* <math>\ v_{n+1}'=v_{n+1}-\sum_{k=1}^n\langle v_{n+1},e_k\rangle e_k=v_{n+1}'=v_{n+1}-\sum_{k=1}^n\langle v_{n+1},\frac{v_k'}{\|v_k'\|}\rangle \frac{v_k'}{\|v_k'\|}=v_{n+1}-\sum_{k=1}^n\frac{\langle v_{n+1},v_k'\rangle}{\|v_k'\|^2} v_k'</math>

===קבוצה תלויה ליניארית===
אם קבוצת הווקטורים ההתחלתית <math>\ \left\{v_1,v_2,\dots\right\}</math> תלויה ליניארית אז לעיתים נקבל <math>v_{n+1}'=0</math>. במקרה כזה יש להתעלם מווקטור זה, ולהמשיך באלגוריתם.

==סיבוכיות ויציבות נומרית==

==שימושים==
תהליך גרם-שמידט מוכיח כי לכל מרחב מכפלה פנימית ממד סופי (או בן מנייה) יש בסיס אורתונורמלי. אפשר לנסח תוצאה זו, במונחים של מטריצות באופן הבא: כל מטריצה סימטרית חיובית לחלוטין <math>S</math> חופפת למטריצת היחידה. זהו מקרה פרטי של משפט סילבסטר.
יתר על כן, מהתהליך נובע שניתן לבצע חפיפה זו על ידי מטריצה משולשית. מכן אנו מקבלים את הפירוק הבא: <math>S=B \cdot B^t</math> כאשר <math>B</math> היא מטריצה משולשית. פירוק זה בתורו גרר את הפירוק הבא: כל מטריצה הפיכה ניתן לפרק למכפלה של מטריצה אורתוגונלית ומטריצה משולשית. פירוק זה נקרא פירוק QR, שהוא מקרה פרטי של פירוק איווסווה<sup></sup>.

בנוסף התהליך מוכיח את קיומו של בסיס אורתונורמלי בכל מרחב הילברט ספרבילי. עובדה זו שקולה לכך שכל מרחב הילברט ספרבילי איזומורפי למרחב הסדרות <math>\ell_2</math>.

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

=== באנליזה פונקציונלית ===
תהליך גרם-שמידט אמנם נראה מובן אינטואיטיבית כאשר עוסקים במרחב הווקטורי <math>\mathbb{R}^n</math> המצויד במכפלה הפנימית האוקלידית הסטנדרטית, אולם הצורך בו מתחוור ביתר בהירות בתחום האנליזה הפונקציונלית, העוסקת במרחבי פונקציות מממד אינסופי, שם מציאת בסיסים אורתוגונליים למרחב פונקציות כבר אינה משימה נגישה וישירה כמו באלגברה ליניארית. המוטיבציה והרקע הרעיוני לתהליך מומחשים באופן מיטבי בתחום זה, כמו גם היתרון שבעבודה עם בסיסים אורתוגונליים (ביחס למכפלה הפנימית המוגדרת); כיוון שההיטל של שני רכיבים אורתוגונליים אחד על השני הוא וקטור האפס, ההיטלים של וקטור כללי על איברי הבסיס האורתוגונלי הם בעצמם בעלי היטל אפס אחד ביחס לשני, מה שמפשט מאוד את החישובים הנלווים ומקל על גיבוש אינטואיציה בנוגע לטיב המרחב הפונקציונלי איתו עובדים.

נביא כאן דוגמה מפורסמת וחשובה ליישום לא טריוויאלי של התהליך – מציאת בסיס אורתונורמלי ל"מרחב הפולינומים" <math>\mathbb{R}[x]</math> בקטע <math>[-1,1]</math> מתוך הבסיס "הסטנדרטי" של מרחב זה, סדרת המונומים <math>\left\{x^n\right\}_{n=0}^{\infty}</math>, כאשר המכפלה הפנימית היא הגרסה הרציפה של המכפלה הפנימית האוקלידית, דהיינו: <math><f,g> = \int_{-1}^1f(x)\cdot g(x)dx</math>.

==== בניית פולינומי לז'נדר ====
נסמן ב- <math>q_k(x), p_k(x)</math> את האיבר ה-k בבסיס האורתוגונלי שיתקבל, לפני הנרמול ולאחר הנרמול בהתאמה. לאחר נרמול האיבר הראשון בבסיס הסטנדרטי, נקבל <math>p_0 = \frac{1}{\sqrt{2}}</math>. כעת נחשב את ההטלה של האיבר השני על האיבר הראשון המנורמל, ונקבל:
:<math>q_1(x) = x-<x,p_0> p_0 = x - (\int_{-1}^{1}x\frac{1}{\sqrt{2}}dx)\frac{1}{\sqrt{2}} = x</math>

ולאחר נרמול נקבל את האיבר השני:
: <math>p_1(x)=\frac{q_1(x)}{|q_1|} = \frac{x}{\sqrt{\int_{-1}^1x^2dx}} = \sqrt{\frac{3}{2}}x</math>
בדומה לכך, נחשב את <math>q_2</math>:
: <math>q_2(x) = x^2 - <x^2,p_0>p_0-<x^2,p_1>p_1 = x^2 - (\int_{-1}^1x^2\frac{1}{\sqrt{2}}dx)\frac{1}{\sqrt{2}} - 0 = x^2-\frac{1}{3} </math>.
כאשר הנחנו ש-<math><x^2,p_1>p_1=0</math> משום שזהו אינטגרל של פונקציה אי-זוגית על פני תחום סימטרי ביחס לראשית. לאחר נרמול נקבל את האיבר השלישי:
: <math>p_2(x)=\frac{q_2(x)}{|q_2|} = \frac{x^2-\frac{1}{3}}{\sqrt{\int_{-1}^1(x^2-\frac{1}{3})^2dx}} = \frac{\sqrt{5}}{2\sqrt{2}}(3x^2-1)</math>
ניתן להמשיך את התהליך ולקבל גם:
: <math>p_3(x) = \frac{\sqrt{7}}{2\sqrt{2}}(5x^3-3x)</math>
וכך הלאה. הכפלת כל אחד מהפולינומים הללו בסקלר שונה מאפס אינה משנה את האורתוגונליות, ולכן ניתן להגיע מקבוצה זו אל הקבוצה האורתוגונלית:

: <math>L_0(x) = 1, L_1(x) = x, L_2(x) = \frac{1}{2}(3x^2-1), L_3(x) = \frac{1}{2}(5x^3-3x),...</math>

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

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

==ראו גם==
* מערכת אורתונורמלית שלמה
* משפט סילבסטר
* פירוק איווסווה

==קישורים חיצוניים==
* סרטונים המדגימים את התהליך: [https://web.archive.org/web/20090630004418/http://www.bigsigma.com/demo/gram-schmidt-plane תהליך גרם-שמידט במישור], [https://web.archive.org/web/20090701003007/http://www.bigsigma.com/demo/gram-schmidt-space תהליך גרם-שמידט במרחב]
* 

==הערות שוליים==

קטגוריה:אלגברה ליניארית
גרם-שמידט
קטגוריה:אנך