对阵正定矩阵的楚列斯基(Cholesky)分解(C语言)

原创 2012年03月30日 18:46:31

//定理2.2.3:对阵正定矩阵的楚列斯基(Cholesky)分解
//设A为n阶对阵正定矩阵,则存在一个可逆的下三角矩阵G,使得
//A=GG’,当限定G的对角元为正时,这种分解是唯一的
//
//--------A=GG’的分解算法-------
//参考教材:《数值分析》李乃成,梅立泉,科学出版社
//    《计算方法教程》第二版 凌永祥,陈明逵
#include<stdio.h>
#include<math.h>

int min(int a,int b);
int main(void)
{
 int size=10;
 int i,j,p=0;
 double A[10][10] = {0.0};
 double sum,up=0.0;
 printf("矩阵A[10][10]:\n");
 for(i=0;i<size;i++)
 {
  for(j=0;j<size;j++)
  {
   if(i==j)
    A[i][i]=i+1;
   else
    A[i][j]=min(i,j)-1;
   printf("%5.4f ",A[i][j]);
  }
  printf("\n");
 }
 A[0][0]=sqrt(A[0][0]);
 for(i=1;i<size;i++)
 {
  A[i][0]=A[i][0]/A[0][0];
 }
 for(j=1;i<size-1;i++)
 {
  sum=0.0;
  for(p=0;p<=j-1;p++)
  {
   sum=sum+A[j][p]*A[j][p];
  }
  A[j][j]=sqrt(A[j][j]-sum);
  for(i=j+1;j<size;j++)
  {
   sum=0.0;
   for(p=0;p<=j-1;p++)
   {
    sum=sum+A[i][p]*A[j][p];
   }
   A[i][j]=(A[i][j]-sum)/A[j][j];
  }

 }
 printf("\nCholesky分解后的矩阵G[10][10]:\n");
 for(i=0;i<size;i++)
 {
  for(j=0;j<size;j++)
  {
   if(i<j)
   {
    printf("%5.4f ",up);
   }
   else
   {
    printf("%5.4f ",A[i][j]);
   }
   
  }
  printf("\n");
 }

 return 0;
}

int min(int a,int b)
{
 return a<b?a:b;
}

c语言实现cholesky分解

/* file: cholesky.c */ /* Take the cholesky decomposition in the manner described in FA Graybil...

Cholesky分解法

Cholesky分解法又叫平方根法,是求解对称正定线性方程组最常用的方法之一。对于一般矩阵,为了消除LU分 解的局限性和误差的过分积累,采用了选主元的方法,但对于对称正定矩阵而言,选主元是不必要的。 ...

出列斯基分解对称正定矩阵

  • 2011年04月14日 15:05
  • 3KB
  • 下载

正定矩阵的Cholesky分解

原文地址:正定矩阵的Cholesky分解作者:桢帝爱侬1、为什么要进行矩阵分解       个人认为,首先,当数据量很大时,将一个矩阵分解为若干个矩阵的乘积可以大大降低存储空间;其次,可以减少真正进...

基于Cholesky分解的正定矩阵求逆矩阵

在前面的博客中我提到了如何实现正定矩阵的Cholesky分解,并提供了源代码,通过该代码可以将一个正定矩阵分解为一个上三角矩阵和其转置的乘积,在此基础上,对上三角矩阵进行求逆是十分简单的运算,在得到其...

楚列斯基和追赶法的Matlab程序

  • 2014年11月13日 20:36
  • 29KB
  • 下载

算法 楚列斯基

  • 2012年03月09日 11:04
  • 4KB
  • 下载

矩阵分解 Cholesky分解

Cholesky分解法又叫平方根法,是求解对称正定线性方程组最常用的方法之一。对于一般矩阵,为了消除LU分 解的局限性和误差的过分积累,采用了选主元的方法,但对于对称正定矩阵而言,选主元是不必要的。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:对阵正定矩阵的楚列斯基(Cholesky)分解(C语言)
举报原因:
原因补充:

(最多只允许输入30个字)