2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Проверьте алгоритм на VBA
Сообщение29.01.2008, 21:51 


11/03/06
236
Добрый день!
Проверьте пожалуйста алгоритм приведения матрицы к ступенчатому виду на языке
VBA.




Sub Syst()
ReDim A(4, 4) As Double
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim p As Integer
Dim t As Integer
Dim m As Integer
Dim c As Double

//Инициализируем матрицу
A(0, 0) = 0
A(0, 1) = 0
A(0, 2) = 2
A(1, 0) = 0
A(1, 1) = 1
A(1, 2) = 1
A(2, 0) = 0
A(2, 1) = 1
A(2, 2) = 0



n = 2 //количество столбцов
m = 2//количество строк
k = 1
r = -1//Число, смысл которого состоит в том,что бы определить номер столбца в котором находится текущий ненулевой элемент
For i = 0 To m - 1
2: q = 0
r = r + 1

If r > n Then GoTo 3

For p = i To m //Цикл, реализующий поиск ненулевого элемента в столбце
If A(p, r) <> 0 Then
For t = 0 To n //цикл, осуществляющий элементарное преобразование 3-го типа. т.е. меняет строки местами если найден ненулевой элемент в просматриваемой предыдущим циклом строке
A(m + 1, t) = A(i, t)
A(i, t) = A(p, t)
A(p, t) = A(m + 1, t)
Next t
q = 1
GoTo 1
End If
Next p


1: If q = 0 Then GoTo 2

For j = i To (m - 1)
c = -(A(j + 1, r)) / A(i, r)
For k = r To m
A(j + 1, k) = c * A(i, k) + A(j + 1, k)
Next k
Next j
Next i

3:
End Sub

-----------------------------------------------------------------------------
Проблема в том, что я запутался в массе текущих индексов, и немогу в голове удержать
правильное их расположение, хотя все проверенные мною примеры давали правильный результат при использовании алгоритма. Кстати, существует ли несколько контрольных примеров, в результате выполнения которых можно было бы наверняка убедится, что алгоритм верен?

И ещё одна проблема: пока думал над этой задачей, у меня в голове графически представлялась одна картина. Теперь мне нужно осуществить "обратный ход" т.е.
привести матрицу не к ступенчатому а к диагональному виду. Я совершенно немогу это в силу инерции сознания осуществить. Не могли бы Вы мне подсказать, что именно мне нужно поменять в текущем алгоритме, что бы осуществить проход не сверху вниз, а наоборот - снизу вверх?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group