Есть ли способ заменить встроенную параметри c имя переменной в sympy? - PullRequest
1 голос
/ 10 января 2020
import sympy as sp

a = sp.Matrix([[1,1,1],[0,0,0],[0,0,0]])

b = sp.Matrix([35,0,0])

c = a.gauss_jordan_solve(b)

print(c[0][0])
print(c[0][1])
print(c[0][2])

Вывод:

-tau0 - tau1 + 35

tau0

tau1

Я хочу заменить tau0 и tau1 на любую букву, как мне сделать sh это?

1 Ответ

0 голосов
/ 10 января 2020

В сеансе isympy, где x и y уже определены как символы:

In [22]: sol, params = a.gauss_jordan_solve(b)                                                            

In [23]: sol                                                                                              
Out[23]: 
⎡-τ₀ - τ₁ + 35⎤
⎢             ⎥
⎢     τ₀      ⎥
⎢             ⎥
⎣     τ₁      ⎦

In [24]: params                                                                                           
Out[24]: 
⎡τ₀⎤
⎢  ⎥
⎣τ₁⎦

In [25]: sol.replace(params[0], x).replace(params[1], y)                                                  
Out[25]: 
⎡-x - y + 35⎤
⎢           ⎥
⎢     x     ⎥
⎢           ⎥
⎣     y     ⎦

sol и params являются sympy.Matrix объектами. taus sympy.Symbol.

или чертеж из gauss_jordan_solve документов:

In [74]: sol.xreplace({params[0]:x, params[1]:y})                                                         
Out[74]: 
⎡-x - y + 35⎤
⎢           ⎥
⎢     x     ⎥
⎢           ⎥
⎣     y     ⎦

код, который генерирует эти tau имена:

    # Free parameters
    # what are current unnumbered free symbol names?
    name = _uniquely_named_symbol('tau', aug,
        compare=lambda i: str(i).rstrip('1234567890')).name
    gen = numbered_symbols(name)
    tau = Matrix([next(gen) for k in range((col - rank)*B_cols)]).reshape(
        col - rank, B_cols)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...