המשפט היסודי של האלגברה - הוכחה אלגברית
אחד מהזכרונות המתמטיים המוקדמים שלי הוא של קריאה אקראית בספר האלגברה של בני גורן, והיתקלות עם מה שנקרא “המשפט היסודי של האלגברה” - הטענה שלכל משוואה ממעלה \( n \) יש \( n \) פתרונות מרוכבים. המשפט הזה נראה לי כל כך יומרני, שהייתי חייב לקרוא תכף ומייד את ההוכחה שלו - אלא שכזו לא הייתה בכלל בספר, למרות שחיפשתי בו שוב ושוב. קשה לי לתאר את גודל תחושת האכזבה שלי למראה טענה שאפילו לא ניסו להוכיח. כמובן שהיא התגמדה בהמשך, כאשר בספר החדו”א שלו בני גורן הזהיר מראש שהוא אפילו לא ינסה להגדיר את מושג ה”גבול”, אבל זה סיפור אחר.
קשה להאשים את בני גורן - למשפט היסודי של האלגברה אין הוכחה שניתן להראות לתלמידי תיכון. את ההוכחה ה”סטנדרטית” שלו בימינו רואים סטודנטים למתמטיקה רק כאשר הם לומדים את תורת הפונקציות המרוכבות; המשפט הוא תוצאה מיידית (שתיים-שלוש שורות) של משפט ליוביל, שהוא בתורו תוצאה מיידית יחסית של משפט קושי - ומשפט קושי הוא ללא ספק המשפט המרכזי בקורס המבוא לאנליזה מרוכבת; זהו משפט עמוק וחזק, ולרוב לא מוכיחים אותו באופן הכללי ביותר אלא מסתפקים בהוכחה למקרים פרטיים והסבר כללי לגבי הדרך שבה מכלילים אותו. חמור מכך - ההוכחה היא אנליטית לגמרי, כלומר מתבססת באופן חזק מאוד על מושג הגבול ושאר הרעיונות של החדו”א, כשמפעילים אותה על המספרים המרוכבים (בפרט, משפט קושי עוסק באינטגרלים). זה נראה קצת מטופש כשמדובר על משפט אלגברי, כלומר כזה שכלל לא עוסק בגבולות ואינטגרלים; ואכן, כבר יצא לי לשמוע את הטענה ש”המשפט היסודי של האלגברה הוא משפט באנליזה”.
אלא שיש למשפט גם הוכחות “אלגבריות” טהורות כמעט לגמרי. כמעט - כי אי אפשר לנתק אותו לחלוטין מהאנליזה, ואסביר בהמשך מדוע. ההוכחה שאני רוצה להראות בפוסט הזה מתבססת, בניסוחה המודרני, על תורת גלואה; במקור היא ניתנה בידי לפלס בשנת 1795, עוד לפני שגאוס הוכיח בשיטות שלו את המשפט היסודי (זה היה ב-1816, אחרי שב-1798 גאוס סיפק הוכחה שנותרו בה מספר חורים), אלא שאצל לפלס היו מספר הנחות שאז טרם היו מקובלות - בפרט, באשר לקיום שדה הפיצול של פולינומים (כלומר, שבהינתן פולינום, השורשים שלו בהכרח קיימים בשדה כלשהו, והשאלה היא רק איזה).
הבה וננסה לנסח את המשפט בצורה פשוטה מעט יותר. ראשית, אין צורך לדבר על משוואות אלא על פולינומים, ומספיק לדבר על פולינומים מתוקנים, כלומר כאלו שבהם המקדם של החזקה הגבוהה ביותר הוא 1, כלומר משהו מהצורה \( f\left(x\right)=x^{n}+a_{n-1}x^{n-1}+\dots+a_{1}x+a_{0} \) (אם הפולינום לא מתוקן, לכפול אותו בקבוע ש”יתקן” אותו לא משנה את השורשים). אם לפולינום יש שורש, נניח \( \alpha \), אז ניתן לכתוב את הפולינום בתור \( f\left(x\right)=g\left(x\right)\left(x-\alpha\right) \) כאשר \( g\left(x\right) \) הוא ממעלה נמוכה יותר; לכן לטעון ש”לכל פולינום ממעלה 1 ומעלה יש שורש” שקול לטענה “לכל פולינום ממעלה \( n \) יש בדיוק \( n \) שורשים” כי פשוט נוכל לחלק את \( f\left(x\right) \) שוב ושוב בשורשים שנגלה. שימו לב - הכוונה איננה ל-\( n \) שורשים שהם בהכרח שונים זה מזה; למשל, לפולינום \( x^{2}-4x+4 \) יש בדיוק שורש יחיד: \( x=2 \), שכן \( x^{2}-4x+4=\left(x-2\right)^{2} \). על שורש כזה אומרים שיש לו ריבוי 2; ובאופן כללי, כל פולינום ניתן לכתיבה בצורה \( f\left(x\right)=\left(x-\alpha_{1}\right)^{k_{1}}\cdots\left(x-\alpha_{t}\right)^{k_{t}} \), ועל \( k_{i} \) אומרים שהוא הריבוי של השורש \( \alpha_{i} \). זה סוגר את עניין ה”בדיוק”.
מה שטרם התייחסתי אליו הוא מהם המקדמים של \( f\left(x\right) \) - האם הם ממשיים, או שהם יכולים להיות גם מרוכבים? חלק ניכר מכוחו של המשפט נובע מכך שהמקדמים יכולים להיות מרוכבים - הרי את המרוכבים מכניסים מלכתחילה לתמונה כדי לפתור משוואות שאין להן פתרון במספרים ממשיים; אם כחלק מהתהליך הזה היינו יוצרים משוואות חדשות שלא ניתנות לפתרון במרוכבים, זה היה בבחינת “צעד אחד קדימה, שני צעדים אחורה”. ובכן, אנחנו רוצים להוכיח את המשפט עבור מקדמים מרוכבים, אלא שמסתבר שדי להוכיח עבור מקדמים ממשיים. הבה נניח לשניה של-\( f\left(x\right) \), שהוא פולינום במקדמים מרוכבים, אין פתרון במרוכבים; אז כך גם לפולינום \( \overline{f\left(x\right)} \) שמתקבל מ-\( f\left(x\right) \) על ידי הצמדת כל המקדמים. כזכור (למי שאמור לזכור), הצמדה של מספר מרוכב היא היפוך הסימן של החלק המדומה שלו, כלומר \( \overline{a+bi}=a-bi \); בפרט, מספר מרוכב שווה לצמוד שלו אם ורק אם הוא ממשי טהור (ללא חלק מדומה).
אם גם ל-\( f\left(x\right) \) וגם ל-\( \overline{f\left(x\right)} \) אין שורשים, גם למכפלתם אין; אבל אם נצמיד את \( f\left(x\right)\overline{f\left(x\right)} \) נקבל \( \overline{f\left(x\right)}f\left(x\right) \), וזהו אותו פולינום בדיוק - כלומר, הצמדה לא משנה את מקדמי הפולינום \( \overline{f\left(x\right)}f\left(x\right) \), כלומר הם ממשיים, כלומר מצאנו פולינום ממשי ללא שורש. לכן מספיק להראות שלכל פולינום ממשי יש שורש כדי שינבע מכך שלכל פולינום, גם מרוכב, יש שורש. סיימנו את הפישוטים ואפשר לגשת לעבודה.
כעת נכנסת האנליזה למשחק - הטענה הראשונה שלי היא שלכל פולינום ממעלה אי זוגית קיים שורש ממשי אחד לפחות. הדבר נובע ממשפט אלמנטרי באנליזה - משפט ערך הביניים: אם \( f\left(x\right) \) היא פונקציה רציפה, ו-\( \left[a,b\right] \) הוא קטע כלשהו, אז \( f \) מקבלת כל ערך בין \( f\left(a\right) \) ו-\( f\left(b\right) \). במילים - אם אנחנו מציירים פונקציה בלי להרים את העפרון מהדף, אז העפרון חייב לגעת בכל קו מאוזן שבין הגובה שממנו הוא מתחיל, לגובה שבו הוא מסיים. אין “קפיצות”.
היישום של המשפט כאן הוא פשוט למדי. כל פולינום הוא פונקציה רציפה. בגלל שהמקדם המוביל בפולינום הוא חיובי, אז ככל שמציבים בפולינום ערכים גדולים יותר ויותר, מקבלים בחזרה ערכים גדולים יותר ויותר - בפרט יש \( b \) שהחל ממנו והלאה הפולינום מחזיר ערך חיובי, ולא משנה כמה קטנים שאר המקדמים. אפילו \( x^{2}-10^{100^{100}}x \) יהפוך לחיובי עבור ערך גדול דיו של \( x \). להראות את זה - שוב, זו קצת אנליזה.
בכיוון השני, ככל שנציב בפולינום ערכים קטנים יותר ויותר - כלומר, מספרים שליליים שערכם המוחלט הולך וגדל, נקבל בחזרה ערכים קטנים יותר ויותר. הסיבה לכך היא שהפולינום הוא ממעלה אי זוגית, ושהעלאה בחזקה אי זוגית של מספר שלילי מחזירה מספר שלילי. מכאן עולה שיש נקודה \( a<b \) שהחל ממנה הפולינום מקבל ערכים שליליים.
אם כן, \( f\left(a\right)<0<f\left(b\right) \) - מקרה קלאסי של משפט ערך הביניים. המסקנה? יש נקודת ביניים \( a<c<b \) שבה \( f\left(c\right)=0 \), וזהו בדיוק שורש של הפולינום, וסיימנו במקרה זה.
אם כן, למה אנליזה היא כנראה הכרחית כאן? בנפנוף ידיים כלשהו - מכיוון שהמספרים הממשיים הם יצורים אנליטיים מעצם הגדרתם. הבה וניזכר בבניית המספרים - השלמים והרציונליים נבנו מהטבעיים באופן “אלגברי”, על ידי בנייה פשוטה וסופית (בכל פעם כל איבר חדש הורכב מזוג איברים “ישנים”, זיהוי מסויים של חלק מהאיברים החדשים כשקולים, והגדרה מחוכמת של פעולות החשבון על הזוגות). אלא שברציונליים המשפט שציטטתי למעלה על הפולינום אינו נכון - למשל, ל-\( f\left(x\right)=x^{3}-2 \) אין שורש רציונלי. אפשר להמשיך מכאן בשתי דרכים שונות - האחת היא לבנות באופן אלגברי שדה שמכיל את הרציונליים ובו לכל פולינום רציונלי יהיה שורש - בניה כזו אפשרית, אך היא מסובכת למדי וראויה לפוסט נפרד; התוצאה היא תת שדה של המספרים המרוכבים - “שדה המספרים האלגבריים” - שאינו מכיל יצורים כמו \( \pi \) או \( e \) - והשניה היא לזרום עם הבניה הקיימת של הממשיים שממילא פותרת את הבעיה. אם הולכים בגישה השניה, ואחר כך מגדירים את המרוכבים באמצעות הממשיים, אני לא רואה מנוס מהוכחת המשפט על הפולינום ממעלה אי זוגית באופן שיתייחס ישירות למהות של המספרים הממשיים; אלא שהם יצורים אנליטיים לחלוטין (המחשה טובה לכך היא ההגדרה שלהם באמצעות סדרות קושי - “סדרות מתכנסות”, שמתארות תהליך גבולי והתיאור שלהן הוא אינסופי) ולכן הוכחה אנליטית היא ככל הנראה בלתי נמנעת.
אוקיי, אז נפנוף הידיים הזה מאחורינו ואנחנו מצויידים בכל הכלים שאנחנו רוצים - נותר כעת להוכיח את המשפט היסודי באופן כללי, ובלי להשתמש עוד בטענות מאנליזה. ההוכחה תהיה, איך לא, באינדוקציה. אנחנו כבר יודעים לטפל בפולינום ממעלה אי זוגית; אם יש לנו פולינום שהמעלה שלו היא \( n \) נוכל לכתוב אותה גם כ-\( n=2^{k}\cdot m \) כאשר \( m \) הוא אי זוגי (כלומר, \( k \) אומר לנו “עד כמה \( n \) זוגי”) והאינדוקציה תהיה על \( k \), כאשר הבסיס - \( k=0 \) - כבר טופל.
אוקיי, אז נניח כי \( k\ge1 \), ונתבונן ב-\( f\left(x\right) \) - הפולינום ממעלה \( n \) מעל \( \mathbb{R} \) שעליו אנו מדברים. אנחנו מתבססים על תוצאה בסיסית בתורת השדות - שקיים שדה הרחבה כלשהו של \( \mathbb{R} \) שמכיל את כל שורשיו של \( f\left(x\right) \). זו תוצאה שטרם הראיתי ואציג אותה בעתיד; היא אינה מסובכת במיוחד אך כן דורשת כמה וכמה הסברים מוקדמים. נסמן את השורשים הללו ב-\( \alpha_{1},\dots,\alpha_{n} \) (לא כולם בהכרח שונים זה מזה) ונתבונן בהרחבה של \( \mathbb{R} \) שמתקבלת מהוספת כל השורשים הללו ובנוסף לכך גם \( i \), כלומר ב-\( \mathbb{K=R}\left(\alpha_{1},\dots,\alpha_{n},i\right) \). זוהי הרחבת גלואה; הסיבה לכך היא שהרחבה על ידי הוספת כל שורשיו של פולינום אי פריק (מעל שדה ממציין אפס, דוגמת \( \mathbb{R} \)) היא הרחבת גלואה, ושבהינתן מספר הרחבות גלואה של אותו שדה אז ההרחבה הקטנה ביותר שמכילה את כולן היא עצמה גלואה (הרחבה שכזו נקראת “קומפוזיטום” - איני מכיר תרגום טוב לעברית). אם כן, \( K \) הוא שדה הרחבה של \( \mathbb{R} \) שמכיל את \( \mathbb{C} \) (כי הוא מכיל את \( \mathbb{R} \) שמורחב באמצעות \( i \), וזהו בדיוק \( \mathbb{C} \)) וגם את שורשי \( f\left(x\right) \).
עכשיו מגיעה חציית הנהר. בכל הוכחה יש את השלב הזה, שעד אליו הכל ברור, והחל ממנו הכל ברור (נניח), אבל הוא עצמו לחלוטין לא ברור ואף אחד לא מבין מאיפה הוא בא - זה שלב חציית הנהר. אני יכול רק לנחש שלפלס שבר עליו את הראש וניסה הרבה דברים לפני שהוא עבד. הרעיון הבסיסי הוא שהשאיפה שלנו היא למצוא זוג שורשים \( \alpha_{i},\alpha_{j} \) שגם סכומם וגם מכפלתם הם מרוכבים; בקרוב נראה מדוע זה מסיים את העניין. המטרה הזו היא מה שצריך להחזיק בראש כשחושבים על הבניה של לפלס.
ובכן, לכל מספר ממשי \( t\in\mathbb{R} \) אנחנו מגדירים פולינום \( L_{t} \) באופן הבא: \( L_{t}=\prod_{1\le i<j\le n}\left[x-\left(\alpha_{i}+\alpha_{j}+t\alpha_{i}\alpha_{j}\right)\right] \). במילים - זהו פולינום ששורשיו הם בדיוק האיברים מהצורה \( \alpha_{i}+\alpha_{j}+t\alpha_{i}\alpha_{j} \) לכל זוג אפשרי \( \alpha_{i},\alpha_{j} \) של שורשים של \( f\left(x\right) \). הפאנץ’ הוא שלמרות שהפולינום הזה מכיל שורשים שהם יצורים די מפחידים, המקדמים שלו הם ממשיים. איך אפשר לראות את זה? באמצעות תורת גלואה - אם ניקח אוטומורפיזם כלשהו של \( K/\mathbb{R} \), תורת גלואה אומרת לנו שהאוטומורפיזם הזה מבצע בסך הכל פרמוטציה על השורשים של \( f\left(x\right) \) (יותר מכך - לכל גורם אי פריק של \( f\left(x\right) \) הוא מבצע פרמוטציה על השורשים של אותו גורם - אבל זה לא חשוב) כלומר, אנחנו בסך הכל “מערבבים” את השורשים \( \alpha_{i},\alpha_{j} \). אלא ש-\( L_{t} \) הוא פולינום סימטרי ביחס לשורשים הללו ולכן פרמוטציה שלהם לא משנה כלום, ולכן כל אוטומורפיזם של השדה משמר את הפולינום כמות שהוא.
מבלבל? בוודאי. הנה דוגמה פשוטה לפולינום סימטרי אחר. נניח שיש לנו שלושה שורשים, \( a,b,c \), ואנחנו מסתכלים על הפולינום \( \left(x-ab\right)\left(x-ac\right)\left(x-bc\right) \). עכשיו ניקח פרמוטציה על השורשים, נניח \( a\to b \), \( b\to c \), ו-\( c\to a \). מה נקבל? את הפולינום \( \left(x-bc\right)\left(x-ba\right)\left(x-ca\right) \). אמנם, הכתיב של הפולינום הזה שונה, אבל עם קצת משחק בחוק החילוף נקבל את הפולינום המקורי שלנו. זה אותו הרעיון גם כאן.
ובכן, כל אוטומורפיזם של \( K/\mathbb{R} \) משמר את \( L_{t} \), כלומר לא משנה את המקדמים שלו. מה המסקנה? מכיוון ש-\( K/\mathbb{R} \) היא הרחבת גלואה, אז כל איבר שכל האוטומורפיזמים של \( K/\mathbb{R} \) משמרים אותו שייך בהכרח ל-\( \mathbb{R} \). זו נקודה חשובה - אם ההרחבה לא הייתה גלואה, היא לא הייתה נכונה; איבר שהיה משתמר על ידי כל האוטומורפיזמים היה עשוי להיות שייך לשדה גדול יותר מאשר \( \mathbb{R} \), ואז לא היה יוצא לנו כלום מכל העסק. מכיוון שההרחבה כן הייתה גלואה, המסקנה היא שכל המקדמים של \( L_{t} \) שייכים ל-\( \mathbb{R} \). לכן אם \( L_{t} \) ממעלה כזו שמאפשרת לנו להפעיל עליו את הנחת האינדוקציה שלנו, נקבל שיש לו שורש מרוכב.
כמובן שכל ההוכחה הזו מהונדסת באופן זהיר כדי שהמעלה של \( L_{t} \) תקיים את התכונה הזו. מהי? ובכן, \( L_{t} \) מורכב ממכפלה של גורמים ממעלה ראשונה, כך שמעלתו שווה לכמות האיברים במכפלה, שהיא בדיוק מספר האפשרויות לבחור שני מספרים מתוך \( n \): \( {n \choose 2}=\frac{n\left(n-1\right)}{2}=\frac{2^{k}m\left(2^{k}m-1\right)}{2}=2^{k-1}\left(m\left(2^{k}m-1\right)\right)=2^{k-1}m^{\prime} \), כאשר \( m^{\prime} \) הוא מספר אי זוגי. שימו לב: אנחנו לא טוענים כאן שהמעלה של \( L_{t} \) היא נמוכה יותר מ-\( n \), אלא שהיא “פחות זוגית מ-\( n \)”. לכן ניתן להפעיל עליה את הנחת האינדוקציה, ולקבל של-\( L_{t} \) יש שורש מרוכב.
טוב, אז סיכום ביניים: לכל \( t\in\mathbb{R} \) קיימים \( 1\le i<j\le n \) שעבורם \( \alpha_{i}+\alpha_{j}+t\alpha_{i}\alpha_{j}\in\mathbb{C} \). מכיוון שיש מספר סופי של זוגות \( i,j \) שכאלו אבל מספר אינסופי של \( t\in\mathbb{R} \) שניתן לבחור, קיימים \( i,j \) כך שגם \( \alpha_{i}+\alpha_{j}+t\alpha_{i}\alpha_{j}\in\mathbb{C} \) וגם \( \alpha_{i}+\alpha_{j}+s\alpha_{i}\alpha_{j}\in\mathbb{C} \), עבור \( t,s\in\mathbb{R} \).
מכאן זה כבר חישוב פשוט כדי לראות כי \( \alpha_{i}+\alpha_{j}\in\mathbb{C} \) וגם \( \alpha_{i}\alpha_{j}\in\mathbb{C} \); אם נחסר את שני האיברים שלמעלה נראה כי \( \left(t-s\right)\alpha_{i}\alpha_{j}\in\mathbb{C} \) ולכן ברור כי \( \alpha_{i}\alpha_{j}\in\mathbb{C} \), ולכן אם נחסר את \( t\alpha_{i}\alpha_{j} \) מ-\( \alpha_{i}+\alpha_{j}+t\alpha_{i}\alpha_{j} \) נקבל גם ש-\( \alpha_{i}+\alpha_{j}\in\mathbb{C} \). זה מוביל אותנו לשלב האחרון של ההוכחה, שמחזיר אותנו לבית הספר התיכון - נוסחאות וייטה.
נוסחאות וייטה (למשוואה ממעלה שנייה) אומרות שאם \( \alpha_{i},\alpha_{j} \) הם השורשים של פולינום מתוקן, אז המקדמים שלו הם בדיוק \( \alpha_{i}\alpha_{j} \) ו-\( -\left(\alpha_{i}+\alpha_{j}\right) \). בדיקה שלהן היא פשוטה: פשוט פותחים את הסוגריים של \( \left(x-\alpha_{i}\right)\left(x-\alpha_{j}\right) \) ומקבלים \( x^{2}-\left(\alpha_{i}+\alpha_{j}\right)x+\alpha_{i}\alpha_{j} \). מסקנה? \( \alpha_{i},\alpha_{j} \) הם השורשים של פולינום ממעלה שניה במקדמים מרוכבים. אבל עבור פולינום ממעלה שניה אפשר להוכיח באופן ישיר ששורשיו הם מרוכבים, פשוט באמצעות נוסחת השורשים: אם \( x^{2}+bx+c \) הוא פולינום ממעלה שניה במקדמים \( b,c\in\mathbb{C} \) אז \( \alpha_{1,2}=\frac{-b\pm\sqrt{b^{2}-4c}}{2} \) הם השורשים שלו, אבל אלו בבירור מספרים מרוכבים כי הם התוצאה של פעולות כפל, חיבור, חילוק, חיסור והוצאת שורש ריבועי על מרוכבים. הדבר היחיד שאולי אינו ברור הוא שהוצאת שורש ריבועי של מספר מרוכב מחזירה מספר מרוכב, אבל זה נובע באופן די מיידי מהתכונות הבסיסיות של מספרים מרוכבים (שורש של המספר המרוכב \( re^{i\theta} \) הוא \( \sqrt{r}e^{i\frac{\theta}{2}} \), שגם הוא מספר מרוכב).
זהו סוף ההוכחה, כי קיבלנו ש-\( \alpha_{i},\alpha_{j} \) - שורשיו של \( f\left(x\right) \), כזכור - הם מרוכבים. ייתכן ששניהם הם אותו איבר, ולכן המסקנה הסופית היא שיש ל-\( f\left(x\right) \) לפחות שורש מרוכב אחד, וזה בדיוק מה שרצינו.
ההוכחה הזו אינה משתמשת בכל כוחה של תורת גלואה, כמובן, אבל כן מדגימה יפה איך כבר האבחנות המיידיות שלה מספקות לנו כוח רב ומאפשרות לנו לטעון טענות חזקות באופן כמעט מיידי. בשל כך יש לה בהחלט זכות קיום עצמאית גם בעולם שבו ההוכחה הסטנדרטית משתמשת במשפט ליוביל.
הערה קטנה לסיום - מה שהמשפט באמת מראה הוא ש-\( \mathbb{C} \) הוא מה שנקרא “שדה סגור אלגברית” - שדה שמכיל את כל השורשים של כל פולינום עם מקדמים מתוך אותו שדה. במילים עוד יותר פשוטות, פירוש הדבר הוא שלא ניתן להרחיב את \( \mathbb{C} \) באופן אלגברי - הוא סוף המשחק מהבחינה הזו. הדרך היחידה להרחיב את \( \mathbb{C} \) היא על ידי הוספת איבר שאיננו שורש של אף פולינום מעל \( \mathbb{C} \), וזה כבר סיפור אחר לגמרי.
נהניתם? התעניינתם? אם תרצו, אתם מוזמנים לתת טיפ: