C#:
Praca z liczbami zespolonymi
Jak to zrobić:
C# ma wbudowaną strukturę System.Numerics.Complex do przetwarzania liczb zespolonych. Oto krótkie wprowadzenie:
using System;
using System.Numerics;
class ComplexNumberExample
{
static void Main()
{
// Tworzenie liczb zespolonych
Complex c1 = new Complex(4, 5); // 4 + 5i
Complex c2 = Complex.FromPolarCoordinates(1, Math.PI / 4); // 1 * e^(iπ/4)
// Podstawowe operacje
Complex sum = c1 + c2;
Complex difference = c1 - c2;
Complex product = c1 * c2;
Complex quotient = c1 / c2;
// Wyniki wyjściowe
Console.WriteLine($"Suma: {sum}");
Console.WriteLine($"Różnica: {difference}");
Console.WriteLine($"Iloczyn: {product}");
Console.WriteLine($"Iloraz: {quotient}");
Console.WriteLine($"Moduł c1: {c1.Magnitude}");
Console.WriteLine($"Faza c1: {c1.Phase}");
}
}I to da na wyjściu:
Suma: (4.70710678118655, 5.70710678118655)
Różnica: (3.29289321881345, 4.29289321881345)
Iloczyn: (-1.00000000000001, 9)
Iloraz: (0.6, 0.8)
Moduł c1: 6.40312423743285
Faza c1: 0.896055384571344Dogłębna analiza
Liczby zespolone, składające się z części rzeczywistej i urojonej (często oznaczane jako a + bi), istnieją od XVII wieku. Włoski matematyk Gerolamo Cardano jest przypisywany za ich wczesny rozwój. W programowaniu, praca z liczbami zespolonymi oznacza zrozumienie i zarządzanie tymi dwiema odrębnymi częściami.
Chociaż C#’s System.Numerics.Complex jest rozbudowany i zintegrowany z językiem, inne języki takie jak Python oferują podobną funkcjonalność dzięki cmath lub bibliotekom stron trzecich. A jeśli pracujesz w starszej wersji C# lub w wersji .NET, która nie obsługuje System.Numerics, możesz musieć stworzyć własną klasę liczb zespolonych lub znaleźć bibliotekę.
Wewnętrznie, operacje na liczbach zespolonych używają arytmetyki zmiennoprzecinkowej, co może wprowadzać błędy zaokrągleń. Dlatego, implementując algorytmy, które intensywnie korzystają z liczb zespolonych, kluczowe jest pamiętanie o tym i rozważenie wpływu na precyzję i dokładność.
Zobacz także
- Referencje C# dla
System.Numerics.Complex: https://learn.microsoft.com/pl-PL/dotnet/api/system.numerics.complex - Dogłębniejsza analiza matematyki liczb zespolonych: https://mathworld.wolfram.com/ComplexNumber.html
- Alternatywne implementacje i biblioteki, sprawdź Math.NET Numerics: https://numerics.mathdotnet.com/