Różnice między wybraną wersją a wersją aktualną.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
liczby_zespolone_complex [2008/11/09 15:10] lromanow |
liczby_zespolone_complex [2008/11/09 16:47] lromanow |
||
---|---|---|---|
Linia 1: | Linia 1: | ||
==== Liczby zespolone <complex> ==== | ==== Liczby zespolone <complex> ==== | ||
+ | ---- | ||
- | The class complex is a template class, used to create objects for representing and manipulating complex numbers. The operations defined on complex numbers allow them to be freely intermixed with the other numeric types available in the C++ language, thereby permitting numeric software to be easily and naturally expressed. | + | |
+ | Klasa szablonowa **complex** służy do reprezentacji i manipulacji liczbami zespolonymi. Operacje zdefiniowane na liczbach zespolonych pozwalają na swobodne mieszanie obiektów tej klasy z wbudowanymi typami numerycznymi. Należy zauważyć, że większość operacji wykonywanych na obiektach tej klasy to zwykłe funkcje. Wyjątkami są metody //real()// i //imag()// należące do klasy **complex**. | ||
+ | |||
+ | === Deklaracja liczb zespolonych === | ||
+ | ---- | ||
+ | |||
+ | Argument szablonu określa typ związany z wartościami części rzeczywistej i urojonej obiektu. Ten argument musi być jednym z trzech dostępnych typów zmiennoprzecinkowych **float**, **double** lub **long double**. | ||
+ | |||
+ | Dostępne są cztery konstruktory. Konstruktor bezparametrowy inicjalizuje obie części liczby zespolonej wartością zero. Konstruktor jednoargumentowy incjalizuje wartością parametru część rzeczywistą i zeruje urojoną. Konstruktor dwuargumentowy inicjalizuje obie części liczby zespolonej. Ostatecznie, konstruktor kopiujący pozwala inicjalizować obiekt wartościami innego dostępnego obiektu klasy. | ||
+ | |||
+ | <code cpp> | ||
+ | complex<float> cplx_one; // wartość 0 + 0i | ||
+ | complex<float> cplx_two(3.14); // wartość 3.14 + 0i | ||
+ | complex<float> cplx_three(1.5, 3.14) // wartość 1.5 + 3.14i | ||
+ | complex<float> cplx_four(cplx_two); // wartość również 3.14 + 0i | ||
+ | </code> | ||
+ | |||
+ | Liczbie zespolonej **complex** można przypisać wartość innej liczby zespolonej. Ponieważ konstruktor jednoargumentowy jest również wykorzystywany jako operator konwersji, można przypisać liczbie zespolonej wartość rzeczywistą. | ||
+ | |||
+ | <code cpp> | ||
+ | cplx_one = cplx_three; // staje się 1.5 + 3.14i | ||
+ | cplx_three = 2.17; // staje się 2.17 + 0i | ||
+ | </code> | ||
+ | |||
+ | Funkcja //polar()// może służyć do konstrukcji liczby zespolonej dla danego modułu i kąta. | ||
+ | |||
+ | <code cpp> | ||
+ | cplx_four = polar(5.6, 1.8); | ||
+ | </code> | ||
+ | |||
+ | Wartość sprzężona powstaje z użyciem funkcji //conj()//. | ||
+ | |||
+ | <code cpp> | ||
+ | complex<float> cplx_five = conj(cplx_four); | ||
+ | </code> | ||
+ | |||
+ | === Dostęp do wartości liczby zespolonej === | ||
+ | ---- | ||
+ | |||
+ | Metody klasy **complex** //real()// i //imag()// zwracają wartości odpowiednio części rzeczywistej i urojonej liczby zespolonej. Funkcje te można również wywołać jako zwykłe funkcje z obiektem klasy **complex** jako argument. | ||
+ | |||
+ | <code cpp> | ||
+ | // poniższy kod powinien dać ten sam rezulatat | ||
+ | cout << cplx_one.real() << "+" << cplx_one.imag() << "i" << endl; | ||
+ | cout << real(cplx_one) << "+" << imag(cplx_one) << "i" << endl; | ||
+ | </code> | ||
+ | |||
+ | === Operatory artmetyczne === | ||
+ | ---- | ||
+ | |||
+ | Operatory artmetyczne //+//, //-//, //*// oraz ///// mogą być używane zgodnie z przyjętą konwencją. Wszystkie przyjmują jako argumenty albo dwie liczby zespolone albo liczbę zespoloną i wartość rzeczywistą. Ponadto zdefiniowane są dla każdego z nich operatory przypisania. | ||
+ | |||
+ | <code cpp> | ||
+ | cout << cplx_one + cplx_two << endl; // wartość ??? | ||
+ | cout << cplx_one - 3.14 << endl; // wartość ??? | ||
+ | cout << 2.75 * cplx_two << endl; // wartość ??? | ||
+ | cplx_one += cplx_three / 2.0; // wartość ??? | ||
+ | </code> | ||
+ | |||
+ | Operatory jednoargumentowe //+// i //-// również można używać. | ||
+ | |||
+ | <code cpp> | ||
+ | cout << -cplx_one << endl // wartość ??? | ||
+ | </code> | ||
+ | |||
+ | \\ | ||
+ | ---- | ||
+ | [[biblioteka_standardowa]] |