Ένας μιγαδικός αριθμός εκφράζεται με τη μορφή z = a + b * i, όπου:
το a είναι το πραγματικό μέρος (ένας πραγματικός αριθμός),
το b είναι το φανταστικό μέρος (επίσης ένας πραγματικός αριθμός), και
το i είναι η φανταστική μονάδα που ικανοποιεί τη σχέση i^2 = -1.
Ο συζυγής του μιγαδικού αριθμού z = a + b * i δίνεται από τη σχέση:
zc = a - b * i
Η απόλυτη τιμή (ή μέτρο) του z ορίζεται ως:
|z| = sqrt(a^2 + b^2)
Το τετράγωνο της απόλυτης τιμής υπολογίζεται ως το γινόμενο του z και του συζυγούς του zc:
|z|^2 = z * zc = a^2 + b^2
Το άθροισμα δύο μιγαδικών αριθμών z1 = a + b * i και z2 = c + d * i υπολογίζεται προσθέτοντας χωριστά τα πραγματικά και τα φανταστικά μέρη τους:
z1 + z2 = (a + b * i) + (c + d * i)
= (a + c) + (b + d) * i
Η διαφορά δύο μιγαδικών αριθμών προκύπτει αφαιρώντας τα αντίστοιχα μέρη τους:
z1 - z2 = (a + b * i) - (c + d * i)
= (a - c) + (b - d) * i
Το γινόμενο δύο μιγαδικών αριθμών ορίζεται ως:
z1 * z2 = (a + b * i) * (c + d * i)
= (a * c - b * d) + (b * c + a * d) * i
Ο αντίστροφος ενός μη μηδενικού μιγαδικού αριθμού δίνεται από τη σχέση:
1 / z = 1 / (a + b * i)
= a / (a^2 + b^2) - b / (a^2 + b^2) * i
Η διαίρεση ενός μιγαδικού αριθμού με έναν άλλον δίνεται από τη σχέση:
z1 / z2 = z1 * (1 / z2)
= (a + b * i) / (c + d * i)
= (a * c + b * d) / (c^2 + d^2) + (b * c - a * d) / (c^2 + d^2) * i
Η ύψωση του e (της βάσης του φυσικού λογάριθμου) σε μιγαδικό εκθέτη μπορεί να εκφραστεί με τον τύπο του Euler:
e^(a + b * i) = e^a * e^(b * i)
= e^a * (cos(b) + i * sin(b))
Δεδομένου ότι δεν πρέπει να χρησιμοποιήσεις την ενσωματωμένη υποστήριξη για μιγαδικούς αριθμούς, υλοποίησε τις παρακάτω πράξεις:
Όρισε μια πλειάδα cmplx με υποδοχές real και imaginary. Οι προσπελαστές των υποδοχών real>> και imaginary>> δίνονται δωρεάν με τον ορισμό της πλειάδας και είναι αυτοί που χρησιμοποιούν τα tests για να διαβάζουν τα components.
<cmplx> ( real imag -- cmplx ): κατασκευάζει έναν μιγαδικό αριθμό.>cmplx ( pair -- cmplx ): φτιάχνει ένα cmplx από { real imaginary }.cmplx>pair ( cmplx -- pair ): επιστρέφει { real imaginary }.c+ ( a b -- c ), c- ( a b -- c ), c* ( a b -- c ),
c/ ( a b -- c ): αριθμητικές πράξεις μεταξύ δύο μιγαδικών αριθμών.c-abs ( a -- |a| ): απόλυτη τιμή (πραγματικός αριθμός).c-conj ( a -- a* ): συζυγής μιγαδικός.c-exp ( z -- e^z ): μιγαδική εκθετική.Οι γενικές λέξεις MATH: του Factor (+, -, *, /) δρομολογούνται μόνο πάνω στην ενσωματωμένη μαθηματική ιεραρχία, γι' αυτό αυτή η άσκηση χρησιμοποιεί ειδικά ονόματα λέξεων αντί για μεθόδους σε αυτές τις γενικές λέξεις.
Τα tests για αριθμητική που συνδυάζει πραγματικούς με μιγαδικούς αριθμούς εξαιρούνται, καθώς κάθε πράξη εδώ είναι μεταξύ δύο τιμών cmplx.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Factor με 47 έννοιες163 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.