Komplexné číslo potom zapíšeme ako výraz z = a + i*b , kde a je jeho reálna časť, b je jeho imaginárna časť a i (tiež označované ako j) je jednotkový vektor imaginárnej osi y. Podobne je číslo 1 jednotkovým vektorom v smere osi x.
Operácie z komplexnými číslami:
Dve komplexné čísla sú rovnaké práve vtedy, ak reálna časť prvého čísla je rovnaká ako reálna časť druhého a súčastne aj imaginárne časti su rovnaké.
c1.Re == c2.Re && c1.Im == c2.Im
Dve komplexné čísla sčítavame tak, že sčítame reálnu čast prvého čísla s reálnou časťou druhého a súčastne sčítame aj imaginárnu časť prvého z imaginárnou časťou druhého čísla.
z = (c1.Re + c2.Re) + i*(c1.Im + c2.Im)
Dve komplexné čísla odčítame tak, že odčítame reálnu čast prvého čísla s reálnou časťou druhého a súčastne odčítame aj imaginárnu časť prvého z imaginárnou časťou druhého čísla.
z = (c1.Re - c2.Re) + i*(c1.Im - c2.Im)
Pri násobeni imáginárnych časti platí : i*i = -1
z = (c1.Re * c2.Re - c1.Im * c2.Im) + i*(c1.Re * c2.Im + c2.Re * c1.Im)
Trieda komplexných čísel v c# :
Až do ver .NET Framework 4.0 neboli kompléxne čísla vstavané do Frameworku. Preto si ukážeme ako spraviť takúto triedu na prácu s komplexnými číslami.
class Complex { public Double Re {get;set;} public Double Im {get;set;} public Complex(Double real, Double imaginary) { this.Re = real; this.Im = imaginary; } public static Complex operator +(Complex c1, Complex c2) { Double re = c1.Re + c2.Re; Double im = c1.Im + c2.Im; return new Complex(re, im); } public static Complex operator -(Complex c1, Complex c2) { Double re = c1.Re - c2.Re; Double im = c1.Im - c2.Im; return new Complex(re, im); } public static Complex operator *(Complex c1, Complex c2) { Double re = c1.Re * c2.Re - c1.Im * c2.Im; Double im = c1.Re * c2.Im + c2.Re * c1.Im; return new Complex(re, im); } public static Complex operator /(Complex c1, Complex c2) { Complex tmp = new Complex(c2.Re, -c2.Im); c1 *= tmp; c2 *= tmp; if (c2 == 0) throw new DivideByZeroException(); return (c1 * (1 / c2.Re)); } public static Boolean operator ==(Complex c1, Complex c2) { return (c1.Re == c2.Re && c1.Im == c2.Im); } public static Boolean operator !=(Complex c1, Complex c2) { return !(c1.Re == c2.Re && c1.Im == c2.Im); } public static implicit operator Complex(Double n) { return new Complex(n, 0); } }
Použitie :
Complex cislo1 = new Complex(-8, 9.2); Complex cislo2 = cislo1 + 5;
V .NET Framework 4.0 a viac sú komplexné čísla priamo podporované.
Namespace: System.Numerics
Assembly: System.Numerics (in System.Numerics.dll)