Jít k navigaci - Jít k vyhledávání


Komplexní čísla ve vb.net - Přetěžování operátorů

06. 02. 13 - 21:21. Napsal Jiří Chytil. Přečteno 3395x.

Modul pro počítání s komplexními čísly ve vb.net

468x60.gif Doporučujeme virtuálního opertátora GoMobil.cz | Reklamní sdělení

V prvé řadě si vytvoříme třídu Complex, které bude obsahovat dvojici proměnných jednu pro reálnou a druhou pro imaginárně složku pojmenované jako x a y. Dále obsahuje funkce New pro vytvoření instance třídy tedy komplexní proměnné.

    Class Complex
        Private x As Double
        Private y As Double

        Public Sub New()

        End Sub

        Public Sub New(ByVal real As Double, ByVal imaginary As Double)
            x = real
            y = imaginary
        End Sub
    End Class
Kód: vb.net - Vytvoření třídy

Nyní do třídy přidáme některé vlastnosti. Zaprvé to bude reálná a imaginární složka.

        Public Property Real As Double
            Get
                Return x
            End Get
            Set(value As Double)
                x = value
            End Set
        End Property

        Public Property Imaginary As Double
            Get
                Return y
            End Get
            Set(value As Double)
                y = value
            End Set
        End Property
Kód: vb.net - Vložení vlastností

Další vlastnosti již budou pouze pro čtení: absolutní hodnota a argument komplexního čísla, argument ve stupních a číslo komplexně sdružené

        Public ReadOnly Property Abs As Double
            Get
                Return ((x ^ 2) + (y ^ 2)) ^ (1 / 2)
            End Get
        End Property

        Public ReadOnly Property Arg As Double
            Get
                Return Math.Acos(x / Me.Abs)
            End Get
        End Property

        Public ReadOnly Property ArgDeg As Double
            Get
                Return Math.Acos(x / Me.Abs) * 180 / Math.PI
            End Get
        End Property

        Public ReadOnly Property Conj As Complex
            Get
                Dim c3 As New Complex()
                c3.x = Me.x
                c3.y = -Me.y
                Return c3
            End Get
        End Property
Kód: vb.net - Vložení vlastností pro čtení

No a nyní slíbené přetěžování operátorů týká se sčítání, odečítání, násobení, dělaní a mocniny.

        Public Shared Operator +(ByVal c1 As Complex, ByVal c2 As Complex) As Complex
            Dim c3 As New Complex()
            c3.x = c1.x + c2.x
            c3.y = c1.y + c2.y
            Return (c3)
        End Operator

        Public Shared Operator -(ByVal c1 As Complex, ByVal c2 As Complex) As Complex
            Dim c3 As New Complex()
            c3.x = c1.x - c2.x
            c3.y = c1.y - c2.y
            Return (c3)
        End Operator

        Public Shared Operator *(ByVal c1 As Complex, ByVal c2 As Complex) As Complex
            Dim c3 As New Complex()
            c3.x = (c1.x * c2.x) - (c1.y * c2.y)
            c3.y = (c1.x * c2.y) + (c1.y * c2.x)
            Return (c3)
        End Operator

        Public Shared Operator /(ByVal c1 As Complex, ByVal c2 As Complex) As Complex
            Dim c3 As New Complex()
            c3.x = ((c1.x * c2.x) + (c1.y * c2.y)) / (c2.x ^ 2 + c2.y ^ 2)
            c3.y = ((c1.y * c2.x) - (c1.x * c2.y)) / (c2.x ^ 2 + c2.y ^ 2)
            Return (c3)
        End Operator

        Public Shared Operator ^(ByVal c As Complex, ByVal n As Double) As Complex
            Dim c3 As New Complex()
            c3.x = c.Abs ^ n * Math.Cos(n * c.Arg)
            c3.y = c.Abs ^ n * Math.Sin(n * c.Arg)
            Return (c3)
        End Operator
Kód: vb.net - Přetěžování operátorů

Poslední částí je textový výstup pomocí funkce ToString

        Public Shadows ReadOnly Property ToString As String
            Get
                Dim temp As String = ""
                If y >= 0 Then temp = "+"
                Return Convert.ToString(x) & temp & Convert.ToString(y) & "j"
            End Get
        End Property

        Public Shadows ReadOnly Property ToStringGoniometic As String
            Get
                Return Convert.ToString(Me.Abs) & "  " & Convert.ToString(Me.ArgDeg) & "°"
            End Get
        End Property
Kód: vb.net - Textový výstup


Autor
Jiří Chytil

Jiří Chytil27 let

Šéfredaktor 8bitu.cz. V současné době je studentem doktroského studia na Ústavu teoretické a experimantální elektroniky na Fakultě elektrotechniky a komunikačních technologií VUT v Brně. Mezi jeho koníčky patří elektrotechnika, bastlení, programování a hudba.


Novinky Další novinky

[25. 06.]  A tentokráte vás zdravím z města New York.
[17. 06.]  Zdravim vas z Bostonu vazeni ctenari.
[10. 03.]  Tak jsem pro Vás připravil novou anketu. A snažím se pokračovat na projektu jehož výsledky bych zde rád zveřejnil, ale poněkud mě brzdí diplomová práce a práce.
[30. 01.]  Omlouvám se za nečinnost způsobenou značným nedostatkem času. Nevím, ale jestli se mi to podaří změnit. To víte, člověk stárne a jeho čas je potřeba jinde než na internetu.
[07. 03.]  Po dlouhé době jsme pro vás přichystali novou anketu - najdete ji níže v pravém panelu.

Reklama

Sádrokartony Karel Richter - sádrokartony a suché stavby Brno

Okruháři.cz

Virtuální operátor GoMobil - levné volání

Programujte.com

Léčivé obrazy - enkaustika Lenka Blažíková

Keramika Věra Coufalová - užitková keramika

Anketa

Jaký další modul byste ocenili v softwaru DSE?

RC články - pasivní

RC články - aktivní

Normované filtry

Syntetické indukčnosti

Materiálové tabulky

COM terminál

Design pro 555

Výpočet transformátoru

Výpočet uPásku

Výpočet štěrbinového vedení

Návrh Step-Up měniče

Návrh invertujícího měniče

Transfigurace trojúhelník-hvězda

Předřadník a bočník