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); }
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; }