как использовать python sympy для решения 3 неизвестных с 3 уравнениями - PullRequest
0 голосов
/ 30 сентября 2018

У меня есть 3 уравнения:

165 ⋅ 2 ⋅ =1 = 0,310 ⋅ 2 ⋅ 0.5 + 0.517 ⋅ 2 ⋅ 100

165 ⋅ =2 = 0.173 ? ? + 0.517 ? 100

?1 + ?2 = 1.0

Я реорганизовал первые 2 уравнения, чтобы они равнялись Y1 и Y2, а затем ввел их в python:

import sympy as sp

n,Y1,Y2 = sp.symbols('n Y1 Y2')
Y1= ((.310*2*n)+(.517*2*n))/(165*2)
Y2= ((.173*n)+(.517*n))/(165)
print ("Y1=", Y1,"Y2=", Y2,"n=", n)

Мой первый вопрос: я установилкод верно?или я должен переместить переменные Y в правую часть уравнения и пометить их как уравнения 1 и 2?

во-вторых, пока я пытался ввести 3-е уравнение, но получил "синтаксическую ошибку: невозможно назначитьоператор».Как бы я включил 3-е уравнение в коде?будет ли это действовать как «предел» (я знаю, что это не предел, но я не могу вспомнить, как он называется в данный момент)

1 Ответ

0 голосов
/ 30 сентября 2018

Вы можете передать все три уравнения одновременно и получить три переменные напрямую, используя solve следующим образом: Передайте три уравнения, где в Eq вы пишете левую часть уравнения и правую часть уравнения (или наоборот).Второй аргумент solve - это список переменных, которые нужно решить.

from sympy import *

n, Y1, Y2 = symbols('n Y1 Y2')
solve([Eq(((.310*2*n)+(.517*2*n))/(165*2), Y1), Eq(((.173*n)+(.517*n))/165, Y2), 
      Eq(Y1+Y2, 1)], [n, Y1, Y2])

> {n: 108.767303889255, Y1: 0.545154911008569, Y2: 0.454845088991430} # Answer
...