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() 和分类_ode() 仅适用于一个变量的函数,而不是 [...]
问题1:python有没有办法通过使用t(z = ...)来定义z?如果没有,有没有办法摆脱 abs(),我只希望 (30 / 3.6) * (t + z - 25200 - 1800) 不是负数。
问题 2:我可以将方程 z 区分为 t 吗?
解决方案
我对 sympy 不太熟悉,但您的示例代码的问题是您有 2 个未知数,只有 1 个方程。所以,只有3种情况:
- z 和 t 都是 0,你就完成了
- z 或 t 之一为 0,将该变量设置为 0 并求解
- z 和 t 都不是 0,因此 z 和 t 都有自己的一组可能值
所以我想我更具体的回答是:你的ValueError
意思是什么。
这是我在 Python 中找到的用于解决 DE 的另一个资源。
推荐阅读
- python - 从 QAction 触发器访问委托类
- python - 在 Python 中绘制日期时间
- css - 如何在 monaco 编辑器中设置 fontSize?
- php - 转换 Guzzle 响应 t Laravel 模型
- mysql - MySQL 将日期范围拆分为单独的记录
- go - 从函数返回时无法接收正确的对象
- javascript - 如何使用 JQuery 访问 ReactJS DOM 元素
- javascript - jQuery 模拟一个输入事件到另一个输入
- javascript - 访问不需要登录的网站时,CSRF 检查失败是什么原因?
- ios - flutter:如果禁用了应用代理调动,则 UIApplicationDelegate 收到的远程通知需要转发到 FIRAuth 的