2016-12-18 6 views
0

낮은 삼각 행렬에 대한 가우시안 제거 문제가 발생했습니다. 여기서는 루프가 어떻게 작동해야하는지 상상할 수 없습니다. 루프를 뒤로 돌리려고했지만 도움이되지 않았습니다. 당분간은 위 삼각 행렬에 대한 가우시안 제거 만 있습니다.낮은 삼각 행렬에 대한 가우시안 제거

For[k = 1, k <= size - 1, k++, 
    For[i = k + 1, i <= size, i++, 
     If[tab[[k]][[k]] != 0, 
     help = tab[[i]][[k]]/tab[[k]][[k]]; 
     For[j = k, j <= size, j++, 
     tab[[i]][[j]] = tab[[i]][[j]] - help*tab[[k]][[j]]; 
     identity[[i]][[j]] = identity[[i]][[j]] - help*tab[[k]][[j]] 
     ] 
     ] 
     ] 
    ] 

누군가 나를 도와 줄 수 있습니까?

@edit

는 그

For[k = size, k > 1, k--, 
For[i = k - 1, i >= 1, i--, 

처럼 루프를 만들어 그리고 그것이 작동하는 것처럼 보이지만이 두 개의 루프가 가역 행렬을 제공하지 않기 때문에 지금은, 문제가 생겼어요.

예 매트릭스 :

상단 대각선
[3 4 2 ] 
[0 -5/3 5/3 ] 
[0 0 6 ] 

지금 신원 매트릭스

[1 0  0 ] 
    [-5 -17/3 -10/3 ] 
    [-1 -5 -4 ] 

그리고의 출력에 대한

[ 3 4 2 ] 
[ 5 5 5 ] 
[ 1 5 3 ] 

출력, 나는 낮은 대각선에 대한 루프를 실행 그것을위한 출력이 올바르지 않습니다. 주 대각선을 분할하지 않습니다

+0

['RowReduce'] (http://reference.wolfram.com/language/ref/RowReduce.html)을 보았습니까? 다른 많은 선형 대수 지침과 연결되는 [행렬 및 선형 대수학] (http://reference.wolfram.com/language/guide/MatricesAndLinearAlgebra.html) 가이드를 살펴볼 수도 있습니다. – Edmund

+0

mathematica의'For' 루프는 C와는 조금 다릅니다. C/C++에서 인덱스 증가분은 루프 내부 연산이 실행되기 전에 작성한 코드에서 루프 연산 이후에 실행됩니다. –

+0

일부 예제 작은 매트릭스와 예상 결과를 보여줍니다. 선형 대수학에 문제가 있거나 코딩 문제가있는 경우 명확하지 않습니다. (위 삼각 행렬에 대한 가우스 제거는 아무 것도하지 않습니다.) – agentp

답변

0

글쎄, 실제로 문제를 발견했는데 어떻게 해결할 수 있을지 모르겠습니다 - 위 삼각 행렬 루프는 잘 작동하지만 문제는 삼각형이 작은 것입니다 , 대각선으로 요소를 나누지 않습니다.