找到任意两个函数的交集 - 求解联立方程

时间:2013-02-06 15:28:41

标签: algorithm math intersection conceptual

想象一下有两个功能。您需要找到该功能的交叉点。您绝对不想尝试所有x值来检查f(x)==g(x)。 通常在数学中,您可以创建从f(x)==g(x)派生的联立方程。但我认为如何用任何编程语言实现方程式都没有办法 再一次,我在寻找什么:

  1. 解决方程式的概念算法。
  2. 同时和二次方程式相同。
  3. 我相信应该有一些使用函数派生的解决方法,但我最近在学校学习了派生概念,我不知道在这种情况下如何使用它。

2 个答案:

答案 0 :(得分:5)

这比你想象的要困难得多。开始学习这些东西的好地方是Newton-Raphson method,它给出h(x) = 0形式的方程的数值近似。 (当您设置h(x) = g(x) - f(x)时,这会为您提出的问题提供解决方案。)

完全的,代数求解方程式(例如在Mathematica中实现)更加困难,你基本上必须重新创建你在一张纸上求解方程式时所做的一切。

答案 1 :(得分:1)

显然,这个问题在一般情况下是无法解决的,因为你可以构造一个任意复杂的“函数”。例如,如果你有一个包含5万亿个术语的“函数”,包括其中的各种超越和复杂变换,计算机可能需要数年才能计算单个值,更不用说与其他类似函数相交。

因此,首先,您需要定义“函数”的含义。如果你的意思是一个小于4的多项式,那么问题会变得更加简单明了。在这种情况下,你组合多项式的项,找到方程的根,这将是交叉点。

如果多项式有超过5个项(五次或更多),则没有简单的符号解。在这种情况下,术语被组合,您可以通过迭代近似找到根。请参阅Root Finding Algorithms

如果函数涉及诸如sin / cos / log / e ^ x等超越,则可以通过将函数表示为一系列或连续分数来找到交集。然后从另一个系列中减去一个系列,并将该值设置为零。连续方程的解得到了根的近似值。