7.3

מתמטיקה שימושית ו־AᵀA

תנאי שפה והבדלים סופיים

Boundary Conditions Replace Initial Conditions

בבעיית שפה שני ערכים בקצות התחום מחליפים את נתוני ההתחלה. מטריצת הפרשים ראשונים A יוצרת את K=AᵀA, קירוב סימטרי ל־−u″.

יחידת לימוד עצמאיתשיעור 3 מתוך 5כ־70 דקות כולל תרגול3 מטרות למידה
  1. 1
    נקודת פתיחהמה כבר ידוע ומה השאלה?
  2. 2
    ניבוימה יקרה במקרה הפשוט?
  3. 3
    המחשהמה באמת משתנה בתמונה?
  4. 4
    ניסוח והצדקהשם, נוסחה ולמה היא נכונה
  5. 5
    בדיקהדוגמה, תרגול ומשוב
  6. 6
    העברהמקרה חדש והמשך המסלול

שאלה לפני נוסחה

מה אנחנו מנסים לראות?

להבחין בין תנאי התחלה לתנאי שפה, לפתור בעיית שפה רציפה, ולבנות ממנה מערכת הבדלים סופיים K=AᵀA תוך מעקב אחר h² וערכי הקצה.

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

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

לראות לפני שמחשבים · המקרה הפשוט ביותר

עקומה רציפה מול ערכי רשת

תנאי שפה קובעים את שני הקצוות והבדלים סופיים מקרבים את העקומה ביניהםuxu=−x⁴+x−uᵢ₋₁+2uᵢ−uᵢ₊₁=h²fᵢK=AᵀA · ערכי השפה עוברים לצד ימין
עקבו מהצורה הראשונית אל התוצאה

האיור משווה את הפתרון המדויק של −u″=12x² לערכי ההבדלים הסופיים בין שני קצוות קבועים.

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

אחרי שראינו

בסוף השיעור תוכלו

  • לפתור −u″=f עם שני תנאי קצה באמצעות פתרון פרטי והומוגני.
  • לגזור את נוסחת ההפרש השני ולבנות את המטריצה התלת־אלכסונית.
  • להכניס ערכי שפה לצד ימין, לבדוק שגיאת רשת ולהסביר מתי תנאי Neumann יוצרים סינגולריות.

נותנים שמות למה שראינו

מושגים שנשתמש בהם

בעיית שפה
משוואה דיפרנציאלית עם תנאים בקצות התחום, למשל u(0),u(1).
תנאי Dirichlet
קביעת ערך הפונקציה בקצה, למשל u(0)=0.
תנאי Neumann
קביעת השיפוע או השטף בקצה, למשל u′(1)=0.
הבדל סופי
צירוף ערכי רשת המקרב נגזרת; ההפרש השני מקרב u″.
גודל רשת h
המרחק בין נקודות סמוכות; כאשר h קטן, הקירוב משתפר בדרך כלל.
מטריצת קשיחות K
המטריצה התלת־אלכסונית של −ההפרש השני; בתנאים מתאימים K=AᵀA.

מהמילים אל הסימנים

כותבים את הפעולה שכבר ראינו

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

להצגת נוסחת המפתחקראו כל סימן כפעולה, לא כמשהו שצריך לשנן−u″=f; −uᵢ₋₁+2uᵢ−uᵢ₊₁=h²fᵢ

מרכיבים את הפעולות

מהתמונה אל הנוסחה — הגזירה, בלי לדלג על הצעדים

  1. פותרים תחילה ברצף

    אינטגרציה פעמיים של −u″=f נותנת פתרון פרטי ועוד Ax+B. שני תנאי השפה קובעים את שני הקבועים.

    u=uₚ+A+Bx
  2. בונים קירוב לנגזרת שנייה

    פיתוחי טיילור של u(xᵢ+h) ושל u(xᵢ−h) מבטלים את הנגזרת הראשונה ומשאירים את הנגזרת השנייה.

    u″(xᵢ)≈(uᵢ₋₁−2uᵢ+uᵢ₊₁)/h²
  3. מתאימים את סימן המשוואה

    עבור −u″=f הופכים את הסימנים ומכפילים ב־h². לכן האלכסון הוא 2 והשכנים מקבלים −1.

    −uᵢ₋₁+2uᵢ−uᵢ₊₁=h²f(xᵢ)
  4. מפרידים נעלמים מערכי שפה

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

    KU=h²F+boundary contributions
  5. רואים את AᵀA

    A מודדת הפרשים ראשונים בין נקודות סמוכות. האנרגיה ‖AU‖² היא סכום ריבועי השיפועים, ו־AᵀA מחזירה את ההפרש השני.

    K=AᵀA; UᵀKU=‖AU‖²
  6. בודקים סדר דיוק

    שגיאת הקיטוע של ההפרש המרכזי היא מסדר h² עבור פונקציה חלקה. חציית h אמורה להקטין את השגיאה בקירוב פי 4.

    max error=O(h²)
  7. מבינים סינגולריות בתנאי שיפוע

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

    K𝟙=0; ∫f=boundary flux difference

עכשיו רואים את השיטה בפעולה

דוגמאות פתורות, צעד אחר צעד

דוגמה 1

פתרון רציף מדוגמת המקור

פתרו −u″=12x² עם u(0)=u(1)=0.

  1. פתרון פרטי הוא uₚ=−x⁴, כי −uₚ″=12x².

  2. הפתרון ההומוגני של −u″=0 הוא A+Bx.

  3. מתנאי u(0)=0 מקבלים A=0.

  4. מתנאי u(1)=0 מקבלים −1+B=0, ולכן B=1.

  5. בדיקה: u=−x⁴+x,‏ u(0)=u(1)=0 ו־−u″=12x².

התוצאה ומה היא אומרת

u(x)=−x⁴+x.

דוגמה 2

שלוש נקודות פנים

קרבו את אותה בעיה בנקודות x=1/4,1/2,3/4.

  1. כאן h=1/4 ו־U=(u₁,u₂,u₃).

  2. K=[[2,−1,0],[−1,2,−1],[0,−1,2]].

  3. צד ימין הוא h²·12(x₁²,x₂²,x₃²), מפני ששני ערכי השפה אפס.

  4. פותרים KU=h²F ומקבלים קירוב לערכי −x⁴+x בשלוש הנקודות.

  5. הצבה חזרה ב־KU−h²F בודקת שהשארית האלגברית כמעט אפס; ההפרש מן העקומה המדויקת הוא שגיאת הדיסקרטיזציה.

התוצאה ומה היא אומרת

מערכת תלת־אלכסונית מחליפה בעיית שפה רציפה במערכת לינארית סימטרית וחיובית.

איפה זה פוגש את העולם

יישום

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

מלכודת נפוצה

מה כדאי לבדוק

לשכוח את h² בצד ימין. המטריצה [−1,2,−1] מייצגת h²(−u″), לא את −u″ עצמו. בלי הגורם, שינוי מספר נקודות הרשת משנה את הבעיה הפיזיקלית.

בודקים שהרעיון יושב

תרגול ומשוב

בדיקת הבנה

בחרו תשובה ורק אז בדקו את עצמכם

במשוואה −u″=f, מדוע האלכסון של מטריצת ההפרשים הוא 2?

בחרו אחת מהאפשרויות כדי להמשיך.

עכשיו אתם

אתגר קצר

פתרו −u″=2 עם u(0)=1,u(1)=0 ברצף, ואז כתבו את מערכת ההפרשים לשתי נקודות פנים.

רמז ראשון

אינטגרציה נותנת u=−x²+A+Bx. ברשת h=1/3, והערך השמאלי 1 נוסף לרכיב הראשון של צד ימין.

הצגת דרך הפתרון
  1. מן התנאים מתקבל A=1 ו־B=0, ולכן u(x)=1−x².
  2. K=[[2,−1],[−1,2]] ו־h²F=(2/9,2/9).
  3. תרומת השפה היא (1,0), ולכן KU=(11/9,2/9).
  4. פתרון המערכת נותן U=(8/9,5/9), בדיוק ערכי 1−x² בנקודות 1/3 ו־2/3.

מימוש הנושא

קוד שאפשר לקחת לניסוי

הקוד מיישם את אותו רעיון מתמטי. ב־JavaScript אפשר להריץ אותו כאן; גרסת Python זמינה להשוואה ולהעתקה.

הקשר למתמטיקה

הקוד בונה את K לכל מספר נקודות פנים, פותר באלימינציה ומשווה לפתרון המדויק −x⁴+x.

פלט צפוי

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

ניסוי המשך

הריצו עם 3,7 ו־15 נקודות פנים. האם חציית h מקטינה את השגיאה בקירוב פי 4?

מהרעיון אל הקוד

מימוש חישובי

function solve(A,b) {
  const M=A.map((row,i)=>[...row,b[i]]), n=A.length;
  for(let c=0;c<n;c++) {
    let p=c; for(let r=c+1;r<n;r++) if(Math.abs(M[r][c])>Math.abs(M[p][c])) p=r;
    [M[c],M[p]]=[M[p],M[c]];
    const d=M[c][c]; for(let j=c;j<=n;j++) M[c][j]/=d;
    for(let r=0;r<n;r++) if(r!==c) { const f=M[r][c]; for(let j=c;j<=n;j++) M[r][j]-=f*M[c][j]; }
  }
  return M.map(row=>row[n]);
}

function boundarySolution(N) {
  const h=1/(N+1), x=Array.from({length:N},(_,i)=>(i+1)*h);
  const K=Array.from({length:N},(_,i)=>Array.from({length:N},(_,j)=>i===j?2:Math.abs(i-j)===1?-1:0));
  const rhs=x.map(value=>h*h*12*value*value);
  const u=solve(K,rhs), exact=x.map(value=>-(value**4)+value);
  return {h,x,u,exact,maxError:Math.max(...u.map((value,i)=>Math.abs(value-exact[i])))};
}

console.log(boundarySolution(7));

לפני שממשיכים

מה לוקחים מהשיעור

  • בעיית שפה משתמשת בשני קצוות; סוג התנאים קובע קיום ויחידות.
  • הפרש שני מרכזי יוצר מטריצה סימטרית מקומית עם 2 באלכסון ו־−1 לשכנים.
  • K=AᵀA מחברת בין שיפועים, אנרגיה ועקמומיות.
  • ערכי שפה עוברים לצד ימין, ו־h² חייב להישמר כדי לקרב את אותה משוואה.

משימת מעבדה לשיעור הזה

תחנה 3 — מצופפים את הרשת

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

לפתיחת התחנה
מקורות להעמקה בלבד — השיעור עומד בפני עצמו

מדריך המרצים: עמ׳ 204–207

ספר הלימוד: עמ׳ 406–415