2
prowokeЦитата:
В общем я сейчас расставлю в коде комментарии
Вместо "Конец цикла номер 2" должно быть "Конец цикла номер 1", а сама пометка о конце цикла #2 должна быть сразу после пометки "Конец цикла номер 3". Соответственно, самую последнюю строчку надо вообще удалить или заменить на что-то вроде "конец процедуры".
После портировки приведите vb-листинг здесь, тогда можно будет поисправлять ошибки... (Хотя лучше всего будет, если вы напишите нужный вам алгоритм сами с нуля и сразу же на целевом языке.)
Вот алгоритм на VBA:
Код:
For z = 0 To kol - 1
For i = 0 To kol - 1
For j = 0 To kol - 1
If (i = z) And (j = z) Then
b(i, j) = 1 / XtX(i, j)
End If
If (i = z) And (j <> z) Then
b(i, j) = -XtX(i, j) / XtX(z, z)
End If
If (i <> z) And (j = z) Then
b(i, j) = XtX(i, z) / XtX(z, z)
End If
If (i <> z) And (j <> z) Then
b(i, j) = XtX(i, j) - XtX(z, j) * XtX(i, k) / XtX(z, z)
End If
Next
Next
For i = 0 To kol - 1
For j = 0 To kol - 1
XtX(i, j) = b(i, j)
Next
Next
Next
Чтобы написать самому с нуля у меня нету ни ума, ни образования, времени и практики. Максимум умножение матриц и транспонирование:). Тут он ошибку кидает в VBA. Говорит, что в первом условии идёт деление на 0. Вот тут:
Код:
If (i = z) And (j = z) Then
b(i, j) = 1 / XtX(i, j)
End If
Это уже проблема самого VBA или алгоритма? Как решать то это? Писать условия, типо если идёт деление на 0, то считай это число как 0 или как? Сам алгоритм то, что мне надо. Я на сайте пробовал вводить нужным мне матрицы, считает он всё верно.