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.

  1. #include <complex>
  2. #include <iostream>
  3. int main() {
  4.   // Un numero complesso non inizializzato
  5.   std::complex<double> num1;
  6.   // Un numero complesso 3 + 4i
  7.   std::complex<double> num2(3.0, 4.0);
  8.   // Stampa i numeri complessi
  9.   std::cout << "num1: " << num1 << "\n";
  10.   std::cout << "num2: " << num2 << "\n";
  11.   return 0;
  12. }

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.

  1. // Addizione
  2. std::complex<double> sum = num1 + num2;
  3. // Sottrazione
  4. std::complex<double> diff = num1 - num2;
  5. // Moltiplicazione
  6. std::complex<double> prod = num1 * num2;
  7. // Divisione
  8. 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 double

    norma = std::norm(num2);

Esempio Completo

Metiamo insieme tutto ciò che abbiamo imparato in un programma di esempio:

  1. #include <complex>
  2. #include <iostream>
  3. int main() {
  4.   // 3 + 4i
  5.   std::complex<double> num1(3.0, 4.0);
  6.   // 1 * e^(i * π)
  7.   std::complex<double> num2 = std::polar(1.0, M_PI);
  8.   // Operazioni
  9.   std::complex<double> sum = num1 + num2;
  10.   std::complex<double> diff = num1 - num2;
  11.   // Stampa risultati
  12.   std::cout << "Somma: " << sum << "\n";
  13.   std::cout << "Differenza: " << diff << "\n";
  14.   std::cout << "Modulo di num1: " << std::abs(num1) << "\n";
  15.   std::cout << "Argomento di num2: " << std::arg(num2) << "\n";
  16.   return 0;
  17. }

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++.

 
 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin