/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Spn:Motor de Matemáticas desde0 Eng:Math Engine from scratch

 
      Índice del Foro elrincondelc.com -> Gráficos
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
compusystems



Registrado: 05 Oct 2012
Mensajes: 13
Ubicación: Colombia

MensajePublicado: 10/10/2012 2:40 pm
Título: Spn:Motor de Matemáticas desde0 Eng:Math Engine from scratch

[Proyecto] Spn:Motor de Matemáticas desde 0 Eng:Math Engine from scratch.

Blog del autor original del proyecto

Lord Pakus Blog:


Lord Pakus inicio el proyecto de Math Engine from scratch con bibliotecas de Vectores y Matrices, que me parece un buen pedestal para continuarlo, y por que no de pronto en un futuro se convierta en un motor de calculo numérico y simbólico CAS (Computer Algebra System) como el famoso xCAS http://www-fourier.ujf-grenoble.fr/~parisse/giac.html

Para expandir el proyecto, lo primero es aumentar el numero de funciones de la biblioteca de Vectores y Matrices, como se haría esto?, si conocen el paquete matematico MatLab acronimo de MatrixLaboratory verán que se opera en base a vectores, entonces hay muchas funciones que podemos emularlas en nuestro paquete, pero para esto requiero la ayuda de vosotros...

Necesito una biblioteca en C/C++ que maneje cadenas de texto, por que la entrada de datos sera lineal, como la entrada de datos de muchos paquetes matematicos




y para este caso en formato de vector/matriz, por ejemplo para iniciar

MakeVector( Vector0, "[ 11, 6, 3, 4 ]" ); crearía un arreglo con nombre identificador o variable del primer argumento de la función MakeVector asi:

float Vector0[ 4 ] = { 11.0f, 6.0f, 3.0f, 4.0f };

análogamente para una matriz (vector de vectores o un también llamado array bidimensional)

MakeMatrix( Matrix3, "[ [ 1, 2, 3, 4.3 ], [ 5, 6, 7.9, 8 ]]" ); Se decodifica en:

float Matrix0[ 2 ][ 4 ] = { { 1.0f, 2.0f, 3.0f, 4.3f }, { 5.0f, 6.0f, 7.9f, 8.0f } };

[ [ 1, 2, 3, 4.3 ], [ 5, 6, 7.9, 8 ]] puede ser vista como

[ [ 1, 2, 3, 4.3 ]
[ 5, 6, 7.9, 8 ]]

Otro tipo de entrada de matrices para no usar muchos corchetes

MakeMatrix( Matrix3, "[ 1, 2, 3, 4.3 ; 5, 6, 7.9, 8 ]" ); Se decodifica en:

float Matrix0[ 2 ][ 4 ] = { { 1.0f, 2.0f, 3.0f, 4.3f }, { 5.0f, 6.0f, 7.9f, 8.0f } };

EL punto y coma dentro de "[ 1, 2, 3, 4.3 ; 5, 6, 7.9, 8 ]" indica nueva fila

Redactando ... por favor espere

Por que la entrada de datos en cadena, para que el programa sea mas intuitivo o mas cercano al lenguaje matematico

EL primer intento codigo

makeVector_version00.cpp
Código:
#include <iostream>
using namespace std;

int *Vector_IdName;
int Vector, Vector_Dim;
   
int main( int argc, char *argv[ ] ){

   cout << "Ingresa el tamanio del vector: Vector_Dim=";
   cin >> Vector_Dim;
   Vector_IdName = new int[ Vector_Dim ];
   
   cout << "Ingresa cada elemento del vector: luego [ENTER] para cada uno" << endl;
   for( int i = 0; i < Vector_Dim; i++ ){
      cin >> Vector_IdName[ i ];
   }
   
   cout << "Vector0 = [ ";
   for( int i = 0; i < Vector_Dim; i++ ){
      cout << Vector_IdName[ i ] << " ";
   }
   cout << "]" << endl;
   
   //delete[] Vector_IdName;
   return 0;   
}

// Meta
//int MakeVector( *Vector_IdName, Vector ){
   // Help
//}

//MakeVector( Vector0, "[ 11, 6, 3, 4 ]" ); crearía un arreglo con nombre identificador o variable del primer argumento de la función MakeVector asi:
//float Vector0[ 4 ] = { 11.0f, 6.0f, 3.0f, 4.0f };

}


La anterior manera de entrar dato es elemento por elemento Sad y lo que se desea es en una sola sentencia

Basado en Operaciones con matrices – Clase Matriz en c++ del blog
http://ronnyml.wordpress.com/2009/07/04/operaciones-con-matrices-clase-matriz-en-c/

Entonces en resumen es decodificar la cadena "[ 11, 6, 3, 4 ]" para convertirla en Array

2do avance

Código:
#include <iostream>
using namespace std;
#include <string.h>

   
int main( int argc, char *argv[ ] ){

   char vector_string[ ] = "[ [ 1, 2, 3, 4.3  ], [ 5, 6, 7.9, 8  ]]";
   char *pvector_string;
   cout << "Splitting string" << vector_string << "into tokens:\n" << endl;
   pvector_string = strtok( vector_string, " [,]" ); // Help1: Que subcadena se obtuvo?
   
   while( pvector_string != NULL ){
      cout << pvector_string << endl; // Despliega subcadenas de texto
      pvector_string = strtok( NULL, " [,]" ); // Help2: Null equivale a la ultima posicion
   }   
   
   return 0;   
}

// Input: "[ [ 1, 2, 3, 4.3  ], [ 5, 6, 7.9, 8  ]]"
// Output:   1 2 3 4.3 5 6 7.9 8

// Meta:
//  Input: MakeMatrix( Matrix3, "[ 1, 2, 3, 4.3  ;  5, 6, 7.9, 8  ]" );
// Output: float Matrix0[ 2 ][ 4 ] = { { 1.0f, 2.0f, 3.0f, 4.3f }, { 5.0f, 6.0f, 7.9f, 8.0f } };



Basado en:
http://www.cplusplus.com/reference/string/string/
Volver arriba
Requiem



Registrado: 11 Abr 2006
Mensajes: 706

MensajePublicado: 31/03/2013 2:24 pm
Título:

Buenas....
Ya se que el tema es antiguo, pero solo para informaros que el link al motor de matematicas lo he cambiado de ruta... la nueva es http://lordpakus.blogspot.com.es/2013/01/math-engine.html

Nos vemos
Volver arriba
      Índice del Foro elrincondelc.com -> Gráficos
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com