【问题标题】:Having issues solving pair of nonlinear equations using Python使用 Python 求解一对非线性方程时遇到问题
【发布时间】:2020-06-04 11:16:32
【问题描述】:

所以我知道有很多关于这个主题的问题/答案,但我无法在我的尝试中准确找到问题所在。我有两个非线性函数f(x,y)g(x,y) 我正在尝试解决系统问题

f(x,y) - g(x,y) = 0
f(x,y) + g(x,y) = c

其中c 是一些正常数。我一直在使用这个问题的答案中描述的 sn-p:How to solve a pair of nonlinear equations using Python?,但我遇到了问题。如果我为我的代码运行该 sn-p,它会返回 xy 值,使得 系统中的第二个方程得到满足,即它返回 x 和 @987654329 @ 这样f(x,y) + g(x,y) = c,而对于另一个等式,它拥有f(x,y) - g(x,y) != 0。使用 scipy.optimize.root 函数时,我遇到了完全相同的问题。对于可能导致此问题的原因,我感到非常迷茫。这是否意味着不存在满足两个方程的x, y

提前感谢您的帮助!

【问题讨论】:

  • 检查等价系统{g(x,y)=C/2, f(x,y)=C/2}是否有解
  • @tstanisl 好主意,我也试试。谢谢。

标签: python-3.x numpy scipy-optimize


【解决方案1】:

很有可能没有解决办法。例如,x + y = 10,x + y = 20 没有解。这不是非线性问题。这是一个数学问题。此外,如果无法通过代数求解,则第一个方程的 f(x,y) - g(x,y) 可能近似为零。如果 f(x,y)-g(x,y)=0.0001,你认为这个足够接近吗?

为了完整性:检查数学,如@tstanisl 所述。如果将方程加在一起,则求解 f(x,y)=c/2 或 g(x,y)=c/2,这更容易。

【讨论】:

  • 感谢您的回答!我确实认为这足够接近,但差异远不止于此,这让我倾向于认为没有解决方案,或者我最初的猜测只有几英里之遥。这些函数非常繁琐,因此并未真正排除局部最小值和最大值。
  • 由于这是 x-y 中的函数,您可以将 f(x,y)-g(x,y) 绘制为 x 和 y 的函数,看看结果如何。有时,根据问题,这会让您了解正在发生的事情。
  • 您还可以在相邻的绘图中绘制 f(x,y) + g(x,y),看看那里发生了什么。而且 [smacks self in head!],检查数学,正如@tstanisl 所指出的那样。如果将方程加在一起,则求解 f(x,y)=c/2 g(x,y)=c/2,这更容易。从数学上讲,您正在消除一个。当然,您可能仍然处于没有解决方案的情况。
  • 等一下我也看到了哈哈,太傻了。我一定会试一试的。感谢所有的帮助。
猜你喜欢
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 2021-02-15
  • 2021-12-06
  • 2019-10-02
相关资源
最近更新 更多