高斯消元模板

高斯消元模板

void gauss() {
    fo(i,1,n-1) {
        fo(j,i+1,n) if (abs(matrix[j].a[i])>abs(matrix[i].a[i])) 
        swap(matrix[i],matrix[j]);
        fo(j,i+1,n) {
            db f=matrix[j].a[i]/matrix[i].a[i];
            fo(k,i,n) matrix[j].a[k]=matrix[i].a[k]*f-matrix[j].a[k];
            matrix[j].b=matrix[i].b*f-matrix[j].b;
        }
    }
    fd(i,n,2) {
        fo(j,1,i-1) {
            db f=matrix[j].a[i]/matrix[i].a[i];
            fo(k,j,n) matrix[j].a[k]=matrix[i].a[k]*f-matrix[j].a[k];
            matrix[j].b=matrix[i].b*f-matrix[j].b;
        }
    }
    fo(i,1,n) an[i]=matrix[i].b/matrix[i].a[i];
}

你可能感兴趣的:(模板,高斯消元)