예제 #1
0
/* solves Ax = b by cholesky decomposition. Returns x in b*/
void
solve_cholesky(float **A, float *b, int dim)
{
    cholesky_decomp(A, dim);
    forward_sub(A, b, dim);
    back_sub(A, b, dim);
}
예제 #2
0
파일: lup.c 프로젝트: mastanggt/Lup
float* lup_solve(float** a, float* b, int size){ //решение через lup-разложение
	float** a1, *x, *y;
	int* p;
	int i, j;
	a1=array_initialize(size);
	copymatrix(a, a1, size);
	
	

	p=lup_decomposition(a1, size);
	

	y=forward_sub(a1, b, p, size);

	x=back_sub(a1, y, size);
	
	
	for (i = 0; i < size; i++){
		for (j = 0; j < size; j++) {
			printf("%f ", a1[i][j]);
		}
	printf("\n");
	}
	printf("\n\n");
	
	
	printf("P \n");
	for (i=0; i<size;i++){
			printf("%d ", p[i]); }
	printf("\n");
	
	printf("\n\nL\n\n");

	for (i = 0; i < size; i++){
		for (j = 0; j < size; j++) {
			if (i==j){
				printf("1 ");
				} else if (i > j){
					printf("%f ", a1[i][j]);
				} else {
					printf("0 ");
				}
			}
		printf("\n");
		}
	printf("\n\n");

	printf("\n\nU\n\n");
		
	for (i = 0; i < size; i++){
		for (j = 0; j < size; j++) {
			if (i <= j){
				printf("%f ", a1[i][j]);
			} else {
				printf("0 ");
			}
		}
		printf("\n");
	}
	printf("\n\n");
	
	
	return x;
}