【C#】複素数の計算(Complex構造体)

C#では複素数を扱う Complex構造体(名前空間:System.Numerics)が用意されています。

ただし、プロジェクトの初期状態では、使えないため、プロジェクトの参照を右クリックし、参照の追加System.Numerics を追加してください。

 

 

コード例

var complex1 = new System.Numerics.Complex(Math.Sqrt(3), 1.0);
Console.WriteLine($"complex1.Magnitude = {complex1.Magnitude}");
Console.WriteLine($"complex1.Phase = {complex1.Phase * 180.0 / Math.PI}");

var complex2 = new System.Numerics.Complex(1.0, Math.Sqrt(3));
Console.WriteLine($"complex2.Magnitude = {complex2.Magnitude}");
Console.WriteLine($"complex2.Phase = {complex2.Phase * 180.0 / Math.PI}");

var complex3 = complex1 * complex2;
Console.WriteLine($"complex3.Magnitude = {complex3.Magnitude}");
Console.WriteLine($"complex3.Phase = {complex3.Phase * 180.0 / Math.PI}");

var complex4 = complex1 + complex2;
Console.WriteLine($"complex4.Magnitude = {complex4.Magnitude}");
Console.WriteLine($"complex4.Phase = {complex4.Phase * 180.0 / Math.PI}");

// 結果
//complex1.Magnitude = 2
//complex1.Phase = 30
//complex2.Magnitude = 2
//complex2.Phase = 60
//complex3.Magnitude = 4
//complex3.Phase = 90
//complex4.Magnitude = 3.86370330515627
//complex4.Phase = 45

 

複素数の大きさは Magnitudeプロパティで、位相はPhaseプロパティで拾えるし、複素数の演算(加算、減算、乗算、除算)も可能です。

複数の演算は、複素数と複素数、複素数と実数の演算が可能です。

 

これが出来るという事はDFT(離散フーリエ変換)も簡単に出来ちゃいますね。

 

関連ページ

複素数のイメージ

複素数の計算

離散フーリエ変換(DFT)の直感的理解

 

参考ページ

https://docs.microsoft.com/ja-jp/dotnet/api/system.numerics.complex?view=netframework-4.8

 

← C# へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください