La classe complex in C++
Nella programmazione C++ la classe <complex> fornisce un modo per rappresentare e manipolare numeri complessi.
<complex>
Si tratta di una classe della libreria standard.
Quindi, per utilizzare i numeri complessi in un programma devi includere l'header <complex>.
Un numero complesso, come forse saprai, è un numero che può essere espresso nella forma \(a + bi\), dove \(a\) e \(b\) sono numeri reali, e \(i\) è l'unità immaginaria, che ha la proprietà di \(i^2 = -1\).
Ecco un esempio pratico.
- #include <complex>
- #include <iostream>
- int main() {
- // Un numero complesso non inizializzato
- std::complex<double> num1;
- // Un numero complesso 3 + 4i
- std::complex<double> num2(3.0, 4.0);
- // Stampa i numeri complessi
- std::cout << "num1: " << num1 << "\n";
- std::cout << "num2: " << num2 << "\n";
- return 0;
- }
In questo esempio, "num1" è un numero complesso non inizializzato, mentre "num2" è inizializzato a \(3 + 4i\).
I numeri complessi in C++ supportano le operazioni aritmetiche di base come addizione, sottrazione, moltiplicazione e divisione.
Ecco qualche esempio di operazione tra numeri complessi.
- // Addizione
- std::complex<double> sum = num1 + num2;
- // Sottrazione
- std::complex<double> diff = num1 - num2;
- // Moltiplicazione
- std::complex<double> prod = num1 * num2;
- // Divisione
- std::complex<double> quot = num1 / num2;
Oltre a queste operazioni, la libreria complex offre anche diverse funzioni utili:
- Modulo
La funzione abs() trova il modulo del numero complesso.double modulo = std::abs(num2)
- Argomento
La funzione arg() trova l'argomento del numero complesso.double modulo = std::arg(num2)
- Forma polare
La funzione polar() converte il numero reale in forma polare. Ad esempio, per creare 1 * e^(i * π)num3 = std::polar(1.0, M_PI);
- Coniugato
La funzione cong() trova il numero coniugato.std::complex<double> coniugato = std::conj(num2);
- Norma
La funzione norm() calcola il quadrato del modulo doublenorma = std::norm(num2);
Esempio Completo
Metiamo insieme tutto ciò che abbiamo imparato in un programma di esempio:
- #include <complex>
- #include <iostream>
- int main() {
- // 3 + 4i
- std::complex<double> num1(3.0, 4.0);
- // 1 * e^(i * π)
- std::complex<double> num2 = std::polar(1.0, M_PI);
- // Operazioni
- std::complex<double> sum = num1 + num2;
- std::complex<double> diff = num1 - num2;
- // Stampa risultati
- std::cout << "Somma: " << sum << "\n";
- std::cout << "Differenza: " << diff << "\n";
- std::cout << "Modulo di num1: " << std::abs(num1) << "\n";
- std::cout << "Argomento di num2: " << std::arg(num2) << "\n";
- return 0;
- }
Questo programma crea due numeri complessi, esegue alcune operazioni di base e stampa i risultati.
Spero che questo ti dia una buona introduzione al mondo dei numeri complessi in C++.