//cout<
//cout<
//cout<
#include
#include
#include
#define N 5
void main()
{
//三对角阵的Crout分解
double a[N][N]={{2,-1,0,0,0},{-1,2,-1,0,0},{0,-1,2,-1,0},{0,0,-1,2,-1},{0,0,0,-1,2}};
double f[N]={1,0,0,0,0};
double L[N][N];
double U[N][N];
double y[N];
double x[N];
int t,r=0;
for(int i=0;i
{
for(int j=0;j
{
L[i][j]=U[i][j]=0;
}
}
cout<
for(i=0;i
{
for(int j=0;j
{
cout<
}
cout<
}
/*for(i=0;i
{
for(j=0;j
{
if(i==0)
{
if(a[i][i]!=0&&a[i][i+1]!=0||a[i][j]==0)*/
for(i=0;i
{
if(i==0)
{
if(a[i][i]==0||a[i][i+1]==0)
{
cout<
break;
}
if(fabs(a[i][i])<=fabs(a[i][i+1]))
{
cout<
break;
}
}
else if(i==N-1)
{
if(a[i][i]==0||a[i][i-1]==0)
{
cout<
break;
}
if(fabs(a[i][i])<=fabs(a[i][i-1]))
{
cout<
break;
}
}
else
{
if(a[i][i]==0||a[i][i-1]==0||a[i][i+1]==0)
{
cout<
break;
}
if(fabs(a[i][i])
{
cout<
break;
}
}
t=i;
}
if(t==N-1)
{
cout<
for(i=0;i
{
if(i==0)
{
L[i][i]=a[i][i];
U[i][i+1]=a[i][i+1]/L[i][i];
U[i][i]=1;
continue;
}
if(i==N-1)
{
L[i][i-1]=L[i][i]=a[i][i]-a[i][i-1]*U[i-1][i];
U[i][i]=1;
}
else
{
L[i][i-1]=L[i][i]=a[i][i]-a[i][i-1]*U[i-1][i];
U[i][i+1]=a[i][i+1]/L[i][i];
U[i][i]=1;
}
}
cout<
for(i=0;i
{
for(int j=0;j
{
//cout<
//cout<
cout<
}
cout<
}
cout<
for(i=0;i
{
for(int j=0;j
{
cout<
}
cout<
}
y[0]=f[0]/a[0][0];//解下三角方程组
for(i=1;i
{
y[i]=(f[i]-a[i][i-1]*y[i-1])/L[i][i];
}
x[i-1]=y[i-1];//解上三角方程组
for(i=N-2;i>=0;i--)
{
x[i]=y[i]-U[i][i+1]*x[i+1];
}
cout<
for(i=0;i
{
cout<
}
cout<
}
}