ערכים עצמיים - מי, מה, כמה ולמה

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

נדבר על $latex \mathbb{R}^{2}$. במרחב הזה שיקוף הוא תמיד ביחס לציר שהוא פשוט קו ישר. מכל נקודה במישור ניתן להוריד אנך אל הקו הישר הזה (אנך פירושו שהוא יוצר זווית של 90 מעלות עם הישר) - אורכו של האנך הוא מרחק הנקודה מהישר. כעת ניתן להעביר אנך באותו אורך בדיוק מצדו השני של הישר; שיקוף פירושו להחליף את הנקודות שבקצות שני האנכים הללו (כלומר, כל נקודה מוחלפת בשכנה שלה שנמצאת בהמשך של האנך לישר, מאותו אורך, בצד השני). באופן ציורי, תחשבו על כך שציר השיקוף הוא מראה, ואנחנו משנים את המישור כך שכל נקודה עוברת אל הנקודה המדומיינת שבה היא ראתה את עצמה במראה.

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

נניח אם כן שציר השיקוף הוא הישר שעובר דרך ראשית הצירים והנקודה $latex \left(a,b\right)$. נסמן את הטרנספורמציה של השיקוף ב-$latex T$, וכעת השאלה היא מהו $latex T\left(x,y\right)$. באופן כללי לא ברור בכלל איך לתקוף את השאלה הזו בלי ללכלך את הידיים בהרבה גאומטריה; למרבה המזל, נחלצת לעזרנו העובדה ש-$latex T$ פועלת בצורה פשוטה ביותר על וקטורים ספציפיים. ראשית, הוקטור $latex \left(a,b\right)$ עצמו: הוא נמצא על ציר השיקוף, ולכן לא אמור להשתנות בכלל, כלומר $latex T\left(\left(a,b\right)\right)=\left(a,b\right)$.

שנית, אם נעביר דרך ראשית הצירים ישר שמאונך לציר השיקוף, ואם $latex \left(c,d\right)$ היא נקודה כלשהי על הישר הזה, אז ברור כמעט מייד ש-$latex T\left(\left(c,d\right)\right)=-\left(c,d\right)$ (כי במקרה הזה האנך שמועבר מ-$latex \left(c,d\right)$ אל ציר השיקוף הוא בדיוק הקו הישר שמחבר את $latex \left(c,d\right)$ עם הראשית $latex \left(0,0\right)$). מצאנו אם כן שני וקטורים שעליהם $latex T$ פועלת בצורה פשוטה - את אחד הוקטורים היא פשוט כופלת ב-1, ואת השני היא פשוט כופלת ב-$latex -1$. כדי למצוא $latex \left(c,d\right)$ אפשר, למשל, לסובב את המישור ב-90 מעלות; כבר הזכרתי את הטרנספורמציה הזו פעם ואמרתי שהיא ניתנת לתיאור על ידי כפל במטריצה $latex \left[\begin{array}{cc}0 & 1\\-1 & 0\end{array}\right]$, ולכן $latex \left(c,d\right)=\left(b,-a\right)$.

אם $latex a\ne0$ או $latex b\ne0$, אז שני הוקטורים $latex \left(a,b\right)$ ו-$latex \left(b,-a\right)$ הם בלתי תלויים לינארית מהנימוק הנפלא הבא: הדטרמיננטה של המטריצה $latex \left[\begin{array}{cc}a & b\\b & -a\end{array}\right]$ היא בדיוק $latex -\left(a^{2}+b^{2}\right)$, ומכיוון ש-$latex a^{2}+b^{2}$ שווה לאפס אם ורק אם $latex a=b=0$, נובע שהמטריצה הפיכה, ומטריצה היא הפיכה אם ורק אם השורות שלה הן בלתי תלויות לינארית (אחרת בעזרת פעולות אלמנטריות אפשר היה לאפס את אחת מהשורות). זו המחשה נאה (לטעמי) לאופן שבו טיעונים באלגברה לינארית הופכים לטריוויאליים אחרי שיש היכרות בסיסית כלשהי עם המושגים והכלים.

יפה, אם כן מצאנו בסיס $latex B$ של $latex \mathbb{R}^{2}$ שעליו $latex T$ פועלת באופן פשוט ואנו יודעים איך להציג כל איבר ב-$latex \mathbb{R}^{2}$ עם הבסיס הזה. השלב הבא הוא למצוא ייצוג של $latex T$ על פי הבסיס הזה; זה אומר להפעיל את $latex T$ על אברי הבסיס ולקחת את וקטורי הקואורדינטות של התוצאות וזו מהומה חישובית שלמה באופן כללי, אבל כאן אני יכול לכתוב את המטריצה בלי לחשוב בכלל: $latex \left[T\right]_{B}=\left[\begin{array}{cc}1 & 0\\0 & -1\end{array}\right]$. למה? כי העמודה הראשונה של $latex \left[T\right]_{B}$ היא וקטור הקוארדינטות של מה שמקבלים כשמפעילים את $latex T$ על $latex \left(a,b\right)$, ואמרנו שאז מקבלים שוב את $latex \left(a,b\right)$; והעמודה השניה היא מה שמקבלים כשמפעילים אותה על $latex \left(b,-a\right)$ ואמרנו שאז מקבלים את $latex -\left(b,-a\right)$. מכיוון שבחרנו ל-$latex T$ בסיס שבו הפעולה של $latex T$ על אברי הבסיס היא פשוטה - רק כפל בסקלר - גם המטריצה של $latex T$ פשוטה.

מכיוון שאולי יותר נוח לנו באופן כללי לייצג את $latex T$ בבסיס הסטנדרטי, נותר רק למצוא את מטריצת המעבר מהבסיס $latex B$ לבסיס הסטנדרטי: זוהי המטריצה $latex P=\left[\begin{array}{cc}a & b\\b & -a\end{array}\right]$ (כאן אברי הבסיס $latex B$ כתובים בעמודות; באופן קסום כלשהו הם כתובים גם בשורות, אבל זה לא כך באופן כללי). כל שנותר לעשות הוא למצוא את $latex P^{-1}$ ואת זה אפשר לעשות כאן בקלות בעזרת נוסחת קרמר, שמראה לנו שבמקרה הזה המטריצה ההופכית של $latex \left[\begin{array}{cc}a & b\\b & -a\end{array}\right]$ היא $latex \frac{-1}{a^{2}+b^{2}}\left[\begin{array}{cc}-a & -b\\-b & a\end{array}\right]$ (באופן כללי ההופכית של מטריצה כללית מסדר $latex 2\times2$, שנסמן $latex \left[\begin{array}{cc}a & b\\c & d\end{array}\right]$ היא $latex \frac{1}{ad-bc}\left[\begin{array}{cc}d & -b\\-c & a\end{array}\right]$; זהו אולי השימוש הפשוט ביותר בנוסחת קרמר, וכזה שאפשר אפילו לזכור בעל פה לפעמים).

השלב האחרון הוא החישוב הלא-כל-כך-נעים של

$latex \left[T\right]_{E}=P\left[T\right]_{B}P^{-1}=\frac{-1}{a^{2}+b^{2}}\left[\begin{array}{cc}a & b\\b & -a\end{array}\right]\left[\begin{array}{cc}1 & 0\\0 & -1\end{array}\right]\left[\begin{array}{cc}-a & -b\\-b & a\end{array}\right]=$

$latex =\frac{-1}{a^{2}+b^{2}}\left[\begin{array}{cc}a & b\\b & -a\end{array}\right]\left[\begin{array}{cc}-a & -b\\b & -a\end{array}\right]=\frac{1}{a^{2}+b^{2}}\left[\begin{array}{cc}a^{2}-b^{2} & 2ab\\2ab & b^{2}-a^{2}\end{array}\right]$

המטריצה האחרונה שקיבלנו היא מה שתראו בספרי לימוד כשמדברים בדרך כלל על שיקוף כללי. אפשר כמובן להמשיך הלאה וממש לכתוב נוסחה ל-$latex T\left(x,y\right)$ אבל זו בסך הכל תהיה דרך מלוכלכת יותר לכתוב את המטריצה שהגענו אליה.

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

מה שראינו כאן היה שהמפתח להבנת הטרנספורמציה $latex T$ היה מציאת וקטורים שעליהם היא פועלת בצורה פשוטה במיוחד, פשוט בתור כפל בסקלר. וקטורים כאלו נקראים וקטורים עצמיים של $latex T$ (Eigenvectors) והסקלרים שבהם הם מוכפלים נקראים ערכים עצמיים (Eigenvalues). השאלות שבהן אעסוק בהמשך יהיו בסגנון של - בהינתן $latex T$, מיהם הערכים העצמיים שלה? איך למצוא וקטורים עצמיים? האם קיים ל-$latex T$ ייצוג פשוט בתור מטריצה אלכסונית כמו שקרה בדיון הנוכחי? אלו שאלות מעניינות והתשובות עליהן יפות, אבל הן לכשעצמן לא עונות על השאלה למה מעניין למצוא וקטורים וערכים עצמיים. דוגמת השיקוף באה לתת מוטיבציה בסיסית לנושא; אני רוצה לתת עוד דוגמה או שתיים, אם כי מה שאציג הוא לחלוטין לא ממצה.

בפוסט שעסק בכפל מטריצות אמרתי שאפשר לספור מסלולים בגרף באמצעות מטריצת השכנויות של הגרף. כזכור, זו הייתה מטריצה $latex A$ שהכניסה ה-$latex \left(i,j\right)$ שלה כללה את מספר הקשתות מ-$latex i$ אל $latex j$ בגרף, והתברר כי הכניסה $latex A_{ij}^{k}$ היא בדיוק מספר המסלולים מאורך $latex k$ מ-$latex i$ אל $latex j$. כעת, נניח שמבקשים מכם למצוא את כל המסלולים מאורך 1000 מ-$latex i$ אל $latex j$, כלומר לחשב את $latex A_{ij}^{1000}$ - זה נראה איום ונורא על פניו, כי לכפול מטריצה בעצמה 1000 פעמים זה לא כיף. יש תעלול נחמד שחוסך זמן - להעלות את $latex A$ בריבוע, ואת התוצאה שוב להעלות בריבוע, וכך חיש קל לקבל את כל החזקות של $latex A$ שהן עצמן חזקות של 2 ואיתן “להרכיב” את 1000 איכשהו, אבל גם בשיטה הזו עדיין צריך לבצע הרבה כפלי מטריצות. ואם מבקשים מכם למצוא נוסחה כללית ל-$latex A_{ij}^{n}$ כתלות ב-$latex n$ זה כבר בכלל נראה קשה. אבל למרבה המזל לפעמים זה קל; אם אנחנו יודעים על מטריצה אלכסונית $latex D$ כך ש-$latex A=P^{-1}DP$ עבור $latex P$ הפיכה כלשהי, אז שימו לב שלמשל

$latex A^{3}=\left(P^{-1}DP\right)\left(P^{-1}DP\right)\left(P^{-1}DP\right)=$

$latex =P^{-1}D\left(PP^{-1}\right)D\left(PP^{-1}\right)DP=P^{-1}D^{3}P$

וכפי שניתן לנחש - באופן כללי, $latex A^{n}=P^{-1}D^{n}P$. כעת, אם $latex D$ היא אלכסונית אז $latex D^{n}$ קלה ביותר לחישוב - זו פשוט $latex D$ כאשר כל איברי האלכסון מועלים בחזקת $latex n$ (למשל, אם $latex D=\left[\begin{array}{cc}2 & 0\\0 & 3\end{array}\right]$ אז $latex D^{3}=\left[\begin{array}{cc}2^{3} & 0\\0 & 3^{3}\end{array}\right]=\left[\begin{array}{cc}8 & 0\\0 & 27\end{array}\right]$). כלומר, חישוב חזקות של $latex A$ הופך לטריוויאלי. איך זה קשור לערכים עצמיים? ובכן, אם אפשר לעבור מ-$latex A$ באופן הזה למטריצה אלכסונית (זה נקרא לכסון של $latex A$) אז האיברים באלכסון של $latex D$ הם בדיוק הערכים העצמיים של $latex A$, והדרך הישירה למציאת $latex D$ (ועוד יותר חשוב, $latex P$) היא בדיוק דרך מציאת הערכים העצמיים והוקטורים העצמיים של $latex A$.

העניין רק מתחיל כאן. בעיות ספירה רבות בקומבינטוריקה ניתנות להצגה באמצעות ספירת מסלולים בגרף מסויים. לעתים קרובות הגרף הזה גדול מכדי שניתן יהיה ללכסן את המטריצה שמתאימה לו, אפילו אם היא ניתנת ללכסון, ולכן נוסחה מדוייקת לבעיית הספירה הופכת למשהו שקשה לחשב; אבל ניתן להראות שעבור מטריצות שבאות מגרפים שכאלו, מספר המסלולים שאותו סופרים יהיה מסדר גודל של $latex O\left(\lambda^{n}\right)$ מסלולים מאורך $latex n$, כאשר $latex \lambda$ הוא הערך העצמי הממשי הגדול ביותר של המטריצה, ואותו אפשר לחשב באופן מקורב גם בלי ללכסן את המטריצה (איך? זהו תחום שלם באנליזה נומרית…). זוהי תוצאה מרתקת בקומבינטוריקה שקושרת אותה באופן חזק לאלגברה לינארית, ומוכחת באמצעות כלים מאנליזה - אחת מהדוגמאות הפשוטות ביותר להדגמה של האופן שבו ה”סוגים” השונים של המתמטיקה הם לא עולמות נפרדים אלא פנים משלימות של אותו הדבר.

התוצאה הזו קשורה בקשר הדוק למדי לתוצאה דומה עבור הילוכים אקראיים בגרף. הילוך אקראי שכזה מתואר לעתים קרובות באמצעות מטריצה שבה הכניסה $latex \left(i,j\right)$ נותנת את ההסתברות לכך שההילוך, אם הוא נמצא בצומת $latex i$, ילך משם לצומת $latex j$. אם $latex A$ היא מטריצה שמייצגת הילוך שכזה ו-$latex v$ הוא וקטור שמייצג הסתברויות להימצאות של ההילוך בכל אחד מצמתי הגרף (למשל, ערך של $latex \frac{1}{2}$ בשתי הכניסות הראשונות ו-0 ביתר אומר שבתחילת ההילוך ההסתברות שלו להיות בצומת 1 או 2 היא חצי לכל אחד מהם, ו-0 ליתר הצמתים) אז $latex Av$ הוא וקטור ההסתברויות שמתאים למיקום ההילוך אחרי צעד אחד, ו-$latex A^{2}v$ להסתברויות אחרי שני צעדים, וכדומה. כאן מה שמעניין במיוחד הוא וקטור עצמי שמתאים לערך העצמי 1, כלומר שמקיים $latex Av=v$; וקטור כזה מתאר את ה”התנהגות לטווח ארוך” של ההילוך המקרי - אם למשל כניסה 1 בו היא $latex \frac{1}{3}$, זה אומר שאנחנו מצפים שבממוצע הזמן שההילוך מבלה בצומת מספר 1 הוא שליש מהזמן הכולל שלו (כשמדובר על פרקי זמן ארוכים). העניין הזה זכה לפרסום רב בזכות העובדה שאלו הרעיונות שעמדו בבסיס אלגוריתם ה-Pagerank של גוגל - תיאור האינטרנט כגרף ודירוג אתרים על פי הפופולריות שלהם בהילוך מקרי בגרף (צומת שמגיעים אליו יותר הוא יותר פופולרי; בדרך הזו מצליחים לפרמל מתמטית את ההגדרה שנשמעת מעגלית של “אתר חשוב הוא אתר שהרבה אתרים חשובים מקשרים אליו”). שימו לב שכאן הערך העצמי ידוע (יש הוכחה פשוטה ביותר לכך ש-1 הוא ערך עצמי של כל מטריצה “הסתברותית” שכזו שנובעת מתוצאה קצת יותר כללית שאראה בהמשך); האתגר הוא למצוא את הוקטור העצמי.

אלו דוגמאות לשימושים שאני מכיר די טוב אישית; את רוב השימושים - ויש כאלו בתחומי מדע לא מעטים - אני פשוט לא מכיר. עם זאת, אני חייב לתת דוגמה אחת מפיזיקה אחרת באמת אחטא לעובדות. בשעתו כתבתי פוסט שעסק במשוואה הדיפרנציאלית שצצה כשמנסים להבין את התנהגותה של מסה שמחוברת לקפיץ. המשוואה שקיבלנו לבסוף הייתה $latex f^{\prime\prime}\left(t\right)=-\omega^{2}\cdot f\left(t\right)$ (כאשר $latex \omega=\sqrt{\frac{k}{m}}$ חושב מתוך הקבועים של הבעיה - קבוע הקפיץ והמסה של הגוף המעורב) והיא נפתרה על ידי $latex f\left(t\right)=C\cdot e^{i\omega t}$ (במקום האקספוננט המרוכב אפשר היה להשתמש בסינוסים וקוסינוסים ממשיים, ופירטתי על כך בשעתו). ליתר דיוק, לכל $latex C$ (שיכול להיות מספר מרוכב כלשהו) התקבלה פונקציה שפותרת את המשוואה, ובחרנו שתי פונקציות כאלו שהיו בלתי תלויות לינארית כדי לפרוש את כל מרחב הפתרונות.

עכשיו בואו נעבור לדבר על מערכת קצת יותר מחוכמת, זו:

כאן יש לנו שני גופים שמחוברים בקפיצים הן זה לזה והן כל אחד לקיר אחר. נניח שהמסות של הגופים זהות (ונסמן את המסה הזו ב-$latex m$) ושקבוע הקפיץ של כל הקפיצים זהה (ונסמן אותו ב-$latex k$). עכשיו יש לנו שתי פונקציות: $latex f_{1}\left(t\right)$ ו-$latex f_{2}\left(t\right)$ שמגדירות את מיקומי הגופים כפונקציה של הזמן. אפשר לחשוב על זה כעל וקטור של פונקציות: $latex \overline{f}\left(t\right)=\left(f_{1}\left(t\right),f_{2}\left(t\right)\right)$.

כעת, כל מסה נמשכת הן על ידי הקפיץ שמחבר אותה לקיר, והן על ידי הקפיץ שמחבר בין שתי המסות. אורך הקפיץ שמחבר את שתי המסות הוא בדיוק $latex \left|f_{1}-f_{2}\right|$, וזה מניב לנו את שתי המשוואות הבאות:

$latex mf_{1}^{\prime\prime}=-kf_{1}+k\left(f_{2}-f_{1}\right)$

$latex mf_{2}^{\prime\prime}=-kf_{2}+k\left(f_{1}-f_{2}\right)$

מה שמתבקש לאור נסיון העבר הוא “לנחש” שהפתרון הוא מהצורה $latex \overline{f}=\left(C_{1}e^{i\omega t},C_{2}e^{i\omega t}\right)$. אם מציבים את הפתרון הזה במשוואות, מקבלים:

$latex -m\omega^{2}C_{1}e^{i\omega t}=-kC_{1}e^{i\omega t}+k\left(C_{2}-C_{1}\right)e^{i\omega t}$

$latex -m\omega^{2}C_{2}e^{i\omega t}=-kC_{2}e^{i\omega t}+k\left(C_{1}-C_{2}\right)e^{i\omega t}$

יש לנו כאן שלושה משתנים - $latex C_{1},C_{2}$ ו-$latex \omega$, ואנו מצפים לקבל אותם כפרמטרים של $latex m,k$ איכשהו. ראשית כל אפשר לחלק את כל המשוואות ב-$latex e^{i\omega t}$ וב-$latex m$ ולקבל את התיאור הנקי יותר:

$latex \omega^{2}C_{1}=2\frac{k}{m}C_{1}-\frac{k}{m}C_{2}$

$latex \omega^{2}C_{2}=2\frac{k}{m}C_{2}-\frac{k}{m}C_{1}$

ואת זה אפשר לכתוב בצורת משוואה מטריציונית:

$latex \left[\begin{array}{cc}2\frac{k}{m} & -\frac{k}{m}\\-\frac{k}{m} & 2\frac{k}{m}\end{array}\right]\left[\begin{array}{c}C_{1}\\C_{2}\end{array}\right]=\omega^{2}\left[\begin{array}{c}C_{1}\\C_{2}\end{array}\right]$

במילים אחרות, $latex \left[\begin{array}{c}C_{1}\\C_{2}\end{array}\right]$ הוא וקטור עצמי המתאים לערך העצמי $latex \omega^{2}$ של הטרנספורמציה הלינארית המוגדרת באמצעות המטריצה $latex \left[\begin{array}{cc}2\frac{k}{m} & -\frac{k}{m}\\-\frac{k}{m} & 2\frac{k}{m}\end{array}\right]$; זוהי טרנספורמציה שמאפיינת את המערכת שהצגתי, של זוג מסות וקפיצים מסויימים, אבל למערכות מורכבות אחרות של קפיצים ומסות גם כן אפשר (בעקרון) לחשוב על טרנספורמציה דומה. כעת, הפתרון של מערכת הקפיצים הזו יכלול את מציאת הערכים העצמיים האפשריים (הערכים הרלוונטיים של $latex \omega$) וערכים אלו יאפיינו את תדירויות התנודה של המערכת (בדומה לאופן שבו $latex \omega$ עשה זאת במקרה של המערכת הפשוטה), ואת הוקטורים העצמיים שמתאימים לכל ערך עצמי, שמגדירים את אופני התנודה של המערכת.

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

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


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

Buy Me a Coffee at ko-fi.com