He aquí una idea; y si alguien lo escribe, ¡debe darme crédito por derechos de autor! Construido automáticamente en plantillas de matriz arbitrarias tales que estas matrices no son tipos matemáticos sino más bien de tipo de almacenamiento o estructura. Dependiendo de los parámetros de la plantilla, estas matrices pueden ser tan simples como un valor escalar o tan complejo como una entidad dimensional casi infinita en teoría si la computadora lo permitiera sin quedarse sin memoria, pero en la práctica esto se limitaría a la arquitectura, sistema operativo y compiladores detalles intrínsecos del tamaño de su entero o tipo integral. Entonces uno puede tener una matriz volumétrica de baja dimensión que tiene 3 Dimensiones pero se queda sin memoria porque podría verse así: Matrix<type, 1000000000,1000000000,1000000000> matOutOfBounds
antes que una matriz dimensional mucho más alta como Matrix<type, 2,2,2,2,2,2,2,2>
que sería una matriz volumétrica 8D. La simplificación se puede hacer si son "matrices perfectas". Ahí es donde cada dimensión tiene la misma cantidad exacta de elementos, independientemente de la cantidad de dimensiones que tengan. Por ejemplo: <3,3>
<3,3,3>
<3,3,3,3>
son todas matrices perfectas. La simplificación sería Matrix<type, 4^4>
igual que Matrix<type, 4,4,4,4>
dando una Matriz volumétrica 4D 4x4x4x4 con 96 elementos en una estructura 4D. Donde `Matrix sería una matriz volumétrica tridimensional con muchos elementos, pero tiene una estructura volumétrica tridimensional ya que nuestros relojes y brújulas actuales funcionan de forma tal que 360 grados al círculo completo, 60 minutos, 60 segundos, excepto que hay muchos elementos de almacenamiento de flotadores.
A continuación se verá como una posible biblioteca de C++ que alguien incluiría en sus proyectos; pero la idea aquí es hacerlo un tipo de lenguaje integrado. Entonces cualquiera con su lenguaje y compilador puede usarlos a voluntad.Se pueden utilizar estos con cualquier número de dimensiones, como lo retrata esta plantilla:
// Header Declaration
template<typename ClassType, unsigned int...>
matrix{
}; // No need to show body just declaration for concept
// User Code Would Be
matrix<float,2,3,4,5,7> mat; // This would create a 2x3x4x5x7 matrix that is a 5th dimensional volumetric matrix
// Default type
matrix<int> mat2; // This creates a 1x1 matrix that would in essence be a scalar.
Ahora lo que he mostrado es actual sintaxis de C++ para las plantillas variadic. ¡La idea aquí sería que este tipo de contenedores de matriz se construirían en tipos!
¿Quieres hacerlos matemáticos? Claro que está bien, pero el usuario tendría que definir sus propios "algoritmos, métodos, funciones o rutinas" para hacerlo.
La razón por la que tendrían que ser definido de forma independiente es hacer a esta razón:
mat<float, 3,3,3> mat1; 3x3x3 3D Volumetric Matrix - 27 elements
mat<float, 5,5> mat2; 5x5 2D Linear-Quadratic (Area) Matrix - 25 elements
mat<int, 6,7,8> mat3; 6x7x8 3D Volumetric Matrix - 336 elements
mat<bool, 8> mat4; 1x8 1D Linear Matrix (Array); transpose?
mat4::transpose; // built in - now 8x1 matrix
mat4::transpose; // back to 1x8.
class TheMotherLoad {// Many members and methods };
// ...
mat<TheMotherLoad*, 9,9,9,9,9,9,9,9,9> mat9;
// simplified version
mat<TheMotherLoad*, 9^9> mat9
// A 9 Dimensional Volumetric container So the first the would be a Cube
// with its sides having a length of 9 cells where the Volume 9^3 is the
// First Order of what a Volumetric Matrix is.
// Anything less is linear or quadratic either it being a scalar,
// translation, an array, a line, a point, a vector, rotation, quadratic and area)
// Now that we have a cube that has 729 elements and the next
// three 9s which are the 4th, 5th & 6th dimensions would act as another
// 9x9x9 matrix surrounding the first 3 dimensions respectively.
// Finally the 7th, 8th & 9th dimensions defines the "outer matrix"
// that also has "9x9x9" elements. So in total the number of elements
// in this matrix would be 729^3 and for every
Debido a las propiedades de la forma en matrices son es lo que determina lo que el tipo de operaciones matemáticas que se puede hacer a ellos para esto tiene que ser hecho externamente.
Ya lo han hecho, creo que en COBOL, ¿verdad? Oh, no importa –
En estos días ya no hay muchos idiomas que no tengan lambdas y funciones de orden superior. – sepp2k
+1 para DWIMNWIS –