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 17:36] lromanow |
liczby_zespolone_complex [2008/11/09 19:35] lromanow |
||
---|---|---|---|
Linia 11: | Linia 11: | ||
<code cpp> | <code cpp> | ||
- | complex<float> cplx_one; // wartość 0 + 0i | + | complex<double> cplx_one; // wartość 0 + 0i |
- | complex<float> cplx_two(3.14); // wartość 3.14 + 0i | + | complex<double> cplx_two(3.14); // wartość 3.14 + 0i |
- | complex<float> cplx_three(1.5, 3.14) // wartość 1.5 + 3.14i | + | complex<double> cplx_three(1.5, 3.14) // wartość 1.5 + 3.14i |
- | complex<float> cplx_four(cplx_two); // wartość również 3.14 + 0i | + | complex<double> cplx_four(cplx_two); // wartość również 3.14 + 0i |
</code> | </code> | ||
Linia 33: | Linia 33: | ||
<code cpp> | <code cpp> | ||
- | complex<float> cplx_five = conj(cplx_four); | + | complex<double> cplx_five = conj(cplx_four); |
</code> | </code> | ||
Linia 41: | Linia 41: | ||
<code cpp> | <code cpp> | ||
- | // poniższy kod powinien dać ten sam rezulatat | ||
cout << cplx_one.real() << "+" << cplx_one.imag() << "i" << endl; | cout << cplx_one.real() << "+" << cplx_one.imag() << "i" << endl; | ||
cout << real(cplx_one) << "+" << imag(cplx_one) << "i" << endl; | cout << real(cplx_one) << "+" << imag(cplx_one) << "i" << endl; | ||
Linia 51: | Linia 50: | ||
<code cpp> | <code cpp> | ||
- | cout << cplx_one + cplx_two << endl; // wartość ??? | + | cout << cplx_one + cplx_two << endl; // wartość 4.64+3.14i |
- | cout << cplx_one - 3.14 << endl; // wartość ??? | + | cout << cplx_one - 3.14 << endl; // wartość -1.64+3.14i |
- | cout << 2.75 * cplx_two << endl; // wartość ??? | + | cout << 2.75 * cplx_two << endl; // wartość 8.635+0i |
- | cplx_one += cplx_three / 2.0; // wartość ??? | + | cout << (cplx_one += cplx_three / 2.0) << endl; // wartość 2.585+3.14i |
</code> | </code> | ||
Linia 60: | Linia 59: | ||
<code cpp> | <code cpp> | ||
- | cout << -cplx_one << endl; // wartość ??? | + | cout << -cplx_one << endl; // wartość -2.585-3.14i |
</code> | </code> | ||
Linia 68: | Linia 67: | ||
<code cpp> | <code cpp> | ||
- | cout << cplx_one == cplx_three << endl; // wartość false | + | cout << (cplx_one == cplx_three) << endl; // wartość 0 (fałsz) |
- | cout << cplx_one != cplx_three << endl; // wartość true | + | cout << (cplx_one != cplx_three) << endl; // wartość 1 (prawda) |
</code> | </code> | ||
- | Liczby zespolone nie mogą być porównywane za pomocą innych operatorów. | + | Liczby zespolone nie mogą być porównywane za pomocą innych operatorów, niedostępne są operatory porządkujące. |
===== Strumienie I/O ===== | ===== Strumienie I/O ===== | ||
Linia 90: | Linia 89: | ||
<code cpp> | <code cpp> | ||
- | cout << cplx_four << " w postaci biegunowej wynosi" | + | cout << cplx_four << " w postaci biegunowej wynosi " |
- | << abs(cplx_four) << "e-" << arg(cplx_four) << endl; | + | << abs(cplx_four) << "e^" << arg(cplx_four) << "i"<< endl; |
</code> | </code> | ||
Linia 100: | Linia 99: | ||
===== Inne funkcje ===== | ===== 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**''. | + | 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ść rzczywistą do wartości ''**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 ===== | ||
+ | |||
+ | W poniższym kodzie zebrano przykłady dostępne na tej stronie opisujące podstawowe funkcje klasu ''**complex**''. Ponadto dodano prostą funkcję obrazującą przykładowe zastosowanie klasy w celu obliczenia pierwiastków funkcji kwadratowej 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]] | [[start]] >> [[biblioteka_standardowa]] |