解一个非线性方程和一个微分方程,用sympy找出最大值

时间:2019-03-06 14:29:02

标签: python-3.x sympy

我要求解的两个方程如下:

1。:

y和x是用户输入,因此只有t和z未知

0 = 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)

2。:

d / dt(z)= 0 我想找出可能的最高z值的t。

我尝试了多个命令,例如

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是否可以使用t(z = ...)定义z? 如果没有,是否有办法摆脱abs(),我只希望(30 / 3.6)*(t + z-25200-1800)不为负。

问题2:我可以将方程z区分为t吗?

1 个答案:

答案 0 :(得分:0)

我对sympy不太熟悉,但是示例代码的问题是您有2个未知数,只有1个等式。因此,只有3种情况:

  • z和t都为0,就完成了
  • z或t之一为0,将该变量设置为0并求解
  • z和t都不为0,因此z和t都有自己的可能值集

所以我想我要更具体地回答的是:您的ValueError是什么意思。

这里是another resource I found,用于解决Python中的DE。