C++基础(满秩矩阵的LU分解)
/**
*LU分解函数(V2非递归方法)
*@param A (in)输入矩阵
*@param L (out)输出L矩阵
*@param U (out)输出U矩阵
* @ param @return分解成功返回非零值,大测试提示未能返回零
*/
int lu分解(double * * a,double * * l,double * * u,int size)
双* *斧;
Ax =(double * *)malloc(sizeof(double *)* size);
for(I = 0;I <大小;i++)
Ax[I]=(double *)malloc(sizeof(double)* size);
for(I = 0;I <大小;i++)
for(j = 0;j <大小;j++)
Ax[I][j]= A[I][j];
for(I = 1;I <大小;i++)
for(j = 0;j < I;j++)
U[I][j]= 0;
for(I = 0;I <大小;i++)
{
L[I][I]= 1;
for(j = I+1;j <大小;j++)
L[I][j]= 0;
}
for(k = 0;k <大小;k++)
{
U[k][k]= Ax[k][k];
for(I = k+1;I <大小;i++)
{
L[I][k]= Ax[I][k]/U[k][k];
U[k][I]= Ax[k][I];
}
for(I = k+1;I <大小;i++)
for(j = k+1;j <大小;j++)
Ax[I][j]= Ax[I][j]-L[I][k]* U[k][j];
}
for(I = 0;I <大小;i++)
free(Ax[I]);
免费(Ax);
return 1;
}
0条评论