数值分析直接三角分解法

#include
#include
# define n 3
void main()
{
int i,j,k,m;
float A[n][n],L[n][n],U[n][n],b[n],x[n],y[n];
float sum1=0,sum2=0;
/**/ for(i=0;i{ for (j=0;jprintf("A[%d][%d]=",i,j);
scanf("%f;",&A[i][j]);
}

}
for(i=0;iprintf("b[%d]=",i);
scanf("%f;",&b[n]);
}


for (i=0;ifor(j=0;jif(i==j){
L[i][j]=1;
}else{
L[i][j]=0;
}
}
}
for(i=0;i
for(j=0;jif(i==0){
U[i][j]=A[i][j];
}else{
U[i][j]=0;
}
}
}

for (i=0;ifor (j=0;jprintf("L[%d][%d]=%f;U[%d][%d]=%f\n",i,j,L[i][j],i,j,U[i][j]);
}
}

for (k=0;k
if(k==0){

for (i=k+1;ifor (m=0;msum2=sum2+L[i][m]*U[m][k];
}
L[i][k]=(A[i][k]-sum2)/U[k][k];
sum2=0;
}

}else{

for(j=k;jfor (m=0;msum1+=L[k][m]*U[m][j];
printf("esle--sum1=%f\n",sum1);
}
U[k][j]=A[k][j]-sum1;
sum1=0;
}
for (i=k+1;ifor (m=0;msum2+=L[i][m]*U[m][k];
printf("else--sum2=%f\n",sum2);
}
L[i][k]=(A[i][k]-sum2)/U[k][k];
sum2=0;
}

}

for (i=0;ifor(j=0;jprintf("L[%d][%d]=%f; U[%d][%d]=%f\n",i,j,L[i][j],i,j,U[i][j]);

}
}
}

y[0]=b[0];
for (k=1;kfor (m=0;msum1+=L[k][m]*y[m];
}
y[k]=b[k]- sum1;
sum1=0;
}
x[n-1]=y[n-1]/U[n-1][n-1];
for (k=n-2;k>=0;k--){
for (m=k+1;msum2+=U[k][m]*x[m];
}
x[k]=(y[k]-sum2)/U[k][k];
sum2=0;
}
for (i=0;iprintf("x[%d]=%f\n",i,x[i]);
}

}

相关文档
最新文档