יום שני, 23 במרץ 2020

Java תכנות מבוא למדעי המחשב כל מה שצריך לדעת האוניברסיטה הפתוחה שאלות עם פתרונות מלאים

מהו CUP?
CPU=Central Processing Unit
יחידת עיבוד מרכזית אשר בנויה משלושה חלקים עיקריים:
1. CU - Control unit יחידת בקרה
2. ALU - Aritmetic Logic Unit - יחידה אריתמטית לוגית
3. Registers - אוגרים, יחידות זיכרון

1. CU - תפקידה לתאם את העברת המידה וההוראות בין הזיכרון הראשי (RAM) לבין האוגרים (Registers) - יחידות הזיכרון שנמצאים במערכת העיבוד המרכזית.
תפקיד יחידת הבקרה לתאם את פעולות היחידה האריתמטית לוגית על המידע שנשמר באותם יחידות זיכרון של מערכת העיבוד המרכזית.

מהי תוכנה? אוסף של הוראות ויישומים המגדירים את אופן הפעולה של המחשב.

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

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



תכונות שיש לזיכרון ראשי - RAM
מחובר ישירות ל-cpu וללוח אם.
משתמשים בו כאשר המהירות קריטית.
חיסרון: נפח קטן יחסית, תלוי בחשמל.




תכונות שיש לזיכרון משני - ROM
לא מחובר ישירות ל-CPU, מחובר ללוח אם בעזרת כבל = גישה איטית.
משתמשים לאחסון מידע, נפח גדול שלא תלוי בחשמל.


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


שפת התכנות הראשונה בעולם אפשרה למתכנת לכתוב פקודות אנושיות בשפת מכונה
בשפה של low level language, בשפת אסמבלי, נדרש להכיר את החומרה ולדעת איך לעבוד מולה.

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

על מנת להקל על המתכנתים שמבינים שפה אנושית יותר, פותחו שפות תוכנה עיליות - high level language.

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

כותבים בעזרת Editor עורך, למשל Blue J. תרגום לשפת מכונה בעזרת קומפיילר / מהדר.

התהליך הוא כזה:
1. source code - קוד המקור שהמתכנת כתב
2. מהדר / קומפיילר - מתרגם את הקוד לשפת המכונה של ה-cpu
תהליך הקומפילציה ארוך יחסית ומתאים ל-CPU ספציפי.

על מנת להשתמש ב-CPU אחר נצטרך לקמפל מחדש.

ישנן שפות התלויות בפלטפורמה: קוד מקור בשפת C ← קומפיילר ← קוד בינארי ספציפי לשפת המכונה.

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

Java משלבת בין שתי השיטות:
כותבים קטע קוד בקובץ עם סיומת .java
שני השלבים הם:
1. ה compiler של java יודע לתרגם את הקוד בשפת java ולהמיר אותה לקובץ שנקרא byte code, קובץ שהסיומות שלו היא .class ← דומה לשפת מכונה. הוא לא ממש שפת מכונה., הוא מבצע 90%-95% מהעבודה, ולא הופך את קטע הקוד לשפת מכונה טהורה.

2. ה- interpreter המפרש, של השפה, שנקרא JVM - Java Virtual Mechine יודע לקחת את ה byte code ולתת את אותה יתרת תרגום ולהריץ את התוכנה במכה אחת.

Java היא שפה שלא תלויה בפלטפורמה.

קוד של תוכנה הנכתב בקוד מקור JAVA  סיומת java← מהדר / קומפיילר של java  ← נוצר byte code עם סיומת class  יודע לעבוד על כל פלטפורמה שנרצה ← עובר ל- JVM (לכל מעבד יש את ה-JVM שלו)  יודע למהיר לשפת מכונה ולהריץ את התוכנית ← שפת מכונה 0010101

חיסרון: byte code מוסיף רמה מסוימת בין קוד המקור לשפת המכונה: הוספת רמה זו מאיטה את הרצת התוכנית.

תוכניות ב-JAVA רצות לאט יותר לעומת תוכניות ב-C, בגלל אותה אקסטרא תוספת, שבה ממירים את ה-byte code לשפת מכונה באופן סופי ומריצים אותה על המחשב.

אנו מבדילים בין שלושה סוגי שגיאות:
1. Syntax Error
שגיאת קומפילציה: ממירים את קוד המקור ל byte code, ה compiler מוודא שה- syntax (תחביר) תקין.
הקומפיילר מתריע על שגיאה: שגיאת קומפליציה.

2. Run Time Error
כאשר אנו מריצים את קטע הקוד, הקוד קורס.
מתגלה שגיאה בזמן ריצת התוכנית, שגורמת לתוכנית להסתיים בצורה לא טבעית.
למשל: חילוק ב-0.

3. Logial error
שגיאות לוגיות (שגיאות מטרה):
שגיאות שנוצרות אחרי שנוצרה קומפילציה, והתוכנית רצה לכאורה בצורה תקינה.
קשה לראות שיש בעיה: כי הקומפיילר לא מתריע, או התוכנה לא קרסה.
התוכנית רצה.

שגיאות שיכולות לנבוע מחישוב מוטעה, והן קשות לאיתור.

צריך לבדוק היטב את הפלט של התוכנית ולראות שהוא תואם את הציפיות שלנו.


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

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


בקורס זה אנחנו נעבוד עם העורך BlueJ:
BlueJ מספקת לנו סביבת פיתוח אינטראקטיבית (IDE), סביבה אקדמאית, סביבה קלה, פחות כבדה מסביבות עבודה מסחריות, מאוד ויזואלית, נוח לראות בעזרה קשרים בין מחלקות. עבודה יותר קלה.

שמות המחלקה חייבים להיות זהים לשם הקובץ, יש לשים לב לשם!

אנו צריכים לדעת כי אנו משתמשים בייבוא מחלקה בשם Sacnner על מנת שנוכל לקלוט מהמשתמש משתנים (שלמים, ממששים, מחרוזות ועוד) על ידי שימוש בפקודת הייבוא בראש התוכנית:
import java.util.Scanner;

על מנת להשתמש במחלקה זו אנו צריכים ליצור משתנה חדש בגוף התוכנית, רצוי שיהיה פקודה ראשונה וקבועה בכל התוכניות:
    Scanner scan = new Scanner(System.in);

על מנת לקלוט את המשתנה מהמשתמש, למשל משתנה מסוג int (שלם) נשתמש בפקודה באופן הבא:
x= scan.nextInt();
באופן זה נקלוט מהשתמש את המספר השלם שיקליד ואז יבצע Enter.



על מנת להציג פלט על המסך נשתמש בפקודות:
System.out.println("Hellow world"); // after print go to new row
System.out.print("Hellow world"); // after print on screen stay in the same place


את שם המחלקה נהוג לכתוב ברצף, כאשר ההבדל בין מילה למילה מובא לידי ביטוי באות גדולה למשל:
HelloWorld


בנוסף לכך השפה C יודעת להבין בין אותיות גדולות A לאותיות קטנות a, כך ש:
Hello
hello
זה לא אותו דבר!

על מנת לשרשרת מחרוזות זה לזה, אנחנו משתמשים בתו +.
זאת אומרת:

System.out.println("Hellow world"+ " hey");
תחילה ידפיס על המסך
Hellow world hey
ואז הסמן ירד שורה.


על מנת להדפיס משנים בשיטה println אנו נשתמש בשרשור:
int x=3;
System.out.println("The number x is:"+x);
מקרה זה ידפיס לנו:
The number x is:3

במידה ורשום כך:
int x=3,y=46;
System.out.println("The number x is:"+x+y);

מקרה זה ידפיס לנו:
The number x is:346


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

int x=3,y=46;
System.out.println("The number x is:"+(x+y));


מקרה זה ידפיס לנו:
The number x is:49


על מנת לסדר את מה שנכתוב בצורה מסודרת של טבלה אפשר להשתמש בפקודה:
\t
קיצור של Tab

על מנת לרדת שורה, נשתמש בפקודה:
\n

בתכנות אנחנו צריכים להשתמש בקבועים כמה שרק ניתן, למשל שימוש בקבוע בשם PI שהוא מייצג לנו את פאי, 3.14:
final double PI=3.14;


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

public class HelloWorld  //here you can write comments
{
   public static void main (String[] args) // main method
   {
System.out.println("Hellow world"); 

    }  
}
שיטה בשם printin, יודעת לקבל כפרמטר string (מחרוזת) ומחזירה אותו על המסך.

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

על מנת לכתוב הערות משתמשים ב // באותה שורה, או הערה בעלת שורות מרובות כפי שמוצגת בדוגמה השנייה:
// here you can write comment

/*
my comments
can be written
here
*/



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

import java.util.Scanner;

public class ReturnHTO
{
    // the program getting number with 3 digits
    // and returing the hundreds, tens and ones
    public static void main (String[] args)
    {
        Scanner scan = new Scanner(System.in);
        int number,hundreds,ones,tens;
        System.out.println("Please enter number with 3 digits"); 

        number=scan.nextInt();

        hundreds=number/100;
        ones=number%10;
        tens=number%100/10;

        System.out.println("hundres: "+hundreds+" \t tens: "+tens+"\t ones: "+ones);
    }
}


כתוב תכנית הקולטת מחיר בדולר ומחשבת ומדפיסה את המחיר בש"ח
import java.util.Scanner;

public class ConvertDollarToShekel

{

    // the program converting dollar to shekels

    public static void main (String[] args)
    {
        Scanner scan = new Scanner(System.in);
        double dollar,shekel;
        final double OneDollarInShekel=3.698;

        System.out.println("Please enter price in dollar");

        dollar=scan.nextDouble();
        shekel=OneDollarInShekel*dollar;

        System.out.println("The value of: "+dollar+" dollar is: "+shekel+" in shekels");

    }

}


כתוב תכנית הקולטת מחיר ואחוז הנחה, ומחשבת את המחיר לאחר ההנחה

import java.util.Scanner;

public class DiscountCalculator

{
    // the program getting the price, the discount
    //returning the price after discount

    public static void main (String[] args)
    {
        Scanner scan = new Scanner(System.in);
        double price,discount,afterDiscount;

        System.out.println("Please enter price:");
        price=scan.nextDouble();

        System.out.println("Please enter discount in percents:");
        discount=scan.nextDouble();

        afterDiscount=price-((discount/100)*price);

        System.out.println("The regular price is: "+price+"\nprice after discount: "+afterDiscount);
    }
}




חשבון אינפיטסימלי 2 רמה של אוניברסיטה כל החומר שצריך לדעת

קיימים 3 סוגי נקודות אי רציפות:

1. אי רציפות סליקה:
X0 היא נקודת אי רציפות סליקה של f אם קיים מספר ממשי L המקיים:
limf(x)=L
x→x0
אבל L≠X0 או שהנקודה לא מוגדרת בפונקציה.

2. נקודת אי רציפות ממין ראשון או קפיצה
נקודה זו מוגדרת בסביבה מסוימת (נקובה או שלמה) של X0, הנקודה X0 היא נקודת אי רציפות ממין ראשון של f אם קיימים שני מספרים ממשיים L1 ו-L2 שעבורם מתקיים:
limf(x)=L1
X→X0+

limf(x)=L2
X→X0-

3. נקודת אי רציפות ממין שני  או עיקרית
כל שאר המקרים


תרגיל הוכח או הפרך:
מתקיים:
f(x)≤g(x)≤h(x)
1. אם f,h אינטגרביליות בקטע, אז g אינטגרבילית בקטע.

פתרון: טענה זו שגויה.
למשל: דירכלה היא פונקציה לא אינטגרבילית בשום קטע, הסופרמום שלה והאינפימום שלה קבועים, בכל קטע הם לא מתקרבים אחד לשני.
ניקח לדוגמה:
g(x)=D(x)
f(x)=0
h(x)=1
ברור כי f,h אינטגרבילית, אבל D לא אינטגרבילית בכל קטע ממשי.


2. תהא f חסומה בקטע [a,b], אם יש חלוקה p של הקטע כך ש

s(p)=S(p)
אז f קבועה.

פתרון
הטענה נכונה.
נגדיר את p להיות חלוקה רגולרית, זאת אומרת כל קטעי החלוקה שווים זה לזה.
מהנתון:
s(p)=S(p)=n∑i=1 Mi∆xi =  n∑i=1 mi∆xi

הואיל ולכל i מתקיים: mi≤Mi נובע ש mi=Mi.
מכאן נסיק ש f קבועה בכל קטע מהצורה: 
[Xi-1,Xi]
נסמן
f(x)=ci
∀i=1,...n


ci=f(Xi-1)=f(Xi)=Ci+1



ולכן f קבועה בקטע 
[a,b]



משפט אפיון:
פונקציה חסומה בקטע [a,b] אינטגרבילית אם ורק אם
∀ε>0, ∃p, S(p)-s(p)<ε

מסקנה: אם f חסומה קבטע [a,b] ויש סדרת חלוקות pn כך שמתקיים:
S(pn)-s(pn)→0
n→∞
אז f אינטגרבילית בקטע [a,b],

וכן:
b∫a f(x)dx=limS(pn)
                   n→∞



תרגיל: הוכיחו כי f(x)=x^2 אינטגרבילית בקטע [0,1] וחשבו את האינטגרל
0∫1x^2dx.

פתרון:
ניקח את סדרת החלוקה הרגולרית של [0,1]:
∀n∈ℕ, pn={0/n, 1/n. 2/n, ...., n/n}

נקבע n ונחשב את הסכום התחתון של p, ראשית נבחין כי:
mi= inf f([Xi-1,Xi])=inf f((i-1)/n , i/n) = [(i-1)/n]^2
משום שהפונקציה f עולה בקטע אז האינפימום שלה יהיה בקצה השמאלי

s(pn)= n∑i=1 [(i-1)/n]^2 * 1/n = 1/n^3   n∑i=1 (i-1)^2 = 1/^3  n-1∑k=0 (k)^2 = W
                                       ∆xi=1/n                        i-1=k

בעזרת נוסחה מתאימה מגיעים לביטוי כלשהו.

באופן דומה מראים כי
S(p)=...=V

S(pn)-s(pn)=V-W=1/n → 0 
                                 n→∞
לכן נסיק כי f אינטגרבילית בקטע (לפי המשפט), וכן:

0∫1x^2dx= lim S(pn)= lim W=1/3
                   n→∞             n→∞



מהי פונקציה קדומה?
תהא f מוגדרת בקטע I, נאמר כי F היא פונקציה קדומה של f בקטע I אם:
F'(x)=f(x)

דוגמה
1. הפונקציה הקדומה של x^2 ב-ℝ היא למשל x^3/3-7

אם f אינטגרבילית בקטע [a,b] והפונקציה F קדומה שלה אז האינגרל המסוים בין a ל-b:
a∫b f(x)dx= F(b)-F(a)

משפטים חשובים להגדרת אינטגרביליות:
1. אם f מונוטונית במובן הרחב בקטע [a,b] אז f אינטגרבילית ב-[a,b]
2. פונקציה f נקראת פונקציה מונוטונית למקוטעין אם אפשר לחלק את הקטע I למספר סופי של קטעים, אשר בפנים כל אחד מהם f מונוטונית במובחן הרחב.
3. כל פונקציה שהיא חסומה וגם מונוטונית למקוטעין ב-[a,b] היא אינטגרבילית בקטע [a,b]
4. אם f רציפה בקטע I אז f אינטגרבילית בקטע I.
5. פונקציה f שהיא פונקציה חסומה בקטע I, ורציפה בכל קטע פרט אולי למספר סופי של נקודות, היא אינטגרבילית בקטע.


יום חמישי, 19 במרץ 2020

אלגברה לינארית 2 רמה של אוניברסיטה חומר כל מה שצריך לדעת האוניברסיטה הפתוחה

אלגברה לינארית 2  רמה של אוניברסיטה, האוניברסיטה הפתוחה, כל מה שצריך לדעת

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

1. מכפלה פנימית סטנדרטית במרחב V=ℝ^n או V=ℂ^n
x,y∈ℝ^n
x*y=n∑i=1 [xi*yi]

x,y^n
x*y=n∑i=1 [xi*צמוד(yi)]

2. הכללה ראשונה:
V=^n
x=(x1,...,xn)
y=(y1,...,yn)
(x,y)=n∑i=1 [λi*xi*yi]
λi>0
i=1,...,n

3. הכללה נוספת:
F=
V=span{v1,...,vn}
{v1,...,vn} קבוצה בת"ל
B={vi}
1≤i≤n
כאשר B מהווה בסיס ל-V.

X=n∑i=1 xi*vi
כלומר את הווקטור X אפשר להציג כצירוף לינארי עם הבסיס B, כאשר xi הם הקואורדינטות שלו.

y=n∑i=1 yi*vi


(x,y)=n∑i=1 [xi*yi]



דוגמה פשוטה:
V=ℝ^2
dim()V=2

x=(x1,x2)
y=(y1,y2)

נגדיר את המכפלה הפנימית:
(x,y)=(x1y1-x2y1-x1y2+2*x2y2)

האם נוסחה זו מהווה מכפלה פנימית במרחב דו ממדי V=ℝ^2?

פתרון:

(x,y)=a11*x1y1+a12*x2y1+a21*x1y2+a22*x2y2

כאשר:
A=
a11    a12
a21    a22
=
 1    -1
-1     2

כל לראות כי המטריצה A שווה למטריצה המשוחלפת:

A=A^t

לכן לפי משפט ידוע הפונקציה:
(x,y)= ∑(1≤i,j≤n) [aij*xi*yi]

מקיימת:
א) לינאריות
ב) סימטריות

לכן נשאר לבדוק (ג) חיוביות.

צריך להוכיח:
(x,x)>0
לכל
xℝ^2
x≠0

(x,x)=x1x1-x2x1-x1x2+2x2x2=(x1)^2-2(x1x2)+2(x2)^2=
=(x1)^2-2(x1x2)+(x2)^2+(x2)^2=
=[(x1)^2-2(x1x2)+(x2)^2]+(x2)^2=(x1-x2)^2+(x2)^2≥0

סכום של שני מחוברים אי שליליים הוא אפס אם כל אחד מהם הוא אפס כלומר
x2=0
x1-x2=0 ⇒ x1=x2=0

ותנאי החיוביות מתקיים.


דוגמה של מכפלה פנימית לא לפי בסיס סטנדרטי E:
E={ e1=(1,0) , e2=(0,1) }

נבחר בסיס (לא סטנדרטי):
B={v1=(1,0), v2=(1,1)}
B הוא בסיס של המרחב V=^2, כאשר:
x= x1*v1 + x2*v2
y= y1*v1 + y2*v2
כלומר x1,x2 הם הקואורדינטות המייצגות את x לפי בסיס B.
ו- y1,y2 הם הקואורדינטות המייצגות את y לפי בסיס B.

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

x=(α1,α2) = x1*(1,0) + x2*(1,1)
y=(β1,β2) = y1*(1,0) + y2*(1,1)


x2=α2
α1=x1+x2 x1=α1-α2

y2=β2
β1=y1+y2 y1=β1-β2

מצאנו את הקשר בין קוטורדינות α,β (לפי הבסיס הסטנדרטי) לקאורדינטות x,y לפי בסיס B.

בנוסחה הנתונה:

(x,y)B=x1*y1+x2y2=(α1-α2)(β1-β2)+α2*β2=
=α1β1-α1β2-α2β1+2*α2β2
כאשר:
x=(α1,α2)ℝ^2
y=(β1,β2)ℝ^2

מסקנה חשובה: אותה מכפלת פנימית ניתנת להצגה בשני אופנים שונים המיוצגים על פי שני בסיסים שונים:

לפי בסיס B:
(x,y)=x1y1+x2y2

לפי בסיס E:
(x,y)=  ∑(1≤i,j≤n) [aij *xi*yi]
כאשר המקדמים:
A=[aij]=
 1    -1
-1     2

הערה: לגבי השאלה האחרונה:
B={v1,v2}
כאשר B בסיס של R^2.

הגדרנו מכפלה פנימית:

(x,y)=x1*y1+x2*y2
לכל
x=x1*v1 + x2*v2
y=y1*v1 + y2*v2
ביחס למכפלה פנימית הזאת הבסיס B הוא בסיס אורתונורמלי ביחס למכפלה הפנימית.

זאת אומרת:
(v1,v1)=)(v2,v2)=1
(V1,v2)=(v2,v1)=0
בסיס אורתוגונלי

הגודל של כל ווקטור לפי בסיס זה הוא 1.
||v1||=1
v1*v2=0



הגדרה כללית:
בסיס אורתונורמלי במרחב מכפלה פנימית V:
נניח dimV=n (מרחב סופי)
B={v1,...,vn} ⇔
(vi,vj)=
if i=j     1
if i≠j     0

הפירוש הגיאומטרי:
||vi||=√(vi,vi)=1
vi⊥vj (i≠j)

המצב הכי פשוט:
מ"פ סטנדרטית לפי בסיס סטנדרטי של R^2 ושל R3.

גאומטריה אנליטית ומרחבי מכפלה פנימית
דוגמאות ב-R^3, R^3 ובמרחב הפולינומים.


תרגיל v=R^3
נסמן
U=Span {(1,2,3)}^
U⊆R^3

א) מצאו בסיס אורתוגונלי של המרחב U.
ב) מצאו את ההיטל של 
v=(1,1,1)
על המרחב U.
ג. מצאו את המרחק מהנקודה V למישור U.

פתרון:
נפרש את הביטוי
U=Span {(1,2,3)}^
ונבין מה הקטריונים של להיות שייך למרחב U כפי שהוא מוצג לעיל:
U={v∈R^3 : v⊥(1,2,3)}
v=(x,y,z)∈U ⇔ v⊥(1,2,3) ⇔ v*(1,2,3)=0
⇔ (x,y,z)(1,2,3)=0

x+2y+3z=0
מערכת משוואות הומוגנית 1x3 (שורה אחת עם שלוש עמודות).

לכן U תת מרחב של R^3, בעל מימד 2 (יש 2 משתנים חופשיים).

א. נימצא בסיס של U.
y=t1
z=t2
⇒x=-2t-3t2


       x     -2t1-3t2               -2                -3
v=   y =       t1         = t1      1      +  t2   0 
           z           t2                    0                 1


קיבלנו בסיס של המרחב U:  
             -2               -3
B={w1=  1   ,  w2=   0  }
              0                 1
מתברר כי לא מתקיים
w1⊥w2=0
כי
(-2,1,0)*(-3,0,1)=6≠0


לכן לא מקיים תכונות של בסיס אורתוגונלי.

אנו צריכים לשנות את הבסיס של U
 {w1,w2} 


על מנת להפוך אותו לבסיס אורתונורמלי.

נעשה את זה על ידי תהליך גרם-שמיט, ונקבל בסוף בסיס אורתוגונלי של U.

שלב א':
נגדיר בסיס חדר של U:
B={v1,v2}
לפי הנוסחאות הבאות:
v1=w1
(269 ג')
v2=w2 -((w2,v1))/((v1,v1))*v1 = w2-t*v1

הסבר מאוד פשוט, נובע גם מהמשפט הכללי של גרם-שמיט, לא צריך להוכיח אותו במבחן)
(v1,v2)=(v1,w2-t*v1)=(v1,w2)-t(v1,v1)=
(v1,w2)-[((w2,v1))/((v1,v1))] *(v1,v1)=(v1,w2)-(w2,v1)=0

מסקנה קיבלנו בסיס אורתוגונלי של U.
סיום: לנרמל את הבסיס:
B*={v1/||v1|| , v2/||v2||  }

                  -2             
v1=w1=   1
                0



                      -2     -3
                       1  *   0
         -2           0      1        -3         -2    6
v2=    1  -      ______   *     0  =      1 -  _   =
          0          -3     -3         1          0    10
                       0  *   0
                       1      1
       -1/5
v2=   1
        -3/5

                       
f1= v1/||v1|| = ...
f2=.v2/||v2|| =...

ב) כדי למצוא את ההיטל, נשתמש בבסיס האורתוגונלי של R^3:
נסמן ב-
B={N,f1,f2}
N הוא ווקטור מאונך ל-U ולכן:
(N,f1)=(N,f2)=0
בנוסף הוכחנו בסעיף א' שמתקיים
(f1,f2)=0
ולכן הבסיס B מהווה בסיס אורתוגונלי למרחב.

נציג את 
v=(1,1,1)
לפי הבסיס B:

(כל הווקטורים מאונכים זה לזה בזוגות)
v= a*N+b*f1+cf2
כאשר a,b,c הם קואורדינטות לפי בסיס B.

(v,f1)= (a*N+b*f1+cf2, f1) = b*(f1,f1)=b*||f1||^2
⇒b= (v,f)/||f1||^2

ובאותו אופן:

c=(v1,f2)/||f2||^2

וכתוצאה מקבלים את ההיטל v:
Pr(U)(v)=bf1+cf2



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

נגדיר T:V→V טרנספורמציה לינארית (ט"ל) במרחב מכפלה פנימית (ממ"פ) V.
כמו כן נגדיר u,v∈V ווקטורים.

הפונקציה T קולטת איזשהו ווקטור ב-V, ופולטת איזשהו ווקטור ב-V.

נניח והיא קולטת את הווקטור u, אזי נרשום: Tu.

לכן אפשר להגיד כי המכפלה הפנימית (המ"פ) שלהלן מוגדרת והיא אכן מחזירה סקלר:
(Tu,v)

בהתאם לכך יצרנו פונקציה: שהתחום שלה הוא הווקטורים u,v והטווח שלה הוא  (Tu,v)
u,v → (Tu,v)
שבסופו של דבר קולטת זוג סדור מ-הממ"פ V, ופולטת סקלר ב-F.

ישנה ייחודיות לפונקצייה:
(Tu,v)=(Su,v) ⇔ S=T


הגדרה: הטרנספורמציה צמודה
יהי V ממ"פ, תהיינה T,S ט"ל V→V, אם מתקיים:
∀u,v∈V (Tu,v)=(u,Sv)
אז S נקראת הטרנספורמציה הצמודה של T.

ומתקיים גם:
∀u,v∈V (Su,v)=(u,Tv)
T היא הטרנספורמציה הצמודה של S.

בסיכום:
T היא הטרנספורמציה הצמודה של S וגם S הוא הטרנספורמציה הצמודה של T.

נתונה לנו ט"ל T בממ"פ V:
(Tu,v)
אנו רוצים למצוא ט"ל S בממ"פ V שתקיים:
(Tu,v)=(u,Sv)
יהי V ממ"פ ו u,v∈V.
ניקח בסיס אורתונורמלי של V:
B=span{b1,...,bn}
 נציג את u כצ"ל של בסיס B:
u= α1*b1 +...+αn*bn = ∑αi *bi

נציג את Tu כצ"ל של בסיס B:
Tu=α1*Tb1 +...+αn*Tbn = αi*Tbi

(Tu,v) = αi(Tbi,v)

נחפש טרנספורמציה לינארית S, שהצ"ל שלה לפי בסיס B הוא:
Sv=βi*bi 

נציג את המכפלה הפנימית:
(u,Sv)=αi *bi βi*bi
חלק מודגש הוא הווקטור u
והחלק עם קו תחתון הוא הווקטור Sv

מכיוון שמדובר בבסיס אורתונורמלי: מתקיים:
bi*bi=1
⇒(u,Sv)=αi* βi