Sub Metoda_Thomasa()
' deklaracja tablic --------------------------------------------------------------------------------------------
Dim a() As Double
Dim b() As Double
Dim c() As Double
Dim d() As Double
Dim wB() As Double
Dim wG() As Double
Dim wX() As Double
Dim N As Double
' pobranie rozmiaru tablic N InputBox---------------------------------------------------------------------------
N = InputBox(prompt, "Podaj liczbe niewiadomch")
' ustalenie rozmiaru tablic ------------------------------------------------------------------------------------
ReDim a(1 To N) As Double
ReDim b(1 To N) As Double
ReDim c(1 To N) As Double
ReDim d(1 To N) As Double
ReDim wB(1 To N) As Double
ReDim wG(1 To N) As Double
ReDim wX(1 To N, 1 To 2) As Double
' wczytanie wspolczynnikow--------------------------------------------------------------------------------------
Dim i As Integer
For i = 1 To N
If i <> 1 Then a(i) = InputBox(prompt, "podaj wspolczynnik a" & i)
b(i) = InputBox(prompt, "podaj wspolczynnik b" & i)
If i <> N Then c(i) = InputBox(prompt, "podaj wspolczynnik c" & i)
d(i) = InputBox(prompt, "podaj wspolczynnik d" & i)
Next i
a(1) = 0
c(N) = 0
'sprawdzenie
'Dim k As Integer
'k = 1
'For i = 1 To N
' Cells(i, k) = a(i)
' Cells(i, k + 1) = b(i)
' Cells(i, k + 2) = c(i)
' Cells(i, N + 4) = d(i)
' k = k + 1
'Next i
' wyliczenie wB(1), wG(1)---------------------------------------------------------------------------------------
wB(1) = -1 * (c(1) / b(1))
wG(1) = d(1) / b(1)
' wyliczenie wB(i), wG(i)---------------------------------------------------------------------------------------
For i = 2 To N
wB(i) = -c(i) / (a(i) * wB(i - 1) + b(i))
Next i
For i = 2 To N
wG(i) = (d(i) - a(i) * wG(i - 1)) / (a(i) * wB(i - 1) + b(i))
Next i
' podstawienie wX(N)=wG(N), wyliczenie pozostałych wartości wX(i)-----------------------------------------------
wX(N, 1) = wG(N)
For i = N - 1 To 1 Step -1
wX(i, 1) = wX(i + 1, 1) * wB(i) + wG(i)
Next i
'sprwdzenie
'k = 1
'For i = 1 To N
' Cells(i, N + 6) = wB(i)
' Cells(i, N + 7) = wG(i)
' Cells(i, N + 8) = wX(i, 1)
'Next i
' wypisanie wynikow---------------------------------------------------------------------------------------------
For i = 1 To N
Cells(1, i) = "X" & i
Cells(2, i) = wX(i, 1)
Next i
' --------------------------------------------------------------------------------------------------------------
Dim MojaData
MojaData = Format(Date, "Long Date")
MsgBox "Witam, dziś jest " & MojaData & ". To bardzo dobry dzień aby zaliczyć pakiety użytkowe. Pozdrawiam."
End Sub