C#:
Å jobbe med komplekse tall
Hvordan:
C# har en innebygd System.Numerics.Complex
struktur for behandling av komplekse tall. Her er en rask gjennomgang:
using System;
using System.Numerics;
class EksempelKomplekseTall
{
static void Main()
{
// Å opprette komplekse tall
Complex c1 = new Complex(4, 5); // 4 + 5i
Complex c2 = Complex.FromPolarCoordinates(1, Math.PI / 4); // 1 * e^(iπ/4)
// Grunnleggende operasjoner
Complex sum = c1 + c2;
Complex differanse = c1 - c2;
Complex produkt = c1 * c2;
Complex kvotient = c1 / c2;
// Skrive ut resultater
Console.WriteLine($"Sum: {sum}");
Console.WriteLine($"Differanse: {differanse}");
Console.WriteLine($"Produkt: {produkt}");
Console.WriteLine($"Kvotient: {kvotient}");
Console.WriteLine($"Magnitude av c1: {c1.Magnitude}");
Console.WriteLine($"Fase av c1: {c1.Phase}");
}
}
Og det vil skrive ut:
Sum: (4.70710678118655, 5.70710678118655)
Differanse: (3.29289321881345, 4.29289321881345)
Produkt: (-1.00000000000001, 9)
Kvotient: (0.6, 0.8)
Magnitude av c1: 6.40312423743285
Fase av c1: 0.896055384571344
Dypdykk
Komplekse tall, bestående av en reel og en imaginær del (ofte notert som a + bi), har eksistert siden det 17. århundret. Den italienske matematikeren Gerolamo Cardano krediteres for deres tidlige utvikling. I programmering innebærer håndtering av komplekse tall å forstå og håndtere disse to distinkte delene.
Mens C#’s System.Numerics.Complex
er robust og integrert i språket, tilbyr andre språk som Python lignende funksjonalitet med cmath
eller tredjepartsbiblioteker. Og hvis du jobber i en eldre versjon av C# eller en .NET-versjon som ikke støtter System.Numerics
, må du kanskje lage din egen klasse for komplekse tall eller finne et bibliotek.
Internt bruker operasjonene på komplekse tall flyttallsaritmetikk, som kan introdusere avrundingsfeil. Så når du implementerer algoritmer som bruker komplekse tall omfattende, er det viktig å huske på dette og vurdere innvirkningen på presisjon og nøyaktighet.
Se Også
- C# Referanse for
System.Numerics.Complex
: https://learn.microsoft.com/en-us/dotnet/api/system.numerics.complex - Et dypere dykk i matematikken til komplekse tall: https://mathworld.wolfram.com/ComplexNumber.html
- For alternative implementeringer og biblioteker, sjekk ut Math.NET Numerics: https://numerics.mathdotnet.com/