📄 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 + -