Sto codificando una funzione che risolve un numero arbitrario di equazioni simultanee. Il numero di equazioni è impostato da uno dei parametri della funzione e ogni equazione è costruita da un numero di simboli - come molti simboli quante sono le equazioni. Ciò significa che non posso semplicemente codificare le equazioni, o anche i simboli necessari per mettere insieme le equazioni; la funzione deve essere in grado di gestire qualsiasi numero di equazioni. Quindi, la mia domanda è, come faccio a produrre una lista di simboli?SymPy - Numero arbitrario di simboli
Ho una soluzione possibile, ma il mio istinto mi dice che non sarà molto efficiente. Per favore fatemi sapere se c'è un modo migliore per farlo.
Sono nuovo di SymPy e mi sento ancora a mio agio. Per quanto posso vedere, i simboli devono essere definiti con una stringa. Pertanto, posso produrre stringhe di serie aggiungendo un numero incrementale a una lettera (ad esempio 't0', 't1', ecc.), Aggiungerli a una lista e quindi creare i simboli utilizzando tali stringhe come parametri. Questi simboli verrebbero archiviati in una lista e sarebbero usati per produrre le equazioni.
def solveEquations(numEquations):
symbolNameList = []
symbolList = []
equationList = []
for i in range(numEquations):
name = 't' + str(i)
symbolNameList.append(name)
symbolList.append(Symbol(name))
for i in range(numEquations):
equation = 0
for sym in symbolList:
equation += sym ** i # Or whatever structure the equation needs
equationList.append(equation)
#Then go on to solve the equations...
È questo il modo migliore per farlo oppure esiste un approccio più efficiente?
Grazie! Sembra molto semplice. – thornate
Funziona anche per le lettere: 'simboli ('a: g')'. – asmeurer
solo una nota qui, che in sympy questa è una tupla e non una lista ...c'è una leggera differenza, principalmente, non è possibile definire le cose agli elementi di una lista: a0 = t + 1 darà un errore. – user836925