⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 4.9 对称正定矩阵的乔里斯基分解与行列式求值 chol.c

📁 许士良常用算法程序集C语言,包括c++一些常用算法代码
💻 C
字号:

#include "math.h"
#include "stdio.h"
int chol(a,n,det)
int n;
double a[],*det;
{ 
	int i,j,k,u,v,l;
    double d;
    if ((a[0]+1.0==1.0)||(a[0]<0.0))
    { 
		printf("fail\n"); 
		return(-2);
	}
    a[0]=sqrt(a[0]);
    d=a[0];
    for (i=1; i<=n-1; i++)
    { 
		u=i*n; a[u]=a[u]/a[0];
	}
    for (j=1; j<=n-1; j++)
    {	
		l=j*n+j;
        for (k=0; k<=j-1; k++)
        { 
			u=j*n+k; a[l]=a[l]-a[u]*a[u];
		}
        if ((a[l]+1.0==1.0)||(a[l]<0.0))
        { 
			printf("fail\n"); 
			return(-2);
		}
        a[l]=sqrt(a[l]);
        d=d*a[l];
        for (i=j+1; i<=n-1; i++)
        { 
			u=i*n+j;
            for (k=0; k<=j-1; k++)
				a[u]=a[u]-a[i*n+k]*a[j*n+k];
            a[u]=a[u]/a[l];
        }
    }
    *det=d*d;
    for (i=0; i<=n-2; i++)
		for (j=i+1; j<=n-1; j++)
			a[i*n+j]=0.0;
    return(2);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -