תכנות נומרי עם Matlab ו-Octave/מספרים מרוכבים

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי


להעביר לנספחים

הקדמה


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




כדאי לדעת:

דף זה דורש ידע קודם במספרים מרוכבים. כדאי לקרוא את הספר מספרים מרוכבים.



ניצור מספר מרוכב:

octave:16> x=3+4i
x =  3 + 4i

ונבדוק מיהו:

octave:17> whos x

*** local user variables:

  Prot Name        Size                     Bytes  Class
  ==== ====        ====                     =====  ===== 
   rwd x           1x1                         16  double

Total is 1 element using 16 bytes

פעולות חישוב[עריכה]

ניתן לבצע פעולות חשבוניות על וקטורים עם מספרים ממשיים:

octave:9> x=3+2i;
octave:10> x+4
ans =  7 + 2i
octave:11> x*2
ans =  6 + 4i

ואף עם וקטורים אחרים:

octave:12> y=2+4i
y =  2 + 4i
octave:13> x+y
ans =  5 + 6i
octave:14> x*y
ans =  -2 + 16i

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

octave:21> a=1;b=2;
octave:22> x=a+b*i
x =  1 + 2i


שימו לב:

שימו לב לפעולת הכפל בין b ל i לא ניתן לחבר בין האיברים ללא כפל (כמו במתמטיקה) כי אז התוכנה תחפש משתנה בשם bi .
i הוא קבוע הקיים בתוכנה (שערכו שורש של 1-). אם נגדיר משתנה בשם i לא נקבל מספר מרוכב. 
octave:25> i=5;
octave:26> x=a+b*i
x =  11

ולכן נמחק את המשתנה i ונריץ שוב את הפקודה:

octave:27> clear i
octave:28> x=a+b*i
x =  1 + 2i

שימו לב:

כאשר כותבים תוכנית שמשתמשת במספרים מרוכבים, רצוי לאתחל את i בתחילת התוכנית, ולא להשתמש במשתנה (להציב איברים לתוכו)

וקטורים ומטריצות[עריכה]

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

octave:32> a=[1+5i,2+3i,4+2i;3+2i,2+2i,4+4i]
a =

   1 + 5i   2 + 3i   4 + 2i
   3 + 2i   2 + 2i   4 + 4i

מה יקרה אם נבנה מערך שחלר מאיבריו הם מספרים מרוכבים והשאר מספרים ממשיים ?

octave:34> a=[1+5i,pi,4+2i;e,2+2i,4]
a =

   1.0000 + 5.0000i   3.1416 + 0.0000i   4.0000 + 2.0000i
   2.7183 + 0.0000i   2.0000 + 2.0000i   4.0000 + 0.0000i

במקרה הזה התוכנה תתייחס לכל המספרים כאל מרוכבים ותוסיף חלק המדומה 0i

שחלוף[עריכה]

האם ניתן לשחלף מטריצה של מספרים מרוכבים ? ננסה :


octave:32> a=[1-5i,2+3i,4+2i;3+2i,2-2i,4+4i]
a =

   1 - 5i   2 + 3i   4 + 2i
   3 + 2i   2 - 2i   4 + 4i

octave:33> a'
ans =

   1 + 5i   3 - 2i
   2 - 3i   2 + 2i
   4 - 2i   4 - 4i

שחלוף מטריצה מרוכבת הופך את אברי המטריצה לצמוד המרוכב שלהם

אבל רצינו מטריצה משוחלפת! לשם כך נוסיף נקודה לפני הגרש .'


octave:33> a.'
ans =

   1 - 5i   3 + 2i
   2 + 3i   2 - 2i
   4 + 2i   4 + 4i

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

פונקציות למספרים מרוכבים[עריכה]

complex[עריכה]

  • הפונקציה מקבלת שבר עשרוני והופכת אותו למספר מרוכב.
  • הפונקציה מקבלת חלק מדומה וממשי ומציגה אותם כמספר מרוכב.
complex(0.886)
ans =  0.88600 + 0.00000i
 complex(3,4)
ans =  3 + 4i

real[עריכה]

מחזירה את החלק האמיתי של המספר המרוכב.

z=4+5i;
real(z)
ans =  4

imag[עריכה]

מחזירה את החלק המדומה של המספר המרוכב..

imag(z)
ans =  5

כדאי לדעת:

קיימת פונקציה שונה שנקראת image, לא להתבלבל..

angle / arg[עריכה]

הפונקציות מחזירות את הזוית בין החלק המדומה לממשי.

 angle(z)
ans =  0.89606

conj[עריכה]

הפונקציה מחזירה את הצמוד המרוכב (conjugate) לדוגמה:

 conj(1+3i)
ans =  1 - 3i


הפרק הקודם:
מערכים
מספרים מרוכבים הפרק הבא:
רשומות