C#:
Kompleksilukujen käsittely
Kuinka:
C# sisältää valmiina System.Numerics.Complex
rakenteen kompleksilukujen käsittelyyn. Tässä nopea läpikäynti:
using System;
using System.Numerics;
class ComplexNumberExample
{
static void Main()
{
// Kompleksilukujen luominen
Complex c1 = new Complex(4, 5); // 4 + 5i
Complex c2 = Complex.FromPolarCoordinates(1, Math.PI / 4); // 1 * e^(iπ/4)
// Perusoperaatiot
Complex summa = c1 + c2;
Complex ero = c1 - c2;
Complex tulo = c1 * c2;
Complex osamäärä = c1 / c2;
// Tulosten tulostaminen
Console.WriteLine($"Summa: {summa}");
Console.WriteLine($"Ero: {ero}");
Console.WriteLine($"Tulo: {tulo}");
Console.WriteLine($"Osamäärä: {osamäärä}");
Console.WriteLine($"c1:n suuruus: {c1.Magnitude}");
Console.WriteLine($"c1:n vaihe: {c1.Phase}");
}
}
Tämä tulostaa:
Summa: (4.70710678118655, 5.70710678118655)
Ero: (3.29289321881345, 4.29289321881345)
Tulo: (-1.00000000000001, 9)
Osamäärä: (0.6, 0.8)
c1:n suuruus: 6.40312423743285
c1:n vaihe: 0.896055384571344
Syventävä osio
Kompleksiluvut, jotka koostuvat reaalisesta ja imaginaarisesta osasta (usein merkitty muodossa a + bi), ovat olleet olemassa 17. vuosisadalta lähtien. Italian matemaatikko Gerolamo Cardano on niiden varhaisen kehityksen takana. Ohjelmoinnissa kompleksilukujen käsittelyyn kuuluu näiden kahden erillisen osan ymmärtäminen ja hallinta.
Vaikka C#:n System.Numerics.Complex
on vankka ja kielen sisäänrakennettu, myös muut kielet, kuten Python, tarjoavat vastaavaa toiminnallisuutta cmath
:n tai kolmansien osapuolien kirjastojen avulla. Ja jos työskentelet vanhemman version parissa C#:n tai .NET version kanssa, joka ei tue System.Numerics
:ia, saatat joutua luomaan oman kompleksilukuluokan tai etsimään kirjaston.
Sisäisesti kompleksilukujen operaatiot käyttävät liukulukuaritmetiikkaa, joka voi tuoda mukanaan pyöristysvirheitä. Joten, kun toteutat algoritmeja, jotka käyttävät laajasti kompleksilukuja, on tärkeää muistaa tämä ja harkita sen vaikutusta tarkkuuteen ja paikkansapitävyyteen.
Katso myös
- C# viite
System.Numerics.Complex
:lle: https://learn.microsoft.com/en-us/dotnet/api/system.numerics.complex - Syventävä tutkimusmatka kompleksilukujen matematiikkaan: https://mathworld.wolfram.com/ComplexNumber.html
- Vaihtoehtoiset toteutukset ja kirjastot, tarkasta Math.NET Numerics: https://numerics.mathdotnet.com/