Je to součást mojí plánované kalkulačky komplexních čísel.
Kdyby to chtěl někdo zkusit a měl nějaké nápady, připomínky...
Projekt zde:
http://uloz.to/xhJGHCU9/iterace-polynomu-rar
Obsahuje:
- cITP.cls
- modITPLoader.bas
- ITP_loader.vbp
Attribute VB_Name = "modITPLoader"
Option Explicit
Private Sub Main()
Dim i As Integer
Dim ITP As New cITP
ITP.DecimalNumbers = 5
'-------------------------------------------------------------------
' Příklad zadání č. 1. :
'-------------------------------------------------------------------
' x^6 - 21x^5 + 175x^4 - 735x^3 + 1624x^2 - 1764x + 720 = 0
'-------------------------------------------------------------------
ITP.Clear
'Nejdříve reálná pak případně imaginární část komplexního čísla...
ITP.AddCoefficient 1 'koeficient a
ITP.AddCoefficient -21 'koeficient b
ITP.AddCoefficient 175 'koeficient c
ITP.AddCoefficient -735 'koeficient d
ITP.AddCoefficient 1624 'koeficient e
ITP.AddCoefficient -1764 'koeficient f
ITP.AddCoefficient 720 'koeficient g
ITP.Iterate
Debug.Print ""
Debug.Print "Kořeny rovnice jsou:"
'Číslování kořenů začíná jedničkou, ne nulou jako v Listboxu.
'Funkce strRoots vytváří klasický formát komplexního čísla.
'Alternativami jsou 'číselné' funkce RealPart a ImaginaryPart.
For i = 1 To ITP.RootsCount
Debug.Print "x_" & Round(i) & " = " & ITP.strRoots(i)
Next
If ITP.UnknownRoots > 0 Then
Debug.Print ""
Debug.Print "Počet nenalezených kořenů:" & ITP.UnknownRoots
End If
'-------------------------------------------------------------------
' Očekávaný výstup je:
'-------------------------------------------------------------------
' Kořeny rovnice jsou:
' x_1 = 6
' x_2 = 5
' x_3 = 4
' x_4 = 3
' x_5 = 2
' x_6 = 1
'-------------------------------------------------------------------
'-------------------------------------------------------------------
' Příklad zadání č. 2. :
'-------------------------------------------------------------------
' x^8 + 40ix^6 - 842x^4 - 9640ix^2 + 48841 = 0
'-------------------------------------------------------------------
ITP.Clear
ITP.AddCoefficient 1 'koeficient a
ITP.AddCoefficient 0 'koeficient b
ITP.AddCoefficient 0, 40 'koeficient c
ITP.AddCoefficient 0 'koeficient d
ITP.AddCoefficient -842 'koeficient e
ITP.AddCoefficient 0 'koeficient f
ITP.AddCoefficient 0, -9640 'koeficient g
ITP.AddCoefficient 0 'koeficient h
ITP.AddCoefficient 48841 'koeficient i
ITP.Iterate
Debug.Print ""
Debug.Print "Kořeny rovnice jsou:"
For i = 1 To ITP.RootsCount
Debug.Print "x_" & Round(i) & " = " & ITP.strRoots(i)
Next
If ITP.UnknownRoots > 0 Then
Debug.Print ""
Debug.Print "Počet nenalezených kořenů:" & ITP.UnknownRoots
End If
'-------------------------------------------------------------------
' Očekávaný výstup je:
'-------------------------------------------------------------------
' Kořeny rovnice jsou:
' x_1 = 4 - i
' x_2 = 3 - 2i
' x_3 = 2 - 3i
' x_4 = 1 - 4i
' x_5 = -1 + 4i
' x_6 = -2 + 3i
' x_7 = -3 + 2i
' x_8 = -4 + i
'-------------------------------------------------------------------
End Sub