피벗 가우스 소거법
라임나무
질문 제목 : 피벗 가우스 소거법질문 내용 :
#include stdio.h
#include stdlib.h
#include matrix8.h
void forwardelim(elementtype **amat, int rowsize, int colsize)
{
// to do something
float factor = 0;
int k,i,j;
for(k=0 ; k = 2 ; k++){
for(i=k+1 ; i = 3 ; i++){
if(amat[k][k] == 0)
pivoting(amat,k,rowsize,colsize); //전진소거법 시 0인 열을 밑에 열과 바꾼다.
if(amat[i][k] != 0)
factor = amat[i][k] / amat[k][k];
for(j=k ;j = 4 ; j++)
{
amat[i][j] -= factor * amat[k][j];
}
}
}
}
void backsubst(elementtype **amat, int rowsize, int colsize, elementtype *answer)
{
answer[3] = amat[3][4] / amat[3][3];
answer[2] = (amat[2][4] - answer[3]*amat[2][3]) / amat[2][2];
answer[1] = (amat[1][4] - answer[3]*amat[1][3] - answer[2]*amat[1][2]) / amat[1][1];
answer[0] = (amat[0][4] - answer[3]*amat[0][3] - answer[2]*amat[0][2] - answer[1]*amat[0][1]) / amat[0][0];
// to do something}
int pivoting(elementtype **amat, int startrow, int rowsize, int colsize)
{
//to do something
float temp[4];
int i;
int k = startrow;
for(i=0;i4;i++)
{
temp[i] = amat[k][i];
amat[k][i] = amat[k+1][i];
amat[k+1][i] = temp[i];
}
return 0;
}afterforwlard elimination 에서
row 2의 두번째 값이 0이 되어야하는데 -10이 나오네요 ㅜㅜ
순차적으로 되는거라 그 밑에꺼는 됫는데 그 위에께 안되는게 이해가 안갑니다
고수분들 도와주세요 !!ㅜㅜ
전체 파일도 첨부했습니다. ㅜㅜ