[Matematica pura, fisica, chimica, ecc.: problemi di allenamento del cervello non legati in alcun modo al commercio - pagina 558

 
Se il vettore1 è ortogonale al vettore2 e il vettore2 è ortogonale al vettore3, allora il vettore1 non è sempre ortogonale al vettore3 anche nello spazio tridimensionale, figuriamoci in più dimensioni
 
alsu:
Può non diventare co-direzionale, ma semplicemente ad un angolo obliquo rispetto a tutti o ad alcuni dei vettori
Ma non può! Non può a quelli già elaborati, ma può al prossimo input, ma le prossime iterazioni li tratteranno allo stesso modo.
 
MetaDriver:
Ma non può! A quelli già elaborati, non può, ma al prossimo input, può, ma le prossime iterazioni li tratteranno ugualmente.
Le iterazioni successive nel caso generale non mantengono l'orientamento ai vettori elaborati in precedenza - vedi il mio post precedente
 
alsu:
Se il vettore1 è ortogonale al vettore2 e il vettore2 è ortogonale al vettore3, allora il vettore1 è lungi dall'essere sempre ortogonale al vettore3 anche nello spazio tridimensionale, figuriamoci in più dimensioni

Quindi non hai capito il punto PRINCIPALE. La trasformazione ad ogni passo è strettamente piatta - mette il vettore in orto-posizione al precedente, lasciandolo ortogonale a tutti i precedenti. Questo è quello a cui ho puntato fin dall'inizio. Questo era il problema (che ora è stato risolto).

Ripensaci. Controllare.

 
alsu:
Le iterazioni seguenti generalmente non mantengono un'orogonalità ai vettori elaborati in precedenza - vedi il mio post precedente

mantenere.

Forse non sono stato abbastanza chiaro. Ora scriverò uno schema completo. è un piccolo.

 
MetaDriver:

Quindi non capite il punto PRINCIPALE. La trasformazione in ogni passo è strettamente piatta - mette il vettore in orto-posizione al precedente, lasciandolo ortogonale a tutti i precedenti. Questo è quello a cui ho puntato fin dall'inizio. Questo era il problema (che ora è stato risolto).

Ripensaci. Controllare.

Ho controllato))

La trasformazione è, naturalmente, strettamente piana, e il risultato è generalmente al segno esatto indipendente dalla scelta del vettore iniziale arbitrario - ma solo in questo piano. Chi ci ha detto che tra un numero infinito di opzioni per disegnare un piano attraverso un dato vettore, abbiamo scelto quella giusta?

Ecco un esempio. Supponiamo di avere due vettori nello spazio tridimensionale: (1,0,0) e (0,sqrt(2),sqrt(2)). Sono ortogonali, come potete vedere. Hai iniziato prendendo un x1 arbitrario nel piano z=0 e usandolo per costruire un vettore ortogonale (0,1,0) al primo vettore. Otteniamo che l'algoritmo è completo, ma il risultato non è ottenuto - il terzo vettore non è ortogonale al secondo vettore rimanente. E per ottenere la risposta giusta, bisogna fare attenzione prima di scegliere il piano giusto durante la prima costruzione - e poi si arriva alla variante (0,-sqrt(2),sqrt(2)) o alla seconda soluzione possibile.

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

  }

Non ho spiegato come ottenere il prodotto scalare e la generazione del vettore iniziale. È abbastanza autoesplicativo.

Non ho nemmeno descritto la sottrazione vettoriale e la moltiplicazione vettoriale per un numero. Lo pseudocodice è buono quanto...

 
alsu:

Controllato))

La trasformazione è, naturalmente, strettamente planare, e il risultato è generalmente accurato con un segno indipendentemente dalla scelta del vettore originale arbitrario - ma solo in questo piano. Chi ci ha detto che tra un numero infinito di opzioni per disegnare un piano attraverso un dato vettore abbiamo scelto quella giusta?

Ecco un esempio. Supponiamo di avere due vettori nello spazio tridimensionale: (1,0,0) e (0,sqrt(2),sqrt(2)). Sono ortogonali, come potete vedere. Hai iniziato prendendo un x1 arbitrario nel piano z=0 e usandolo per costruire un vettore ortogonale (0,1,0) al primo vettore. Otteniamo che l'algoritmo è completo, ma il risultato non è ottenuto - il terzo vettore non è ortogonale al secondo vettore rimanente. E per ottenere la risposta giusta, bisogna fare attenzione prima di scegliere il piano giusto durante la prima costruzione - e poi si arriva alla variante (0,-sqrt(2),sqrt(2)) o alla seconda soluzione possibile.

Non prenderò in aereo Z=0 :))

Prendo l'arbitrario x1 = {random, random, random};

Qual è la probabilità che cada nel piano Z=0?

;-))

 
MetaDriver:

Non prenderò Z=0 :))

Prendo solo x1 casuale = {casuale, casuale, casuale};

qual è la probabilità che cada nel piano Z=0?

;-))

esattamente la stessa della probabilità che colpisca il piano "giusto", cioè zero ))
 
alsu:
esattamente la stessa della probabilità che colpisca il piano "giusto", cioè zero ))
La scelta di un vettore arbitrario fissa il piano di calcolo - un solo piano può essere tracciato attraverso 2 vettori. Nel mio esempio, si può prendere uno qualsiasi di un numero infinito di piani e ottenere un numero infinito di soluzioni, ma finché non si prende il piano giusto, non si ottiene la risposta giusta.