C#:
Lavorare con i numeri complessi
Come fare:
C# dispone di una struttura integrata System.Numerics.Complex
per elaborare i numeri complessi. Ecco una rapida guida:
using System;
using System.Numerics;
class EsempioNumeroComplesso
{
static void Main()
{
// Creazione di numeri complessi
Complex c1 = new Complex(4, 5); // 4 + 5i
Complex c2 = Complex.FromPolarCoordinates(1, Math.PI / 4); // 1 * e^(iπ/4)
// Operazioni di base
Complex somma = c1 + c2;
Complex differenza = c1 - c2;
Complex prodotto = c1 * c2;
Complex quoziente = c1 / c2;
// Risultati di output
Console.WriteLine($"Somma: {somma}");
Console.WriteLine($"Differenza: {differenza}");
Console.WriteLine($"Prodotto: {prodotto}");
Console.WriteLine($"Quoziente: {quoziente}");
Console.WriteLine($"Magnitudine di c1: {c1.Magnitude}");
Console.WriteLine($"Fase di c1: {c1.Phase}");
}
}
E questo produrrà in output:
Somma: (4.70710678118655, 5.70710678118655)
Differenza: (3.29289321881345, 4.29289321881345)
Prodotto: (-1.00000000000001, 9)
Quoziente: (0.6, 0.8)
Magnitudine di c1: 6.40312423743285
Fase di c1: 0.896055384571344
Approfondimento
I numeri complessi, costituiti da una parte reale e una immaginaria (spesso notati come a + bi), esistono fin dal XVII secolo. Al matematico italiano Gerolamo Cardano viene attribuito il loro primo sviluppo. Nella programmazione, lavorare con i numeri complessi comporta la comprensione e la gestione di queste due parti distinte.
Sebbene la System.Numerics.Complex
di C# sia robusta e integrata nel linguaggio, altri linguaggi come Python offrono funzionalità simili con cmath
o librerie di terze parti. E se si lavora con una versione precedente di C# o una versione di .NET che non supporta System.Numerics
, potrebbe essere necessario creare una propria classe di numeri complessi o trovare una libreria.
Internamente, le operazioni sui numeri complessi utilizzano l’aritmetica in virgola mobile che può introdurre errori di arrotondamento. Pertanto, quando si implementano algoritmi che utilizzano estensivamente i numeri complessi, è fondamentale ricordare questo e considerare l’impatto sulla precisione e l’accuratezza.
Vedi anche
- Riferimento C# per
System.Numerics.Complex
: https://learn.microsoft.com/en-us/dotnet/api/system.numerics.complex - Un approfondimento sulla matematica dei numeri complessi: https://mathworld.wolfram.com/ComplexNumber.html
- Per implementazioni e librerie alternative, controlla Math.NET Numerics: https://numerics.mathdotnet.com/