LU分解法:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define n 6//n为矩阵维数
//矩阵三角分解A=LU
void Doolitte(double a[n][n],double L[n][n],double U[n][n])
{
int i,j,k;//分解L,U时,i,j,k在循环中计算循环次数,sum在循环中求和
double sum;
for(i=0;i<n;i++)
{
L[i][i]=1;
}
for(i=0;i<n;i++)
{
U[0][i]=a[0][i];//U的第一行元素
L[i][0]=a[i][0]/U[0][0];//L的第一列元素
}
//按公式计算L和U
for(k=1;k<n;k++)
{
for(i=k;i<n;i++)//计算U的第k行
{
sum=0;
for(j=0;j<k;j++)
{
sum=sum+L[k][j]*U[j][i];
}
U[k][i]=a[k][i]-sum;
if (U[k][k]==0)