Uso pratico di array n-dimensionale, dove (N> 3)
-
30-09-2019 - |
Domanda
Sono stati di programmazione per gli ultimi 8 anni e ora mi chiedevo che se c'è qualche uso pratico di matrice N-dimensionale, dove N> 3.Mi può solo visualizzarne una struttura di dati che è inferiore o uguale a 3 dimensions.Has una qualsiasi utilizzato più di 3 dimensioni in qualsiasi programma? Esistono usi pratici di una matrice ND che è oltre 3d caso affermativo si prega di inviare alcuni campioni.
Soluzione
L'unico decente esempio mi ricordo era nel testo 1982 Oh! ! Pascal che vi dà un'idea di quanto sia raro è stato nella mia esperienza.
L'esempio è un sistema di scorta di mantenimento in cui i jeans possono essere indicizzati da
inventory[sex][size][length][color][fit] = number_received
, che è solo leggermente forzata. Avresti alcun problema con un database strutturato in modo tale, ma ha un aspetto divertente come codice.
Altri suggerimenti
Prendere quasi tutto dalla fisica, dove tensori sono comuni, ad esempio la relatività generale, chimica computazionale, la fisica quantistica.
http://en.wikipedia.org/wiki/Tensor#Applications
Tensor con rango 4 è comune, per esempio.
http://www.oonumerics.org/FTensor/FTensor.pdf
333 double
334 LMP2::compute_ecorr_lmp2()
335 {
336 Timer tim("ecorr");
337
338 sma2::Index r("r"), s("s");
339 sma2::Array<0> ecorr;
340 double ecorr_lmp2 = 0.0;
341 for (my_occ_pairs_t::const_iterator iter = my_occ_pairs_.begin();
342 iter != my_occ_pairs_.end();
343 iter++) {
344 sma2::Index i(iter->first-nfzc_);
345 sma2::Index j(iter->second-nfzc_);
346 if (j.value() > i.value()) continue;
347 double f;
348 if (i.value() != j.value()) f = 2.0;
349 else f = 1.0;
350 ecorr.zero();
351 ecorr() += f * 2.0 * K_2occ_(i,j,r,s) * T_local_(i,j,r,s);
352 ecorr() -= f * K_2occ_(i,j,s,r) * T_local_(i,j,r,s);
353 ecorr_lmp2 += ecorr.value();
354 }
355
356 msg_->sum(ecorr_lmp2);
357
358 return ecorr_lmp2;
359 }
L'esempio più evidente è un elenco degli spazi voxel ... 3 + 1 = 4 dimensioni:)
Un array che tutti segrete in Ultima III dovrebbe logicamente essere una matrice 4-dimensionale. Ogni sotterraneo è una griglia tridimensionale di cellule, e sono tutti della stessa dimensione.