przejście do zawartości
zpr c++ quick reference
Narzędzia użytkownika
Zarejestruj się!
Zaloguj
Narzędzia witryny
Narzędzia
Pokaż stronę
Poprzednie wersje
Odnośniki
Ostatnie zmiany
Menadżer multimediów
Indeks
Zaloguj
Zarejestruj się!
Ostatnie zmiany
Menadżer multimediów
Indeks
Ślad:
•
queue
liczby_zespolone_complex
Ta strona jest tylko do odczytu. Możesz wyświetlić źródła tej strony ale nie możesz ich zmienić.
====== Liczby zespolone <complex> ====== 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 również 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 fazy 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> 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> ===== Porównywanie wartości ===== Dwie liczby zespolone ''**complex**'' mogą być przetestowane na równość lub nierówność wykorzystując operatory ''=='' i ''!=''. Dwie wartości są równe, gdy odpowiadające sobie części liczby są sobie równe. <code cpp> cout << cplx_one == cplx_three << endl; // wartość false cout << cplx_one != cplx_three << endl; // wartość true </code> Liczby zespolone nie mogą być porównywane za pomocą innych operatorów. ===== Strumienie I/O ===== Liczby zespolone klasy ''**complex**'' mogą być pisane do strumienia bądź z niego czytane wykorzystując przyjętą konwencję dla strumieni I/O. Wartość pisana jest do strumienia w nawiasach jako ''(u,v)''. Wartość jest czytana ze strumienia jako dwie wartości numeryczne oddzielone przecinkiem i otoczone nawiasami. ===== Wartość normalna i moduł ===== Funkcja ''norm()'' zwraca normę liczby zespolonej, która odpowiada sumie kwadratów części rzeczywistej i urojonej. Funkcja ''abs()'' zwraca moduł, który jest pierwiastkiem kwadratowym normy liczby zespolonej. <code cpp> cout << norm(cplx_two) << endl; cout << abs(cplx_two) << endl; </code> Kąt fazowy liczby zespolonej można uzyskać za pomocą funkcji ''arg()''. <code cpp> cout << cplx_four << " w postaci biegunowej wynosi" << abs(cplx_four) << "e-" << arg(cplx_four) << endl; </code> ===== Funkcje trygonometryczne ===== Funkcje tryugonometryczne zdefiniowane dla typów zmiennoprzecinkowych zostały rozszerzone dla liczb zespolonych. Dotyczy to funkcji ''sin()'', ''cos()'', ''tan()'', ''sinh()'', ''cosh()'' i ''tanh()''. Każda z nich bierze jako argument liczbę zespoloną **complex** i zwraca również liczbę zespoloną. ===== Inne funkcje ===== Podobnie jak funkcje trygonometryczne funkcje ''exp()'', ''log()'', ''log10()'' i ''sqrt()'' zostały rozszerzone dla liczb zespolonych. Jako argument biorą obiekt ''**complex**'' i zwracają również obiekt ''**complex**''. Biblioteka standardowa definiuje kilka wersji funkcji ''pow()''. Istnieją osobne definicje dotyczące podnoszenia liczb zespolonych do wartości całkowitej, zespolonej i rzeczywistej. Podobnie można podnosić wartość rzeczywistą do wartości ''**complex**''. ===== Przykładowy program ===== Poniższa funkcja oblicza pierwiastki kwadratowe równania o współczynnikach zespolonych. <code cpp> #include <complex> #include <utilities> typedef complex<double> Complex; pair<Complex, Complex> roots (Complex a, Complex b, Complex c) { Complex root = sqrt(b * b - 4.0 * a * c); a *= 2.0; return make_pair( (-b + root)/a, (-b - root)/a ); } </code> \\ ---- [[start]] >> [[biblioteka_standardowa]]
liczby_zespolone_complex.1226250746.txt.gz
· ostatnio zmienione: 2008/11/09 18:12 przez
lromanow
Narzędzia strony
Pokaż stronę
Poprzednie wersje
Odnośniki
Do góry