Helpers - компьютеры, интернет, программирование

Как использовать решения, созданные программой решения линейных уравнений sympy

Я использую 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'])

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

30.12.2018

  • Пожалуйста, разместите код в виде текста. Это помогает нам быстро воспроизвести вашу ситуацию. 30.12.2018

Ответы:


1

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

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

[{m2: ...}]

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

solution[0][m2]

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

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

Также обратите внимание, что в dict в качестве ключей используются символы 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'].

30.12.2018
  • Извините, я опубликовал обновленный код и запустил его. Однако я получаю ключевые ошибки, хотя m2 должен быть в моем словаре. 31.12.2018
  • Ах, словарь использует символы SymPy в качестве ключей. Поэтому используйте solution[0][m2] вместо solution[0]['m2']. 31.12.2018
  • Новые материалы

    Интуитивное понимание тензоров в машинном обучении
    Тензор является важной концепцией во многих научных областях, таких как математика, физика, обработка сигналов и компьютерное зрение, и это лишь некоторые из них. В математике тензор — это..

    Использование машинного обучения для диагностики болезни Альцгеймера, часть 4
    Маркеры семантической согласованности для ранней диагностики болезни Альцгеймера (arXiv) Автор: Давиде Колла , Маттео Дельсанто , Марко Агосто , Бенедетто Витиелло , Даниэле Паоло Радичони..

    Почему объяснимость так важна прямо сейчас?
    По мере того, как системы искусственного интеллекта и инструменты на основе машинного обучения распространяются в нашей повседневной жизни, как практики, так и критики все чаще заявляют о..

    Анимированный математический анализ
    Использование Manim для создания математических анимированных визуализаций Визуализация данных помогает понять скрытые закономерности в данных, которые невозможно визуализировать..

    Создание простого слайдера изображений с помощью JavaScript
    Узнайте, как создать базовый слайдер изображений с помощью HTML, CSS и JavaScript. Введение В этом уроке мы создадим удобный слайдер изображений, используя JavaScript, HTML и CSS. Ползунок..

    Создание базы данных с помощью супергероя «Python»
    В этом посте мы узнаем, как создать «базу данных SQLite с помощью модуля python sqlite3, создав простую функцию входа и регистрации. Готовы ли вы к этому путешествию? Если да , давайте приступим..

    ИИ для чайников: руководство для начинающих по пониманию будущего технологий
    Вы чувствуете, что остались позади в мире ИИ? Не волнуйтесь, вы не одиноки! Со всей этой шумихой вокруг искусственного интеллекта может быть трудно понять, с чего начать. Но не позволяйте сленгу..