Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.
|
complex [2015/07/01 02:28] gbdivers |
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> | ||
| - | |||
| - | 1. vérifie que i² = -1 | ||
| - | 2. notation dans la console : affiche (reel, 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 notation 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]] ^ | ||