Как использовать решения, созданные с помощью решателя линейных уравнений Simpy - PullRequest
0 голосов
/ 30 декабря 2018

Я использую sympy для решения системы линейных уравнений, и я хочу использовать одно из решений в дальнейших расчетах.Во-первых, я хотел извлечь конкретное решение из сгенерированного словаря для моей системы линейных уравнений.Я попытался dict ['key'] , как я полагаю, вы бы нормально, но это работаетНиже приведен код, который я пытался запустить.

from sympy import symbols, solve

m2,x2a,x2b,x2c,m3,m4,m5,x5a,x5b,x5c = 
symbols('m2,x2a,x2b,x2c,m3,m4,m5,x5a,x5b,x5c')
solution = solve((100-m2-m3,
              .980*m3-.96*(.450*100),
              100*.300-m2*x2a,
              1-x2a-x2b-x2c,
              x2c*m2-.04*(.450*100),
              m2-m4-m5,
              m2*x2b-m4*.06-m5*x5b,
              .940*m4-.97*(x2a*m2),
              m5*x5a-.03*(x2a*m2),
              1-x5a-x5b-x5c),
            [m2,x2a,x2b,x2c,m3,m4,m5,x5a,x5b,x5c], dict=True)
print(solution[0]['m2'])

введите описание изображения здесь

1 Ответ

0 голосов
/ 30 декабря 2018

Иногда может быть несколько решений уравнения или системы уравнений.Вот почему sym.solve возвращает список диктов, а не просто диктовку.

Обратите внимание, что print(solution) начинается с квадратной скобки (с указанием списка):

[{m2: ...}]

Следовательно, длячтобы получить доступ к значению m2 для первого (и только в этом случае) решения, вы должны использовать

solution[0][m2]

. В общем, для просмотра всех решений вы можете использовать:

for s in solution:
    print(s[m2])

Обратите внимание, что в качестве ключа, а не строк в диктовке используются символы SymPy.

Если вы когда-нибудь столкнетесь с подобной проблемой снова, вы можете исследовать проблему, проверив атрибут .keys:

In [190]: list(solution[0].keys())
Out[190]: [m2, x2a, x2b, x2c, m3, m4, m5, x5a, x5b, x5c]

Если бы ключи были строками, вы бы увидели ['m2', 'x2a', 'x2b', 'x2c', 'm3', 'm4', 'm5', 'x5a', 'x5b', 'x5c'].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...