Narzędzia użytkownika

Narzędzia witryny


liczby_zespolone_complex

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
liczby_zespolone_complex [2008/11/09 15:19]
lromanow
liczby_zespolone_complex [2008/11/09 17:31]
lromanow
Linia 1: Linia 1:
 ====== Liczby zespolone <​complex>​ ====== ====== 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**. 
  
-== xxx ==+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>
 +   // 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>​
 +
 +=== 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 podobnie liczbę zespoloną.
 +
 +=== Inne funkcje ===
 +
 +Podobnie jak funkcje trygonometryczne funkcje ''​exp()'',​ ''​log()'',​ ''​log10()''​ i ''​sqrt()''​ zostały rozszerzone dla liczb zespolonych. Jako argument biorą liczbę ''​**complex**''​ i zwracają również ''​**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ść rzczywistą do wartości ''​**complex**''​.
 +
 +==== ====
 +----
 +[[start]] >> [[biblioteka_standardowa]]
liczby_zespolone_complex.txt · ostatnio zmienione: 2008/11/10 18:31 przez lromanow