Example #1
0
Spline::Spline(const char * filename, float precision)
{
		
	controlPoints = loadXMLFile(filename);
	
	int size = controlPoints.size();
	boost::numeric::ublas::matrix<float> leftM = fillLeftMatrix(size);
	boost::numeric::ublas::vector<float> vectorDx = initDeltaVector(size);
	boost::numeric::ublas::vector<float> vectorDy = initDeltaVector(size);
	boost::numeric::ublas::vector<float> vectorDz = initDeltaVector(size);
	boost::numeric::ublas::vector<float> vectorBx = fillRightVector(controlPoints,0);
	boost::numeric::ublas::vector<float> vectorBy = fillRightVector(controlPoints,1);
	boost::numeric::ublas::vector<float> vectorBz = fillRightVector(controlPoints,2);
	  
    boost::numeric::ublas::matrix<float> inverseLeftM = gaussJordan(leftM);
    vectorDx = prod(inverseLeftM,vectorBx);
    vectorDy = prod(inverseLeftM,vectorBy);
    vectorDz = prod(inverseLeftM,vectorBz);
  
    for(unsigned int i=0 ; i<vectorDx.size() ; i++){
    	if(abs(vectorDx[i])<0.001) vectorDx[i]=0;
    	if(abs(vectorDy[i])<0.001) vectorDy[i]=0;
    	if(abs(vectorDz[i])<0.001) vectorDz[i]=0;
    }
    
	createSpline(0.001, precision, vectorDx, vectorDy, vectorDz);
		
}
Example #2
0
int main() {
    Matrix *mat = readMatrix("input.txt");
    if(gaussJordan(mat) == 1) printf("error\n");;
    //printMat(mat,mat -> size);
    writeMatrix(mat);
    destroyMat(mat);
    return 0;
}
int main(int argc, char const *argv[]) {
	int answer;

/*	enterCoefficients(5); */
/*	enterIndTerm(5);      */

	printf("Resolve with Gauss-Jordan (1) or Gauss-Seidel (2)?\n");
	printf("Answer (1/2): \n");
	scanf("%d", &answer);

	if(answer == 1) { 			/* Primera opción: algoritmo de Gauss-Jordan */
		gaussJordan();
	} else if(answer == 2){ 	/* Segunda opción: algoritmo de Gauss-Seidel */
		gaussSeidel();
	}
	return 0;
}