JavaScript如何找到两个函数的交点

3

我今天正在尝试解决函数相交的坐标问题。目前我正在使用nerdarmer库,但它只能返回所有可能解中的一个解。例如,我想让下面的代码打印-1、0、1,但它只输出了0。另一个例子是,如果我想找到y=0和sin(x)之间的交点,我希望输出为...,(-2pi, 0),(-pi, 0),(pi, 0),(2pi, 0),(3pi, 0)...

intersect("x^3", "x")
function intersect(f1, f2){
    var x = nerdamer.solve('f1', 'f2');
    console.log(x.toString());  
}

有没有办法获得所有可能的解决方案?


2
y = 0 和 sin(x) 给出无限数量的解。如何获取此情况下的“所有可能的解”? - Terry
1
对于这些情况,给定一个坐标,我想要找到最近的解决方案(例如,在给定坐标的右侧和左侧的最近解决方案)。 - user17150885
你最好使用现有的API,比如Wolfram Alpha API,它可以解决相对复杂的方程,而不是试图重新发明轮子或寻找第三方库(后者在SO上是离题的)。 - Terry
1
我会尝试给他们发消息,谢谢。关于Wolfram Alpha,是否有使用他们的API解决函数的JavaScript示例? - user17150885
使用即时计算器API:它们可能有很多文档,所以你只需要仔细阅读。 - Terry
显示剩余2条评论
1个回答

5

你误解了nerdamer.solve的语法。

第一个参数是公式或方程。第二个参数是要解决的变量。如果第一个参数不是方程,则假定为等于0。在你的情况下,x ^ 3 = 0。只有解0.

如果您想要交叉点的方程,您需要将它们设置为第一个参数中的相等。在第二个参数中只需指定x。(如果需要,可以更改它以适合您的需求。)

intersect("x^3", "x")
function intersect(f1, f2){
    var x = nerdamer.solve(f1+"="+f2, "x");
    console.log(x.toString());  //outputs [0,1,-1]
}

编辑:

在你的例子中,你直接将字符串"f1"和"f2"放入了解决函数中,这似乎只是解决了f=0;


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接