Vorrei creare una matrice 3D di dimensioni specifiche calcolando un valore per ciascuna combinazione di indici. Ogni valore nella matrice sarà simbolico.Matrice simbolica multidimensionale in Python
Quello che ho cercato fino ad oggi:
import numpy as np
import sympy as sp
var1 = np.arange(1,10,2)
var2 = np.arange(1,10,2)
var3 = np.arange(20,50,5)
myMatrix = np.zeros(shape = (len(var1), len(var2), len(var3)))
t = sp.symbols('t')
for ii in range(len(var1)):
for jj in range(len(var2)):
for kk in range(len(var3)):
myMatrix[ii][jj][kk] = var1[ii] * var2[jj] * var3[kk] * t
Questo mi dà l'errore:
TypeError: can't convert expression to float
che, per quanto ho capito è dovuto alla combinazione di NumPy e sympy. Pertanto, ho provato:
myMatrix = sp.MatrixSymbol('temp', len(var1), len(var2), len(var3))
invece di:
myMatrix = np.zeros(shape = (len(var1), len(var2), len(var3)))
e ottenuto un errore:
TypeError: new() takes exactly 4 arguments (5 given)
In sintesi, la mia domanda è: come posso creare una matrice 3D con qualsiasi variabile all'interno di essere in grado di usarlo nel ciclo annidato, che comporta il calcolo simbolico?
(Questo è il mio primo post in questa comunità, quindi per favore fatemi sapere se ho fatto qualcosa di sbagliato.)
SymPy ha un tipo di matrice. Se stai creando una matrice simbolica, è meglio usarla. – asmeurer
In realtà, non ho notato che la matrice è 3D. In SymPy 1.0 sarai in grado di usare 'sympy.tensor.array.Array'. – asmeurer