Как заставить набор нелинейных уравнений для получения положительных результатов в Python? - PullRequest
1 голос
/ 16 октября 2019

Я пытаюсь решить 3 нелинейных уравнения, используя Sympy nsolve в Python, и мне нужны только положительные результаты. Я попытался добавить положительный = True для каждого из символов, но в следующем примере B все еще отрицательный:

from sympy import *

def solveEquation (x,y,phi):
    A = Symbol('A',positive=True)
    B = Symbol('B',positive=True)
    K = Symbol('K',positive=True)

    eq1 = y[0] - A - B * cos(K * x[0] + phi[0])
    eq2 = y[1] - A - B * cos(K * x[1] + phi[1])
    eq3 = y[2] - A - B * cos(K * x[2] + phi[2])

    results = nsolve((eq1, eq2, eq3), (A, B, K), (1, 1, 1),maxsteps=10000)
    return (results[0],results[1],results[2])

print(solveEquation([100,220,330],[10,25,32],[1,2,3]))

И вот результаты, в которых B является отрицательным числом:

(11.2988936136965, -21.4022916997153, 1.29436821905308)

Есть мысли? Спасибо

...