Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
complex [2015/07/19 22:12] winjerome [Nombres complexes en C++] |
complex [2020/10/06 19:10] (Version actuelle) gbdivers |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ^ [[virgule_fixe|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[ratio|Chapitre suivant]] ^ | ||
- | ====== Les nombres complexes ====== | + | <note warning>Ce cours n'est plus à jour, il est préférable de ne pas le suivre. Je vous recommande le cours sur Zeste de Savoir : https://zestedesavoir.com/tutoriels/822/la-programmation-en-c-moderne/.</note> |
- | ===== Rappels mathématiques ===== | ||
- | https://fr.wikipedia.org/wiki/Nombre_complexe | ||
- | |||
- | ===== Nombres complexes en C++ ===== | ||
- | |||
- | <code cpp main.cpp> | ||
- | #include <iostream> | ||
- | #include <complex> | ||
- | using namespace std::literals; | ||
- | |||
- | int main() { | ||
- | std::cout << "i * i = " << (1.0i * 1.0i) << std::endl; | ||
- | std::cout << "2+3i = " << (2.0 + 3.0i) << std::endl; | ||
- | } | ||
- | </code> | ||
- | |||
- | affiche : | ||
- | |||
- | <code> | ||
- | i * i = (-1,0) | ||
- | (2,3) | ||
- | </code> | ||
- | |||
- | - vérifie que i² = -1 | ||
- | - notation dans la console : affiche (réel, imaginaire) | ||
- | |||
- | Note : création d'un type masqué : ''std::complex<double>'' | ||
- | |||
- | Remarque : on peut additionner un réel et un complexe, mais pas un entier et un complexe : | ||
- | |||
- | <code cpp main.cpp> | ||
- | #include <iostream> | ||
- | #include <complex> | ||
- | using namespace std::literals; | ||
- | |||
- | int main() { | ||
- | std::cout << (1 + (2.0 + 3.0i)) << std::endl; | ||
- | } | ||
- | </code> | ||
- | |||
- | affiche (et beaucoup de messages ensuite) : | ||
- | |||
- | <code> | ||
- | main.cpp: In function 'int main()': | ||
- | main.cpp:6:21: error: no match for 'operator+' (operand types are 'int' and 'std::complex<double>') | ||
- | std::cout << (1 + (2.0 + 3.0i)) << std::endl; | ||
- | ^ | ||
- | </code> | ||
- | |||
- | En utilisant un réel (notez bien le point ajouté sur 1) : | ||
- | |||
- | <code cpp main.cpp> | ||
- | #include <iostream> | ||
- | #include <complex> | ||
- | using namespace std::literals; | ||
- | |||
- | int main() { | ||
- | std::cout << (1.0 + (2.0 + 3.0i)) << std::endl; | ||
- | } | ||
- | </code> | ||
- | |||
- | affiche (et beaucoup de messages ensuite) : | ||
- | |||
- | <code> | ||
- | (3,3) | ||
- | </code> | ||
- | |||
- | Fonctions : | ||
- | |||
- | <code cpp main.cpp> | ||
- | #include <iostream> | ||
- | #include <complex> | ||
- | using namespace std::literals; | ||
- | |||
- | int main() { | ||
- | std::cout << real(2.0 + 3.0i) << std::endl; | ||
- | std::cout << imag(2.0 + 3.0i) << std::endl; | ||
- | std::cout << abs(2.0 + 3.0i) << std::endl; | ||
- | std::cout << arg(2.0 + 3.0i) << std::endl; | ||
- | std::cout << norm(2.0 + 3.0i) << std::endl; | ||
- | std::cout << conj(2.0 + 3.0i) << std::endl; | ||
- | std::cout << proj(2.0 + 3.0i) << std::endl; | ||
- | std::cout << polar(2.0 + 3.0i) << std::endl; | ||
- | } | ||
- | </code> | ||
- | |||
- | affiche : | ||
- | |||
- | <code> | ||
- | 2 | ||
- | 3 | ||
- | 3.60555 | ||
- | 0.982794 | ||
- | 13 | ||
- | (2,-3) | ||
- | (2,3) | ||
- | ((2,3),(0,0)) | ||
- | </code> | ||
- | |||
- | Note : plusieurs notations pour i : ''i'' pour double (réels 64b), ''if'' pour les floats (réels 32b) et ''il'' pour les long double (128b) | ||
- | |||
- | |||
- | ^ [[virgule_fixe|Chapitre précédent]] ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[ratio|Chapitre suivant]] ^ |