[Archivo] Matemáticas puras, física, química, etc.: problemas de entrenamiento cerebral no relacionados con el comercio de ninguna manera - página 561

 

Estoy dormido, estoy dormido.

 
Parece que hay un procedimiento estándar para construir un conjunto ortonormal. Ya sea lagrangiano o algo más. Muy bien, si has resuelto el problema y lo has demostrado, entonces de qué hay que hablar...
 
Mathemat:
Parece que hay un procedimiento estándar para construir un conjunto ortonormal. Ya sea de Lagrange o de otra cosa. Muy bien, si has resuelto el problema y lo has demostrado, entonces de qué hay que hablar...

¡No, no, no! Si tienes una, ¡anímate a publicarla! Muy interesante, no he encontrado ninguno.

Interesado de diferentes maneras, ya que puede afectar a la velocidad de resolución del problema objetivo.

 
tara:

Tiene sentido. ¿Con qué vamos a ganar dinero?

¡Forex!
 
MetaDriver: ¡¡¡Nenenyenyenne!!! Si lo hay, ¡anímate a publicarlo! Es muy interesante, lo busqué y no lo encontré.

Bueno, todavía no he profundizado en ello. El proceso Gram-Schmidt, está en el álgebra lineal. O formas cuadráticas.

Por lo que tengo entendido, es suficiente para empezar y no es el primer paso. También hay una prueba, e interpolaciones geométricas.

Tengo la sospecha de que debería haber algo nativo para este proceso en las funciones de OpenCL.

 

El método de ortogonalización en serie puede verse en el fragmento de código siguiente. El gradiente es un vector aleatorio del que se eliminan las proyecciones sobre los vectores base. La base se encuentra en una matriz unidimensional Sarray . Todas las matrices se declaran como globales. El proceso está, creo, claro en los comentarios.

//+------------------------------------------------------------------+
//|  в массиве Sarray записан ортонормированный базис из k векторов  |
//|  размерности NeuroCellDim каждый                                 |
//|  строится ортогональная проекция вектора Gradient на базис       |
//|  в случае успеха проекция нормируется                            |
//|  и добавляется в базис, если позволяет признак записи: write > 0 |
//+------------------------------------------------------------------+
int OrthogonalProjection(int k, int write)
{
   int   i, j, err = 0, index = 0;
   double Alpha;
   if (k > 0) // если k>0, то базис не пуст
      for (i = 0; i < k; i++)
      {
         for (j = 0; j < NeuroCellDim; j++)
         {
            InputX[j] = Sarray[index]; // извлекаем i-й орт в InputX
            index++;
         }
         Alpha = ScalarProduct( Gradient, InputX); // скалярное произведение, cos(Gradient, InputX)
         if (Alpha > 1.0 - delta)   // если cos() = 1
         {
            err = -1; // считаем, что такой вектор линейно зависим от векторов базиса
            break;
         }
//       Gradient := Gradient - Alpha * InputX     с нормировкой       
         AddVektors( Gradient, InputX, -Alpha); // орт к базису из i+1 векторов
      }

   if (err >= 0 && write > 0) // если существует проекция и позволяет признак записи
      for (j = 0; j < NeuroCellDim; j++)  // записываем новый орт в базис
      {
         Sarray[index] = Gradient[j]; 
         index++;
      }      

   return(err);
}
//+--- OrthogonalProjection End -------------------------------------+
 

Gente, denme una pista. Estoy perdido. El problema es el siguiente: existe una muestra de datos que se aproxima muy bien mediante una regresión lineal (la variable independiente es el número de referencia).

El gráfico muestra una ecuación de regresión lineal. Quiero transformar los datos de la muestra para que sean invariantes con respecto a los recuentos. He intentado seleccionar un término libre de la ecuación mediante operaciones aritméticas y transformar los datos de la muestra a este valor. Pero al principio aparecía un pico en el nivel de 0,7, 0,46, etc. que iba hasta la asíntota del nivel necesario. ¿De dónde viene este pico al principio? ¿Se puede eliminar cambiando la fórmula?

Se adjunta el Excel por si acaso.

Archivos adjuntos:
 
alexeymosc:

Gente, denme una pista. Estoy perdido. El problema es el siguiente: existe una muestra de datos que se aproxima muy bien mediante una regresión lineal (variable independiente - número de referencia).

El gráfico muestra una ecuación de regresión lineal. Quiero transformar los datos de la muestra para que sean invariantes con respecto a los recuentos. He intentado seleccionar un término libre de la ecuación mediante operaciones aritméticas y transformar los datos de la muestra a este valor. Pero al principio aparecía un pico en el nivel de 0,7, 0,46, etc. que iba hasta la asíntota del nivel necesario. ¿De dónde viene este pico al principio? ¿Se puede eliminar cambiando la fórmula?

Se adjunta el Excel por si acaso.

Bien, si no hay otras soluciones, busqué una solución para encontrar el valor del término libre de la ecuación, minimizando R^2 ya por la nueva serie (derivada de la original y que debe ser invariante), es decir, la hice casi lineal. Al parecer, el problema es que los datos originales no son perfectamente lineales...
 
alexeymosc:

Gente, denme una pista. Estoy perdido. El problema es el siguiente: existe una muestra de datos que se aproxima muy bien mediante una regresión lineal (la variable independiente es el número de referencia).

El gráfico muestra una ecuación de regresión lineal. Quiero transformar los datos de la muestra para que sean invariantes con respecto a los recuentos. He intentado seleccionar un término libre de la ecuación mediante operaciones aritméticas y transformar los datos de la muestra a este valor. Pero al principio aparecía un pico en el nivel de 0,7, 0,46, etc. que iba hasta la asíntota del nivel necesario. ¿De dónde viene este pico al principio? ¿Se puede eliminar cambiando la fórmula?

Se adjunta el Excel por si acaso.

Bueno, sólo significa una cosa: el error relativo de aproximación es mayor cuanto menor es X (e Y), pero ¿qué esperas, dividiendo un número pequeño entre otro número pequeño? Prueba a cambiar la variable X' = X+100 y traza una nueva serie en el rango de 100 a 400, no de 0 a 300 - el gráfico será mucho más recto, pero no cambiará el asunto
 

1.

Mislaid 10.03.2012 05:46El método de ortogonalización consistente se puede ver en el trozo de código siguiente. El gradiente es un vector aleatorio

Matemáticas:

1. Bueno, todavía no me he puesto a ello. El proceso Gram-Schmidt, lo enseñan en álgebra lineal. O formas cuadráticas.

Según tengo entendido, no basta con empezar por el primer paso. También hay una prueba, e interpolaciones geométricas.

2. Tengo la corazonada de que debería haber algo nativo para este proceso en las funciones OpenCL.

1. 1. A Mislaid, Mathemat,

Tanto aquí como allí es lo mismo en todas partes, el mismo proceso que yo mismo diseñé ayer. Sustracción consecutiva de proyecciones vectoriales sobre ortos anteriores.

Son días como este los que me hacen sentir como un clásico.... :-))

--

Por cierto, anoche ya hice y depuré mi script de prueba. También encontré un error en el optimizador y lo envié a servicedesk. He evitado el error cambiando ligeramente el código. Así que todo funciona. Fiable y rápido, justo lo que necesitaba.

2. Realmente hay uno en OpenZL, pero sólo para el caso tridimensional. [cross(a, b); construye un vector ortogonal a dos dados ] Lo necesito para dimensión arbitraria.