בהמשך לטיפ של אתמול,
טיפוס נוסף שהתווסף בFramework 4.0 לSystem.Numerics הוא הטיפוס Complex. זהו struct המייצג מספר מרוכב. הדבר נועד לחסוך מאיתנו מימוש עבודה עם מספרים מרוכבים בעצמנו.
קיימים implicit casts מהטיפוסים הנומריים הפרימיטיביים לComplex:
|
|
אם אנחנו בכל זאת רוצים לאתחל מספר מרוכב שאינו ממשי, נוכל להשתמש בConstructor המתאים:
|
|
שימו לב שדרסו את ToString כך שהוא ידפיס את הקואורדינאטות של המספר.
באופן צפוי, כל האופרטורים הסטנדרטיים ממומשים:
|
|
שהרי $ (1 + 2i) \cdot (1 + 2i) = 1^2 + 2 \cdot 2 \cdot i + 2^2 \cdot i^2 = 1 + 4 \cdot i - 4 = -3 + 4 \cdot i $
עוד דוגמה:
|
|
שהרי $ \displaystyle{\frac{2}{1 + i} = 1 - i} $
נוכל גם לאתחל מספר מרוכב באמצעות הרכבת אופרטורים:
|
|
שימו לב שComplex.ImaginaryOne מייצג את המספר המרוכב $ i $ (היחידה המדומה).
בנוסף, נוכל לעבור הצגה פולרית בקלות:
|
|
גם כל הפונקציות האלמנטאריות (פונקציות טריגונומטריות ואקספוננט של מספרים מרוכבים) ממומשות לנו בתור פונקציות סטטיות של המחלקה:
למשל, חישוב צמוד של מרוכב:
|
|
נוכל גם לבדוק את זהות אוילר:
|
|
דברים שימושיים (או סתם מגניבים) שאפשר לעשות עם זה:
- חישוב פונקציות טריגונומטריות בעזרת שיטת CORDIC - ראו טיפ מספר 343.
- חישוב שורשים מרוכבים של פונקציות באמצעות שיטת ניוטון רפסון - ראו גם טיפ מספר 341.
- ציור פרקטלים, למשל קבוצת מנדלברוט ו פרקטלי ניוטון
המשך יום מרוכב