Решите одно нелинейное уравнение и дифференциальное, чтобы найти максимум с симп - PullRequest
0 голосов
/ 06 марта 2019

Вот два уравнения, которые я хочу решить:

1:.

y и x - пользовательский ввод, поэтому только t и z неизвестны

0 = y + t * sqrt ((15 / 3,6) ** 2 - (x / t) ** 2) - (абс ((30 / 3,6) * (t + z - 25200 - 1800)) + ((30 / 3,6) * (t + z - 25200 - 1800)) / 2)

2:.

д / дт (z) = 0 Я хочу узнать t для максимально возможного значения z.

Я пробовал несколько команд, таких как

func = y + t*sqrt((15/3.6)**2 - (x/t)**2) - (abs((30 / 3.6) * (t + z - 25200 - 1800)) + ((30 / 3.6) * (t + z - 25200 - 1800)) / 2)
result = dsolve(Derivative(z, t), func)

но вывод был: ValueError: dsolve () и classify_ode () работают только с функциями одной переменной, но не [...]

Вопрос1: Есть ли способ для Python определить z с помощью t (z = ...)? Если нет, есть ли способ избавиться от abs (), я только хотел, чтобы (30 / 3.6) * (t + z - 25200 - 1800) не было отрицательным.

Вопрос2: Можно ли дифференцировать это уравнение z для t?

1 Ответ

0 голосов
/ 06 марта 2019

Я не слишком знаком с sympy, но проблема с вашим примером кода в том, что у вас есть 2 неизвестных и только 1 уравнение.Итак, есть только 3 сценария:

  • Оба z и t равны 0, все готово
  • Один из z или t равен 0, установите эту переменную в 0 и решите
  • Ни z, ни t не равны 0, и поэтому каждый из z и t имеет свои собственные наборы возможных значений

Так что я думаю, что я более конкретно отвечаю: что делает ваш ValueError mean.

Вот другой ресурс, который я нашел для решения DE в Python.

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