מתמטיקה שימושית ו־AᵀA
ריבועים פחותים כהקרנה
Least Squares and Projections
כאשר Ax=b אינה פתירה, מחליפים את b בהיטל p=Ax̂ הקרוב ביותר בתוך C(A). השארית e=b−p מאונכת לכל עמודה, ומכאן נובעות המשוואות הנורמליות.
- 1נקודת פתיחהמה כבר ידוע ומה השאלה?
- 2ניבוימה יקרה במקרה הפשוט?
- 3המחשהמה באמת משתנה בתמונה?
- 4ניסוח והצדקהשם, נוסחה ולמה היא נכונה
- 5בדיקהדוגמה, תרגול ומשוב
- 6העברהמקרה חדש והמשך המסלול
שאלה לפני נוסחה
מה אנחנו מנסים לראות?
לפתור בעיה לא־עקבית באמצעות הקרנה, לגזור את המשוואות הנורמליות משלוש נקודות מבט, ולבדוק שהשארית מאונכת למרחב המודל.
דמיינו שמרחב העמודות הוא רצפה ו־b מרחף מעליה. אין x שמגיע בדיוק אל b, לכן מורידים אנך אל הנקודה הקרובה p. הווקטור e=b−p הוא האנך; הדרישה שהוא מאונך לכל כיוון ברצפה קובעת את x̂.
לפני ההמחשה: קראו רק את הכותרת “הנתונים, הקו והשאריות”. מה לדעתכם ישתנה, מה יישאר קבוע, ואיזה סימן בתמונה יוכל להפריך את הניבוי?
לראות לפני שמחשבים · המקרה הפשוט ביותר
הנתונים, הקו והשאריות
האיור מציג ארבע מדידות, קו מועמד וקטעי שארית אנכיים אל התחזיות שעל הקו.
מה כדאי לגלות: במינימום לא כל שארית נעלמת; במקום זאת השאריות מתאזנות כך שסכומן וגם הסכום המשוקלל ב־x הם אפס.
אחרי שראינו
בסוף השיעור תוכלו
- לבנות את A ואת b מבעיית התאמה ולזהות מדוע Ax=b אינה פתירה בדיוק.
- לגזור AᵀA x̂=Aᵀb מגאומטריה, מחישוב נגזרות ומפירוק אורתוגונלי.
- לחשב תחזיות, שאריות ו־SSE ולאמת Aᵀe=0.
נותנים שמות למה שראינו
מושגים שנשתמש בהם
- ריבועים פחותים
- בחירת x̂ שממזערת את סכום ריבועי השאריות ‖b−Ax‖².
- היטל p
- הווקטור p=Ax̂ בתוך C(A) הקרוב ביותר ל־b.
- שארית e
- ההפרש e=b−p; בפתרון האופטימלי הוא שייך ל־N(Aᵀ).
- משוואות נורמליות
- המערכת AᵀA x̂=Aᵀb המתקבלת מן האורתוגונליות Aᵀe=0.
- SSE
- סכום ריבועי השאריות, SSE=Σeᵢ²=‖e‖².
- מטריצת תכנון
- המטריצה A ששורותיה מתארות כיצד פרמטרי המודל יוצרים כל תחזית.
מהמילים אל הסימנים
כותבים את הפעולה שכבר ראינו
פתחו את הנוסחה רק אחרי שאתם יכולים לומר במילים מה כל פעולה אמורה לעשות. בשלב הבא נצדיק אותה צעד אחר צעד.
להצגת נוסחת המפתח
קראו כל סימן כפעולה, לא כמשהו שצריך לשנןAᵀ(b−Ax̂)=0 ⇔ AᵀA x̂=Aᵀbמרכיבים את הפעולות
מהתמונה אל הנוסחה — הגזירה, בלי לדלג על הצעדים
מתרגמים מודל למערכת
בקו C+Dx כל מדידה מספקת שורה [1,xᵢ]. אם אין קו שעובר בכל הנקודות, b אינו במרחב העמודות של A.
A[C,D]ᵀ≈b; p=A x̂∈C(A)מגדירים את השגיאה
לכל x, הווקטור e(x)=b−Ax אוסף את השאריות. המרחק הריבועי הוא פונקציה לא־שלילית של הפרמטרים.
E(x)=‖b−Ax‖²=eᵀeדורשים אנך
אם e מחזיק רכיב בתוך C(A), אפשר להזיז את p בכיוון הזה ולהתקרב ל־b. לכן במינימום e מאונך לכל עמודה של A.
e⊥C(A) ⇔ Aᵀe=0מגיעים למשוואות הנורמליות
מציבים e=b−Ax̂ ומפזרים את Aᵀ. זו מערכת ריבועית במספר הפרמטרים, גם כאשר למערכת המקורית יש יותר משוואות מנעלמים.
Aᵀ(b−Ax̂)=0 ⇔ AᵀA x̂=Aᵀbאותה תוצאה מחשבון
הגרדיאנט של E הוא −2Aᵀ(b−Ax). נקודת האפס של הגרדיאנט נותנת בדיוק את תנאי האורתוגונליות.
∇E(x)=2Aᵀ(Ax−b)=0מפרקים את b לשני מרחבים
בפתרון מתקבל פירוק יחיד b=p+e עם p∈C(A) ו־e∈N(Aᵀ). משפט פיתגורס מוכיח שכל בחירה אחרת רחוקה יותר.
‖b−Ax‖²=‖e‖²+‖p−Ax‖²מתי הפתרון יחיד?
אם עמודות A בלתי תלויות, AᵀA הפיכה ו־x̂ יחיד. אם הן תלויות, ההיטל p עדיין יחיד אך ייתכנו כמה וקטורי מקדמים שמייצרים אותו.
N(A)={0} ⇔ AᵀA הפיכה
עכשיו רואים את השיטה בפעולה
דוגמאות פתורות, צעד אחר צעד
קו ההתאמה של דוגמת העוגן
התאימו קו לנקודות (0,4),(1,1),(2,0),(3,1).
בונים A=[[1,0],[1,1],[1,2],[1,3]] ו־b=(4,1,0,1).
מחשבים AᵀA=[[4,6],[6,14]] ו־Aᵀb=(6,4).
פתרון המערכת נותן C=3,D=−1, ולכן הקו הוא 3−x.
התחזיות הן p=(3,2,1,0), והשאריות e=b−p=(1,−1,−1,1).
בודקים Aᵀe=(Σeᵢ,Σxᵢeᵢ)=(0,0), ו־SSE=1+1+1+1=4.
x̂=(3,−1), p=(3,2,1,0), e=(1,−1,−1,1), SSE=4.
הממוצע כהיטל
מצאו את הקבוע v הקרוב למדידות הדופק 70,120,80.
כאן A היא העמודה a=(1,1,1), וכל התחזיות שוות v.
ההיטל על הישר span{a} הוא p=a(aᵀb)/(aᵀa).
מחשבים aᵀb=270 ו־aᵀa=3, ולכן v̂=90.
השארית היא (−20,30,−10), וסכומה אפס: היא מאונכת ל־a.
הקבוע הטוב ביותר הוא הממוצע v̂=90.
איפה זה פוגש את העולם
יישום
התאמת מגמה, כיול חיישנים, רגרסיה ומודלים מדעיים מתחילים מאותה הקרנה. גם כאשר המודל אינו מדויק, תנאי Aᵀe=0 מספק תשובה שניתנת לבדיקה ולא רק קו שנראה טוב לעין.
מלכודת נפוצה
מה כדאי לבדוק
לדרוש שהשאריות עצמן יהיו כולן אפס. זה אפשרי רק כאשר b∈C(A). בריבועים פחותים הדרישה היא חלשה ומדויקת יותר: השארית הכוללת מאונכת לכל כיוון שהמודל מסוגל לשנות.
בודקים שהרעיון יושב
תרגול ומשוב
בדיקת הבנה
בחרו תשובה ורק אז בדקו את עצמכם
בחרו אחת מהאפשרויות כדי להמשיך.
עכשיו אתם
אתגר קצר
התאימו קו לנקודות (−1,7),(1,7),(2,21), חשבו את p ואת e, ואמתו את שני רכיבי Aᵀe.
רמז ראשון
בנו A עם שורות [1,t]. תקבלו AᵀA=[[3,2],[2,6]] ו־Aᵀb=(35,42).
הצגת דרך הפתרון
- פתרון [[3,2],[2,6]](C,D)=(35,42) הוא C=9,D=4.
- התחזיות הן p=(5,13,17).
- השארית היא e=(2,−6,4).
- Σeᵢ=0 וגם Σtᵢeᵢ=−2−6+8=0, ולכן Aᵀe=0.
מימוש הנושא
קוד שאפשר לקחת לניסוי
הקוד מיישם את אותו רעיון מתמטי. ב־JavaScript אפשר להריץ אותו כאן; גרסת Python זמינה להשוואה ולהעתקה.
הקוד מחשב ממוצעים, שיפוע וחיתוך, ואז בונה במפורש את השאריות ואת שני רכיבי Aᵀe.
יתקבל intercept=3, slope=−1, residuals=(1,−1,−1,1), normalResidual=(0,0), ו־SSE=4.
שנו את המדידה האחרונה מ־1 ל־3. כיצד משתנים הקו, השאריות ו־SSE, ואילו שני סכומים נשארים אפס?
מהרעיון אל הקוד
מימוש חישובי
function fitLine(points) {
const meanX = points.reduce((sum, [x]) => sum+x, 0)/points.length;
const meanY = points.reduce((sum, [, y]) => sum+y, 0)/points.length;
const denominator = points.reduce((sum, [x]) => sum+(x-meanX)**2, 0);
const slope = points.reduce((sum, [x,y]) => sum+(x-meanX)*(y-meanY), 0)/denominator;
const intercept = meanY-slope*meanX;
const predicted = points.map(([x]) => intercept+slope*x);
const residuals = points.map(([, y], i) => y-predicted[i]);
return { intercept, slope, predicted, residuals,
normalResidual: [
residuals.reduce((sum,e)=>sum+e,0),
residuals.reduce((sum,e,i)=>sum+points[i][0]*e,0),
],
sse: residuals.reduce((sum,e)=>sum+e*e,0) };
}
console.log(fitLine([[0,4],[1,1],[2,0],[3,1]]));def fit_line(points):
mean_x = sum(x for x, _ in points)/len(points)
mean_y = sum(y for _, y in points)/len(points)
denominator = sum((x-mean_x)**2 for x, _ in points)
slope = sum((x-mean_x)*(y-mean_y) for x,y in points)/denominator
intercept = mean_y-slope*mean_x
predicted = [intercept+slope*x for x,_ in points]
residuals = [y-predicted[i] for i,(_,y) in enumerate(points)]
return {"intercept":intercept,"slope":slope,"predicted":predicted,
"residuals":residuals,
"normal_residual":[sum(residuals),sum(points[i][0]*e for i,e in enumerate(residuals))],
"sse":sum(e*e for e in residuals)}
print(fit_line([(0,4),(1,1),(2,0),(3,1)]))לפני שממשיכים
מה לוקחים מהשיעור
- ריבועים פחותים מחליפים יעד בלתי נגיש בהיטל הקרוב ביותר בתוך C(A).
- המשוואות הנורמליות הן פשוט תנאי האורתוגונליות Aᵀe=0.
- ההיטל p והשארית e מפרקים את b בין C(A) ובין N(Aᵀ).
- עמודות בלתי תלויות מבטיחות מקדמים יחידים; ההיטל עצמו יחיד גם כאשר המקדמים אינם.
משימת מעבדה לשיעור הזה
תחנה 1 — להזיז קו ולראות את ההיטל
נבאו את הקו, שנו שיפוע וחיתוך, והשוו את SSE ואת Aᵀe לקו האופטימלי.
מקורות להעמקה בלבד — השיעור עומד בפני עצמו
מדריך המרצים: עמ׳ 191–197
ספר הלימוד: עמ׳ 386–395