2017-11-12 2 views
1

2D 열전달 화학 공학 문제를 해결하기 위해 Gauss seidel 방법을 사용하여 25x25 행렬을 분석하려고했습니다. 가우스 자이 델 행렬 1에 대한 루프가 이전 기능 VBA의 Gauss 코드

정말 어떤 도움을 주셔서 감사에 의해 생성 COEFF 매트릭스가있는 동안

그러나이 두번째 반복

Do While error > 0.1 

temps0 = temps1(UBound(matrix1, 1), 1) ' Old temperature for error calculation 

'Conducts the gauss algorithm for each row 
For i = 1 To UBound(matrix1, 1) 
    temps1(i, 1) = matrix1(i, UBound(matrix1, 2)) 
    For j = 1 To (UBound(matrix1, 2) - 1) 
     If j <> i Then 
      temps1(i, 1) = temps1(i, 1) - (matrix1(i, j) * temps1(j, 1)) 
     ElseIf j = i Then 
      divider = matrix1(i, j) 
     End If 
    Next j 
    temps1(i, 1) = temps1(i, 1)/divider 
Next i 

error = Abs((temps1(UBound(matrix1, 1), 1) - temps0)/temps1(UBound(matrix1,  1), 1)) 
iteration = iteration + 1 

Loop 

이 이동 나던은 할 일이다. 변화 오류의 값에 의해 해결 TY

+0

"은 2 반복으로 이동하지 않는다"당신은'i' 루프의 두 번째 반복 언급하는, 또는 'j' 루프의 두 번째 반복? 그리고 두 번째 반복 과정에 들어가는 대신에 무엇을하는지, 즉 충돌을 일으키는 지, 아니면'matrix1'의 크기가 '1 대 1, 1 대 2'인지, 아니면 다른 것만 있다고 생각합니까? – YowE3K

+0

내가 말한 것은 temp1 (1-D 배열)을 업데이트하지 않는다는 것입니다. – user133174

+0

F8 키를 사용하여 코드를 한 단계 건너 뛰고 프로그램 흐름이 올바른지 확인하십시오. .... 루프가 너무 많은 단계를 거친 다음 중단 점을 삽입하고 F5를 사용하여 실행을 계속하면 중단 점에서 중단됩니다. – jsotola

답변

0

문제, 당신이 말할 때 감사 어쨌든