Создание математических уравнений с использованием Numpy в Python - PullRequest
0 голосов
/ 09 ноября 2018

Я хочу создать уравнения с использованием умножения массива, т.е. я хочу сохранить все переменные в массиве и его коэффициенты в другом массиве и умножить их друг на друга, чтобы получить выражение, чтобы я мог использовать метод m.Equation () GEKKO. Я пробовал упомянутый код, но не смог, пожалуйста, дайте мне знать, как я могу достичь своей цели.

Под "не удалось" я имел в виду, что он просто выдал ошибку и не позволил мне использовать x * y == 1 в качестве уравнения в методе m.Equation (), доступном в GEKKO. Моя цель состоит в том, чтобы я хотел сохранить переменные в одном массиве и их коэффициенты в другом массиве и умножить их, чтобы получить математические уравнения для использования в качестве входных данных в методе m.Equation ().

import numpy as np
from gekko import GEKKO


X = np.array([x,y,z])
y = np.array([4,5,6])
m = GEKKO(remote=False)
m.Equation(x*y==1)
# I wanted to get a result like 4x+5y+6z=1

Я получаю ошибку ниже

    Traceback (most recent call last):
  File "C:\Users\kk\AppData\Local\Programs\Python\Python37\MY WORK FILES\numpy practise.py", line 5, in <module>
    X = np.array([x,y,z])
NameError: name 'x' is not defined

1 Ответ

0 голосов
/ 09 ноября 2018

Вам необходимо определить переменные и превратить коэффициенты в объект Gekko.Вы можете использовать массив для создания переменных и параметр для коэффициентов:

from gekko import GEKKO

m = GEKKO(remote=False)
X = m.Array(m.Var, 3)
y = m.Param([4, 5, 6])
eq = m.Equation(X.dot(y) == 1)
print(eq.value)

Вывод:

((((v1)*(4))+((v2)*(5)))+((v3)*(6)))=1
...