Помогите!!!Работает,но выдаёт не правильный ответ. И к слову это прога по методу решения системы линейных уравнений методом Гаусса. [vba]
Код
Sub metodgaussa() Dim a() As Integer, b() As Integer, x() As Single n = InputBox("Введите размерность:") ReDim a(1 To n, 1 To n) As Integer ReDim b(1 To n) As Integer ReDim x(1 To n) As Single
For i = 1 To n For j = 1 To n s = "Введите элемент матрицы" & " a[" & i & "," & j & "]" a(i, j) = InputBox(s)
If i = j Then Do While a(i, i) = 0 s = "Введите не нулевое значение элемента матрицы" & " a[" & i & "," & i & "]" a(i, i) = InputBox(s) Loop End If Cells(i, j) = a(i, j) Next j
s1 = "Введите правую часть уравнения" & " b[" & i & "]" b(i) = InputBox(s1) Cells(i, n + 2) = b(i) Next i
For k = 1 To n For i = k + 1 To n r = a(i, k) / a(k, k) For j = k To n a(i, j) = a(i, j) - r * a(k, j) Next j b(i) = b(i) - r * b(k) Next i Next k
For k = n To 1 Step -1 r = 0 For j = k + 1 To n g = a(k, j) * x(j) r = r + g Next j x(k) = (b(k) - r) / a(k, k) Next k MsgBox ("Корни системы получены!")
For i = 1 To n Cells(i, 10) = x(i) Next i End Sub
[/vba] [moder]Оформляйте коды тегами (кнопка #) На первый раз поправила сама.[/moder]
Помогите!!!Работает,но выдаёт не правильный ответ. И к слову это прога по методу решения системы линейных уравнений методом Гаусса. [vba]
Код
Sub metodgaussa() Dim a() As Integer, b() As Integer, x() As Single n = InputBox("Введите размерность:") ReDim a(1 To n, 1 To n) As Integer ReDim b(1 To n) As Integer ReDim x(1 To n) As Single
For i = 1 To n For j = 1 To n s = "Введите элемент матрицы" & " a[" & i & "," & j & "]" a(i, j) = InputBox(s)
If i = j Then Do While a(i, i) = 0 s = "Введите не нулевое значение элемента матрицы" & " a[" & i & "," & i & "]" a(i, i) = InputBox(s) Loop End If Cells(i, j) = a(i, j) Next j
s1 = "Введите правую часть уравнения" & " b[" & i & "]" b(i) = InputBox(s1) Cells(i, n + 2) = b(i) Next i
For k = 1 To n For i = k + 1 To n r = a(i, k) / a(k, k) For j = k To n a(i, j) = a(i, j) - r * a(k, j) Next j b(i) = b(i) - r * b(k) Next i Next k
For k = n To 1 Step -1 r = 0 For j = k + 1 To n g = a(k, j) * x(j) r = r + g Next j x(k) = (b(k) - r) / a(k, k) Next k MsgBox ("Корни системы получены!")
For i = 1 To n Cells(i, 10) = x(i) Next i End Sub
[/vba] [moder]Оформляйте коды тегами (кнопка #) На первый раз поправила сама.[/moder]han
Сообщение отредактировал Manyasha - Суббота, 07.11.2015, 21:35
han, поменяйте тип матрицы a и массива b c integer на double (второй раз необязательно указывать) [vba]
Код
Dim a() As Double, b() As Double, x() As Double n = InputBox("Введите размерность:") ReDim a(1 To n, 1 To n) ' As Double ReDim b(1 To n) ' As Double ReDim x(1 To n) ' As Double
[/vba]
Проверила 2 раза, с вычислениями на листочке сошлось
Кстати, Ваш код не проверяет, имеет ли СЛАУ единственное решение или нет (может их вообще нет), так и должно быть? И еще, почему нельзя вводить 0?
han, поменяйте тип матрицы a и массива b c integer на double (второй раз необязательно указывать) [vba]
Код
Dim a() As Double, b() As Double, x() As Double n = InputBox("Введите размерность:") ReDim a(1 To n, 1 To n) ' As Double ReDim b(1 To n) ' As Double ReDim x(1 To n) ' As Double
[/vba]
Проверила 2 раза, с вычислениями на листочке сошлось
Кстати, Ваш код не проверяет, имеет ли СЛАУ единственное решение или нет (может их вообще нет), так и должно быть? И еще, почему нельзя вводить 0?Manyasha