高斯消元是什么?其实虽然名字高大上,换个名字就是加减消元法。
首先,我们有一个线性方程组
a11x1+a12x2+..+a1nxn=b1
a21x1+a22x2+..+a2nxn=b2
……..
an1x1+an2x2+..+annxn=bn
写成一个矩阵:
//zhx的代码
for(int a=1;a<=n;a++)
{
if(fabs(m[a][a])<=eps)
{
for(int b=a+1;b<=n;b++)
{
if(fabs(m[b][a])>eps) swap(m[a],m[b]);
break;
}
}
for(int b=a+1;b<=n;b++)
{
ratio=m[b][a]/m[a][a];
for(int c=1;c<=n+1;c++)
{
m[b][c]-=m[a][c]*ratio;
}
}
}
for(int a=n;a>=1;a--)
{
solution[a]=m[a][n+1];
for(int b=a+1;b<=n;b++)
{
solution/=m[a][a];
}
}
lu分解是个神奇的东西,这里先挖个坑,之后再填绝不是因为作业写不完了什么的
公式:
1,将矩阵分解为A=LU,
ukj=akj−∑k−1r=1lkrurj,j=k,k+1,...,n
lik=aik−∑k−1r=1lirurkukk,i=k,k+1,...,n
lkk=1
这里的b为L矩阵,c为U矩阵
2,解方程
yk=bk−∑k−1r=1lkrurj,k=1,2,...,n
xk=yk−∑k−1r=1lirxrukk,k=n,n−1,...,1