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

 
Si el vector1 es ortogonal al vector2 y el vector2 es ortogonal al vector3, entonces el vector1 no siempre es ortogonal al vector3 incluso en un espacio de 3 dimensiones, y mucho menos en más dimensiones
 
alsu:
Puede que no se convierta en codireccional, sino simplemente en un ángulo oblicuo con respecto a todos o algunos de los vectores
Pero no puede! No puede a los ya procesados, pero sí a la siguiente entrada, pero las siguientes iteraciones las tratarán igual.
 
MetaDriver:
Pero no puede! A los ya procesados, no puede, pero a la siguiente entrada, sí, pero las siguientes iteraciones las tratarán igual.
Las siguientes iteraciones en el caso general no conservan la orientación a los vectores procesados anteriormente - ver mi post anterior
 
alsu:
Si el vector1 es ortogonal al vector2 y el vector2 es ortogonal al vector3, entonces el vector1 está lejos de ser siempre ortogonal al vector3 incluso en un espacio tridimensional, y mucho menos en más dimensiones

Así que no has entendido el punto PRINCIPAL. La transformación en cada paso es estrictamente plana - pone el vector en posición orto a la anterior, dejándolo ortogonal a todos los anteriores. Eso es lo que he pretendido desde el principio. Ese era el problema (que ya se ha solucionado).

Piénsalo bien. Compruébalo.

 
alsu:
Las siguientes iteraciones generalmente no conservan una orogonalidad con respecto a los vectores procesados anteriormente - ver mi post anterior

retener.

Tal vez no lo dejé lo suficientemente claro. Ahora escribiré un esquema completo. Es uno pequeño.

 
MetaDriver:

Así que no entiendes el punto PRINCIPAL. La transformación en cada paso es estrictamente plana - pone el vector en posición orto a la anterior, dejándolo ortogonal a todos los anteriores. Eso es lo que pretendía desde el principio. Ese era el problema (que ya se ha solucionado).

Piénsalo bien. Compruébalo.

Lo he comprobado))

La transformación es, por supuesto, estrictamente plana, y el resultado es, en general, de signo exacto e independiente de la elección del vector arbitrario inicial - ¡pero! sólo en este plano. ¿Quién nos ha dicho que de un número infinito de opciones para dibujar un plano a través de un vector dado, elegimos la correcta?

He aquí un ejemplo. Supongamos que tenemos dos vectores en un espacio tridimensional: (1,0,0) y (0,sqrt(2),sqrt(2)). Son ortogonales, como puedes ver. Empezaste tomando un x1 arbitrario en el plano z=0 y utilizándolo para construir un vector ortogonal (0,1,0) al primer vector. Obtenemos que el algoritmo está completo, pero el resultado no se obtiene - el tercer vector no es ortogonal al segundo vector restante. Y para obtener la respuesta correcta, hay que tener cuidado de antemano para elegir el plano correcto durante la primera construcción - y luego se llega a la variante (0,-sqrt(2),sqrt(2)) o la segunda solución posible.

 
double[dim]  GetOrtoVector(int dim, int count, double[][dim] &Input)

  {

    bool error=false;

    double[dim]  Result = RandomInit(dim);

    for (i=0; i<count; i++)  { Result = Ortogonalize(Result, Input[i], error); }
    
    if (error) return GetOrtoVector(dim,count,Input);  else    return Result;

  }

double[dim] Ortogonalize(double[dim] a, double[dim] b, bool &err)

  {

    double SP = sp(a,b);

    if (sp==1.0) {err = true; return a;} else {return  (a-SP*b);  }

  }

No he explicado cómo obtener el producto escalar y la generación del vector inicial. Se explica por sí mismo.

Tampoco describí la sustracción de vectores y la multiplicación de vectores por un número. El pseudocódigo es tan bueno como...

 
alsu:

Comprobado))

La transformación es, por supuesto, estrictamente plana, y el resultado es generalmente exacto a un signo independientemente de la elección del vector arbitrario original - ¡pero! sólo en este plano. ¿Quién nos ha dicho que de un número infinito de opciones para dibujar un plano a través de un vector dado hemos elegido la correcta?

He aquí un ejemplo. Supongamos que tenemos dos vectores en un espacio tridimensional: (1,0,0) y (0,sqrt(2),sqrt(2)). Son ortogonales, como puedes ver. Empezaste tomando un x1 arbitrario en el plano z=0 y utilizándolo para construir un vector ortogonal (0,1,0) al primer vector. Obtenemos que el algoritmo está completo, pero el resultado no se obtiene - el tercer vector no es ortogonal al segundo vector restante. Y para obtener la respuesta correcta, hay que tener cuidado de antemano para elegir el plano correcto durante la primera construcción - y luego se llega a la variante (0,-sqrt(2),sqrt(2)) o la segunda solución posible.

No aceptaré en el plano Z=0 :))

Tomaré arbitrariamente x1 = {al azar, al azar, al azar};

¿Cuál es la probabilidad de que caiga en el plano Z=0?

;-))

 
MetaDriver:

No aceptaré Z=0 :))

Voy a tomar al azar x1 = {al azar, al azar, al azar};

¿cuál es la probabilidad de que caiga en el plano Z=0?

;-))

exactamente la misma que la probabilidad de que golpee el plano "correcto", es decir, cero ))
 
alsu:
exactamente la misma que la probabilidad de que golpee el plano "correcto", es decir, cero ))
La elección de un vector arbitrario fija el plano de cálculo - se puede trazar un único plano a través de 2 vectores. En mi ejemplo, puedes tomar cualquiera de un número infinito de planos, y obtener un número infinito de soluciones, pero hasta que no tomes el plano correcto, no obtendrás la respuesta correcta.
Razón de la queja: