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

📄 cholesky.cpp

📁 该程序是正定矩阵的Cholesky分解实例
💻 CPP
字号:
// Cholesky.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include<MATH.H>
//Cholesky分解,求解正定对称矩阵的三角分解
int main(int argc, char* argv[])
{
	double (*A)[4];
	A=new double[4][4];
	//输入矩阵
//	printf("A[0][0]=");scanf("%f",&A[0][0]);
//	printf("A[0][1]=");scanf("%f",&A[0][1]);
//	printf("A[0][2]=");scanf("%f",&A[0][2]);
//	printf("A[0][3]=");scanf("%f",&A[0][3]);
//	printf("A[1][0]=");scanf("%f",&A[1][0]);
//	printf("A[1][1]=");scanf("%f",&A[1][1]);
//	printf("A[1][2]=");scanf("%f",&A[1][2]);
//	printf("A[1][3]=");scanf("%f",&A[1][3]);
//	printf("A[2][0]=");scanf("%f",&A[2][0]);
//	printf("A[2][1]=");scanf("%f",&A[2][1]);
//	printf("A[2][2]=");scanf("%f",&A[2][2]);
//	printf("A[2][3]=");scanf("%f",&A[2][3]);
//	printf("A[3][0]=");scanf("%f",&A[3][0]);
//	printf("A[3][1]=");scanf("%f",&A[3][1]);
//	printf("A[3][2]=");scanf("%f",&A[3][2]);
//	printf("A[3][3]=");scanf("%f",&A[3][3]);

	A[0][0]=5;
	A[0][1]=7;
	A[0][2]=6;
	A[0][3]=5;
	A[1][0]=7;
	A[1][1]=10;
	A[1][2]=8;
	A[1][3]=7;
	A[2][0]=6;
	A[2][1]=8;
	A[2][2]=10;
	A[2][3]=9;
	A[3][0]=5;
	A[3][1]=7;
	A[3][2]=9;
	A[3][3]=10;
	
	const int n=4;
	int i,j,k;
	double ds;

//start,if needed.
	if(A[0][0]<=0)
		return -1;
	//开始,赋初值  
	A[0][0]=sqrt(A[0][0]);
	ds=A[0][0];
	for(i=1;i<n;i++)
		A[i][0]=A[i][0]/A[0][0];
	for(j=1;j<n;j++)
	{
		for(k=0;k<j;k++)
		{
			A[j][j]=A[j][j]-A[j][k]*A[j][k];
		}
		if(A[j][j]<=0)
		{
			return -1;
		}
		A[j][j]=sqrt(A[j][j]);
		ds=ds*A[j][j];
		for(i=j+1;i<n;i++)
		{
			for(k=0;k<j;k++)
			{
				A[i][j]=A[i][j]-A[i][k]*A[j][k];
			}
			A[i][j]=A[i][j]/A[j][j];
		}
	}
	ds=ds*ds;
	for(i=0;i<n-1;i++)
	{
		for(j=i+1;j<n;j++)
		{
			A[i][j]=0;
		}
	}
	//stop here.
	
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			printf("%lf	",A[i][j]);
		}
		printf("\n");

	}
	printf("Hello World!\n");
	return 0;
}

⌨️ 快捷键说明

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