אז מדוע משוואות פולינומיות כלליות ממעלה 5 ומעלה אינן ניתנות לפתרון באמצעות רדיקלים?

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

  • אם \( p\left(x\right)\in F\left[x\right] \) הוא פולינום כלשהו ו-\( E \) הוא שדה הפיצול שלו, אז \( p\left(x\right) \) פתיר באמצעות רדיקלים אם ורק אם \( \text{Gal}\left(E/F\right) \) היא חבורה פתירה.
  • החבורה הסימטרית \( S_{n} \) היא פתירה עבור \( n\le4 \) ולא פתירה עבור \( n\ge5 \).

מה שנשאר לנו להוכיח הפעם הוא את הקשר בין שני אלו: אני אוכיח שחבורת הגלואה של פולינום “כללי” ממעלה \( n \) מעל שדה ממציין 0 היא \( S_{n} \), מה שיסיים את המשפט. האתגר שלי מחולק, אם כן, לשני חלקים: יש את האתגר של ההוכחה שחבורת הגלואה היא \( S_{n} \), אבל קודם לו אתגר משמעותי הרבה יותר - האתגר של ההגדרה של מה זה פולינום כללי בכלל.

בואו נתחיל עם שתי הדוגמאות הבסיסיות שלנו שהן כבר מזמן אבטיפוס להכל. ראשית, הפולינום \( p\left(x\right)=\left(x^{2}-2\right)\left(x^{2}-3\right) \) ששדה הפיצול שלו הוא \( \mathbb{Q}\left(\sqrt{2},\sqrt{3}\right) \). כבר ראינו שחבורת הגלואה של \( \mathbb{Q}\left(\sqrt{2},\sqrt{3}\right)/\mathbb{Q} \) היא \( \mathbb{Z}_{2}\times\mathbb{Z}_{2} \) - ממש לא החבורה \( S_{4} \) שהיא הרבה יותר גדולה ולא אבלית. מה “השתבש” כאן? ובכן, אם ניקח אוטומורפיזם ב-\( \text{Gal}\left(\mathbb{Q}\left(\sqrt{2},\sqrt{3}\right)/\mathbb{Q}\right) \) נראה שהוא די מוגבל: מותר לו להעביר את \( \sqrt{2} \) אל \( -\sqrt{2} \) או אל עצמו, אבל אסור לו להעביר את \( \sqrt{2} \) אל \( \sqrt{3} \). רגע, “אסור”? למה אסור? ובכן, אינטואיטיבית, כי אם \( a=\sqrt{2} \) אז מתקיים \( a^{2}-2=0 \), ולכן אם נפעיל על המשוואה הזו אוטומורפיזם \( \sigma \) נקבל ש-\( \sigma\left(a\right)^{2}-2=0 \). במילים אחרות, \( \sigma \) מעביר את \( \sqrt{2} \) אל שורש כלשהו של הפולינום \( x^{2}-2 \) ובוודאי ש-\( \sqrt{3} \) אינו שורש שכזה.

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

הדוגמא האבטיפוסית השניה היא הפולינום \( p\left(x\right)=x^{3}-2 \) מעל \( \mathbb{Q} \). שדה הפיצול של הפולינום הזה הוא \( \mathbb{Q}\left(\omega,\sqrt[3]{2}\right) \) כאשר \( \omega \) הוא שורש יחידה פרימיטיבי מסדר 3, כלומר מקיים \( \omega^{3}=1 \) ו-\( \omega,\omega^{2}\ne1 \). במקרה הזה, \( x^{3}-2 \) הוא פולינום אי-פריק (להבדיל מ-\( \left(x^{2}-2\right)\left(x^{2}-3\right) \)) ולכן שלושת השורשים שלו הם “שקולים אלגברית” מעל \( \mathbb{Q} \) - אין לנו דרך להבדיל ביניהם תוך שימוש בפעולות השדה ובאיברים של \( \mathbb{Q} \) בלבד, כמו שעשינו קודם עם המשוואה \( a^{2}-2=0 \). כמובן, ממעוף הציפור אפשר לטעון ש”ברור” ש-\( \sqrt[3]{2} \) ו-\( \omega\sqrt[3]{2} \) הם שני יצורים שונים כי האחד הוא מספר ממשי והשני הוא מספר מרוכב שאיננו ממשי - אבל זה לא משהו שאפשר לראות מגובה פני הקרקע של \( \mathbb{Q} \).

כל אוטומורפיזם של \( \text{Gal}\left(\mathbb{Q}\left(\omega,\sqrt[3]{2}\right)/\mathbb{Q}\right) \) בעצם יכול לבחור שני דברים: לאיזה שורש של \( x^{3}-2 \) הוא רוצה להעביר את \( \sqrt[3]{2} \), ולאיזה שורש של \( x^{3}-1 \) הוא רוצה להעביר את \( \omega \). הבחירות הללו לאו דווקא הולכות לתת לנו אוטומורפיזמים שונים בכל המקרים, אבל הם כן יתנו לנו אוטומורפיזם אחד לכל פרמוטציה אפשרית של השורשים, ולכן נקבל שחבורת גלואה במקרה הזה היא \( S_{3} \) (עדיין פתירה, כמובן). אם כן, הפולינום \( x^{3}-2 \) הוא מעין אבטיפוס של “פולינום כללי” - כזה שבו אין קשר אלגברי בין השורשים שאפשר לראות מתוך השדה שבו אנחנו נמצאים כרגע (אבל אם נקפוץ אל שדה ההרחבה \( \mathbb{Q}\left(\omega\right) \) בוודאי שנוכל לראות קשרים כאלו).

אז כדי להגדיר פולינום “כללי” אנחנו צריכים איכשהו איברים שמייצגים את השורשים בצורה שמבטיחה שאין קשרים אלגבריים בין השורשים. האם אנחנו יודעים לעשות את זה? ובכן, זה יהיה השלב הכי קשה לעיכול פה ככל הנראה, אבל בואו נחשוב שניה על מושג שאנחנו כבר מכירים היטב - פולינום. מה זה פולינום ב-\( F\left[x\right] \)? זה יצור מהצורה \( a_{n}x^{n}+a_{n-1}x^{n-1}+\dots+a_{1}x+a_{0} \) כך ש-\( x \) הוא… \( x \) הוא… מה הוא? מה זה \( x \)? מי זה? זה “משתנה”. זה “יצור מוזר בתכלית”. זה “משהו שאפשר להגדיר פורמלית אם ממש נצטרך אבל נו אתם כבר מבינים”. כבר דיברתי על זה כשדיברתי על חוגי פולינומים. מה שחשוב - מהותי - קריטי! ב-\( x \) הוא ש-\( x \) הוא “לא קשור אלגברית” לאיברים של \( F \). כמובן שאפשר להציב במקום \( x \) דברים שכן מקיימים יחסים כלשהם עם אברי \( F \), אבל ל-\( x \) עצמו אין יחסים כאלו.

כמו שבונים פולינום במשתנה אחד אפשר להוסיף עוד משתנים ולבנות פולינומים מרובי משתנים. זה בדיוק מה שאעשה כדי לקבל את הפולינום הכללי ממעלה \( n \) מעל \( F \): אני ארחיב את \( F \) על ידי הוספת \( n \) איברים חדשים \( a_{1},\dots,a_{n} \) שכולם משתנים באותו מובן שבו \( x \) הוא משתנה, ואז אסתכל על הפולינום הבא ב-\( F\left(a_{1},\dots,a_{n}\right)\left[x\right] \):

\( p\left(x\right)=\left(x-a_{1}\right)\left(x-a_{2}\right)\cdots\left(x-a_{n}\right) \)

אם כן, ה”עולם” שבו הפולינום הזה חי הוא לא \( F \) אלא הרחבה כלשהי של \( F \). הוא בוודאי חי בתוך \( F\left(a_{1},\dots,a_{n}\right) \), אבל מה זה השדה הזה? זה שדה שהרחבנו על ידי הוספת איברים לא אלגבריים. בפועל זה אומר שכל איבר בשדה הזה הוא פונקציה רציונלית במשתנים \( a_{1},\dots,a_{n} \), כלומר ביטוי מזעזע שהוא מנה של שני סכומים, כך שכל איבר בסכום הוא מכפלה של חזקות של \( a_{1},\dots,a_{n} \), כל זה כפול קבוע מ-\( F \).

עכשיו, \( a_{1},\dots,a_{n} \) הם בוודאי שורשים של \( p\left(x\right) \) מעל השדה \( F\left(a_{1},\dots,a_{n}\right) \), ומכאן שזה שדה הפיצול של הפולינום הזה - אבל מה זה אומר לנו? ההרחבה \( F\left(a_{1},\dots,a_{n}\right)/F \) היא לא אלגברית; המימד שלה אינסופי; תורת גלואה בכלל לא רלוונטית פה. אז מה כן?

בואו ניזכר לרגע במשוואה הכללית ממעלה 2: \( ax^{2}+bx+c \), שהפתרונות שלה היו \( \frac{-b\pm\sqrt{b^{2}-4ac}}{2a} \). אם אנחנו חיים מעל \( \mathbb{Q} \), אז הפתרונות של המשוואה נמצאים בתוך ההרחבה \( \mathbb{Q}\left(a,b,c\right) \) - כלומר, ההרחבה שמתקבלת מהוספת המקדמים של המשוואה אל \( \mathbb{Q} \). זה מה שאנחנו מצפים לו מפתרון משוואות מעל \( \mathbb{Q} \) - שהפתרון שלנו יערב את פעולות החשבון הרגילות, את פעולות הוצאת השורש, את המספרים הרציונליים ואת המקדמים של המשוואה. במילים אחרות, שדה הבסיסי הנכון שמעליו יש לבחון את הפולינום הכללי ממעלה \( n \) הוא השדה שנוצר על ידי \( F \) והמקדמים של הפולינום הכללי. אם הפולינום הכללי הוא \( p\left(x\right)=x^{n}+s_{n-1}x^{n-1}+\dots+s_{1}x+s_{0} \), אז השדה שמעליו אנחנו עובדים הוא \( F\left(s_{0},s_{1},\dots,s_{n}\right) \). מה שנרצה להוכיח הוא ש-\( \text{Gal}\left(F\left(a_{1},\dots,a_{n}\right)/F\left(s_{0},s_{1},\dots,s_{n-1}\right)\right)=S_{n} \).

עשיתי כאן משהו מוזר - כדי לתאר פולינום כללי הוספתי משתנים \( a_{1},\dots,a_{n} \) שלא קשורים אלגברית זה לזה ולא קשורים לאברי \( F \). אחר כך השגתי עוד דרך לתאר פולינום כללי, עם משתנים \( s_{0},s_{1},\dots,s_{n-1} \) שגם ביניהם אין קשרים אלגבריים. אבל כן יש קשרים אלגבריים בין \( a_{1},\dots,a_{n} \) ובין \( s_{0},s_{1},\dots,s_{n-1} \), והם מתוארים על ידי המשוואה הבאה, של שתי דרכי הייצוג שלנו של הפולינום הכללי:

\( \left(x-a_{1}\right)\left(x-a_{2}\right)\cdots\left(x-a_{n}\right)=x^{n}+s_{n-1}x^{n-1}+\dots+s_{1}x+s_{0} \)

כשפותחים את הסוגריים של אגף שמאל, מקבלים שכל אחד מה-\( s \)-ים באגף ימין הוא סכום של מכפלות של ה-\( a_{1},\dots,a_{n} \)-ים, ולא סתם סכום - סכום סימטרי. בואו נראה דוגמאות. למשל, \( s_{0}=\left(-1\right)^{n}a_{1}a_{2}\cdots a_{n} \) ואילו \( s_{1} \) הוא… אה.. הוא \( \left(-1\right)^{n-1} \) כפול סכום של כל המכפלות מהצורה \( a_{1}a_{2}\cdots a_{n} \) שהורדתי מהן איבר אחד. כלומר הוא \( s_{1}=\left(-1\right)^{n-1}\sum_{i=1}^{n}\frac{a_{1}a_{2}\cdots a_{n}}{a_{i}} \). זה… זה מסורבל נורא! בואו נשנה את שיטת הסימון שלנו!

אני גאה להציג בפניכם את “פולינום כללי עם מקדמים 2 - הנקמה”, שבו אני בוחר את הסימנים כדי למנוע את הקטסטרופה שעברה עלינו, למרות שהם אולי נראים פחות אינטואיטיביים במבט ראשון:

\( p\left(x\right)=x^{n}-s_{1}x^{n-1}+s_{2}x^{n-2}+\dots+\left(-1\right)^{n-1}s_{n-1}x+\left(-1\right)^{n}s_{n} \)

בשיטת הסימון הזו קל יחסית לתאר את ה-\( s \)-ים על פי הסדר שלהם:

\( s_{1}=a_{1}+a_{2}+\dots+a_{n} \)

\( s_{2}=a_{1}a_{2}+a_{1}a_{3}+\dots+a_{n-1}a_{n} \)

וכן הלאה. \( s_{k} \) הוא סכום של כל \( {n \choose k} \) המכפלות \( a_{i_{1}}\cdots a_{i_{k}} \) כך ש-\( 1\le i_{1}<i_{2}<\dots<i_{k}\le n \).

ה-\( s_{k} \)-ים הללו נקראים הפונקציות הסימטריות האלמנטריות באיברים \( a_{1},\dots,a_{n} \). השם “פונקציה סימטרית” מגיע מכך שאם ניקח \( \sigma \) שהיא פרמוטציה על \( a_{1},\dots,a_{n} \) ונרחיב אותה לפונקציה על \( F\left(a_{1},\dots,a_{n}\right) \), אז בבירור \( \sigma\left(s_{k}\right)=s_{k} \) לכל פונקציה סימטרית אלמנטרית (כי \( \sigma \) רק מערבבת את האיברים בסכום שמרכיב את \( s_{k} \); היא לא מעלימה אף אחד ולא מוסיפה משהו חדש). כעת, כל פרמוטציה \( \sigma \) על הקבוצה \( a_{1},\dots,a_{n} \) מגדיר לנו פונקציה כזו על \( F\left(a_{1},\dots,a_{n}\right) \), וקל לבדוק שהפונקציה הזו היא אוטומורפיזם של \( F\left(a_{1},\dots,a_{n}\right) \). זה מראה לנו ש-\( S_{n} \) היא תת-חבורה של \( \text{Aut}\left(F\left(a_{1},\dots,a_{n}\right)\right) \).

הדחף הראשון שלי הוא להגיד שחבורת האוטומורפיזמים של \( F\left(a_{1},\dots,a_{n}\right) \) היא בדיוק \( S_{n} \), אבל זה נובע מהאינטואיציה הקלוקלת שיש לי מעבודה עם הרחבות סופיות של שדות. האמת היא שיש הרבה יותר אוטומורפיזמים. למשל, נניח שיש לנו רק משתנה אחד, \( a \), ואנחנו מסתכלים על \( \mathbb{Q}\left(a\right) \). מה האוטומורפיזמים פה, רק הזהות? ובכן, לא: \( a\mapsto2a \) גם הוא אוטומורפיזם של השדה הזה, למשל (זה אוטומורפיזם שמקיים \( \sigma\left(a^{2}\right)=4a^{2} \) ו-\( \sigma\left(a^{3}\right)=8a^{3} \) וכן הלאה). אז אני אהיה זהיר ואתמקד רק בתת-החבורה \( S_{n} \) הזו של \( \text{Aut}\left(F\left(a_{1},\dots,a_{n}\right)\right) \). כמו כל חבורת אוטומורפיזמים של שדה, גם לה אפשר להתאים את שדה השבת שלה, \( E \). זה נותן לי הרחבת גלואה אוטומטית: \( F\left(a_{1},\dots,a_{n}\right)/E \) היא גלואה, עם חבורת גלואה \( S_{n} \). ראינו את זה בפוסט שבו התחלתי לדבר על חבורות גלואה (ואם תנברו באותו פוסט תגלו שכל הדיון על פונקציות סימטריות כבר סוג של הופיע שם). האיברים של \( E \) הם בדיוק הפונקציות הרציונליות ב-\( F\left(a_{1},\dots,a_{n}\right) \) שלא משתנות גם אחרי פרמוטציה על \( a_{1},\dots,a_{n} \); פונקציות כאלו נקראות פונקציות סימטריות ב-\( a_{1},\dots,a_{n} \).

עכשיו, בואו נסתכל על השדה \( F\left(s_{1},\dots,s_{n}\right) \) שנוצר מ-\( F \) על ידי המקדמים של הפולינום הכללי. כל איבר של \( S_{n} \) משמר את השדה הזה - זו המהות של “פונקציות סימטריות” שהזכרתי קודם. לכן אני יודע ש-\( F\left(s_{1},\dots,s_{n}\right)\subseteq E \). בפרט:

\( \left[F\left(a_{1},\dots,a_{n}\right):F\left(s_{1},\dots,s_{n}\right)\right]=\left[F\left(a_{1},\dots,a_{n}\right):E\right]\left[E:F\left(s_{1},\dots,s_{n}\right)\right]\ge\left|S_{n}\right|=n! \)

אבל מצד שני, אנחנו יודעים ש-\( F\left(a_{1},\dots,a_{n}\right) \) הוא שדה הפיצול של פולינום ממעלה \( n \) מעל \( F\left(s_{1},\dots,s_{n}\right) \), ואנחנו כבר יודעים שהמימד של שדה פיצול כזה הוא לכל היותר \( n! \), כלומר \( \left[F\left(a_{1},\dots,a_{n}\right):F\left(s_{1},\dots,s_{n}\right)\right]\le n! \). אנחנו יודעים את זה כי הוכחתי את זה כשהתחלנו לדבר על שדות פיצול; אז גם הוספתי ““במקרה הכללי” הוא יהיה שווה בדיוק \( n! \); אותו “מקרה כללי” יהיה בעל חשיבות אדירה בהמשך, כשנדבר על תורת גלואה, ואז נראה אותו”. ובכן, כרגע ראינו אותו.

לסיכום, קיבלנו

\( n!\le\left[F\left(a_{1},\dots,a_{n}\right):F\left(s_{1},\dots,s_{n}\right)\right]\le n! \)

מה שאומר \( \left[F\left(a_{1},\dots,a_{n}\right):F\left(s_{1},\dots,s_{n}\right)\right]=n! \), ולכן \( E=F\left(s_{1},\dots,s_{n}\right) \) (אם תשאלו אותי, יש משהו מרהיב בכך שאנחנו מגלים המון דברים מעניינים בזכות כל המשחקים החשבוניים הללו עם ממדים).

המשמעות של \( E=F\left(s_{1},\dots,s_{n}\right) \) היא כפולה. ראשית, אנחנו רואים ש-\( \left[F\left(a_{1},\dots,a_{n}\right):F\left(s_{1},\dots,s_{n}\right)\right] \) היא הרחבת גלואה עם חבורת גלואה \( S_{n} \), בדיוק כפי שרצינו; ושנית, הוכחנו על הדרך משפט מאוד מעניין - שכל פונקציה סימטרית ב-\( a_{1},\dots,a_{n} \) היא פונקציה רציונלית של הפונקציות הסימטריות האלמנטריות (ומכאן שמן).

האם סיימנו? ובכן… אולי. אם אתם מקבלים את הגישה לפיה פולינום כללי הוא פולינום מהצורה \( \left(x-a_{1}\right)\cdots\left(x-a_{n}\right) \) כאשר ה-\( a_{1},\dots,a_{n} \) הם משתנים, אז סיימנו. אבל אפשר גם להגיד אחרת - להגיד שפולינום כללי הוא פולינום שהמקדמים שלו הם משתנים. כלומר, בסימונים שכבר ראינו שמשתלמים לנו, נגדיר פולינום כללי בתור

\( p\left(x\right)=x^{n}-s_{1}x^{n-1}+s_{2}x^{n-2}+\dots+\left(-1\right)^{n-1}s_{n-1}x+\left(-1\right)^{n}s_{n} \)

כאשר ה-\( s_{1},\dots,s_{n} \) הם משתנים. במקרה הזה אנחנו מתחילים משדה הבסיס \( F\left(s_{1},\dots,s_{n}\right) \) ולוקחים פולינום \( p\left(x\right)\in F\left(s_{1},\dots,s_{n}\right)\left[x\right] \) ושואלים את עצמנו מה הולך בשדה הפיצול של \( p\left(x\right) \). אנחנו כבר יודעים ששדה הפיצול הזה קיים, ומאחר שאנחנו מעל שדה ממציין 0, שדה הפיצול הוא הרחבה ספרבילית, ולכן הוא הרחבת גלואה. נסמן ב-\( a_{1},\dots,a_{n} \) את השורשים של \( p\left(x\right) \), אז אנחנו כבר יודעים את הקשר המשוואתי בינם ובין ה-\( s_{1},\dots,s_{n} \)-ים; הדבר היחיד שאנחנו עוד לא יודעים הוא שהשורשים הללו הם “לא קשורים אלגברית” אחד לשני מעל \( F \). בואו ננסה להשתכנע בכך.

פורמלית, להגיד שהשורשים הם “קשורים אלגברית” זה לומר שקיים פולינום \( q\left(x_{1},\dots,x_{n}\right)\in F\left[x_{1},\dots,x_{n}\right] \) כך ש-\( q\left(a_{1},\dots,a_{n}\right)=0 \). עכשיו אפשר לנקוט בתעלול - לכל \( \sigma\in S_{n} \) נסתכל על הפולינום \( q_{\sigma}\left(x_{1},\dots,x_{n}\right)=q\left(x_{\sigma\left(1\right)},\dots,x_{\sigma\left(n\right)}\right) \) ואז להסתכל על המכפלה \( q^{\prime}=\prod_{\sigma\in S_{n}}q_{\sigma} \). זה נותן לנו פולינום שמצד אחד מתאפס על ידי \( a_{1},\dots,a_{n} \) ומצד שני הוא פונקציה סימטרית על \( n \) משתנים, ולכן, כפי שראינו קודם, הוא פונקציה רציונלית ב-\( s_{1},\dots,s_{n} \). כאן מגיע נפנוף ידיים זריז שלי - זו לא סתם פונקציה רציונלית אלא פולינום; אפשר לייצג כל פולינום שהוא פונקציה סימטרית על ידי פולינום בפונקציות הסימטריות האלמנטריות. מכאן ש-\( q^{\prime} \) מראה לנו ש-\( s_{1},\dots,s_{n} \) הם קשורים אלגברית, בסתירה לכך שהם היו משתנים. המסקנה היא שלא משנה מאיפה נתחיל - מכך שהשורשים של הפולינום הם בלתי תלויים או מכך שהמקדמים של הפולינום הם בלתי תלויים, בסוף נגיע לכך שגם אלו וגם אלו בלתי תלויים, והחבורה של הפולינום הכללי היא \( S_{n} \), ומכאן שהוא לא פתיר על ידי רדיקלים, מה שמסיים את הוכחת התוצאה של גלואה - ליתר דיוק, את החלק מהתוצאה של גלואה שנקרא “משפט אבל-רופיני” (אבל באופן עגום למדי, לא ראינו פה לא את ההוכחה החלקית של רופיני ולא את האופן שבו אבל השלים אותה; כל מה שעשינו היה לראות את השיטה השונה של גלואה).

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


נהניתם? התעניינתם? אם תרצו, אתם מוזמנים לתת טיפ:

Buy Me a Coffee at ko-fi.com