Koduję funkcję, która rozwiązuje dowolną liczbę równoczesnych równań. Liczba równań jest ustawiana przez jeden z parametrów funkcji, a każde równanie jest zbudowane z wielu symboli - tyle symboli, ile jest równań. Oznacza to, że nie mogę po prostu zakodować kodów równań, a nawet symboli potrzebnych do ułożenia równań; funkcja musi być w stanie obsłużyć dowolną liczbę równań. Moje pytanie brzmi: jak utworzyć listę symboli?SymPy - dowolna liczba symboli
Mam jedno możliwe rozwiązanie, ale moje jelito mówi mi, że to nie będzie bardzo wydajne. Proszę dać mi znać, jeśli jest lepszy sposób na zrobienie tego.
Jestem nowy w firmie SymPy i nadal czuję się o niej dobrze. O ile widzę, symbole muszą być zdefiniowane za pomocą ciągu znaków. W związku z tym mogę utworzyć ciągi szeregowe poprzez dodanie numeru zwiększającego do litery (np. "T0", "t1" itp.), Dodać je do listy, a następnie utworzyć symbole, używając tych ciągów jako parametrów. Symbole te byłyby przechowywane na liście i byłyby wykorzystywane do tworzenia równań.
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...
Czy to najlepszy sposób na zrobienie tego, czy też jest bardziej efektywne podejście?
Dzięki! To wygląda naprawdę prosto. – thornate
Działa również dla liter: 'symbols ('a: g')'. – asmeurer
tylko jedna uwaga tutaj, że w sympy to jest krotka, a nie lista ...istnieje niewielka różnica, głównie jedna przechyłka definiująca rzeczy do elementów listy: a0 = t + 1 spowoduje błąd. – user836925