编程语言
首页 > 编程语言> > javascript-适应(求解)复杂方程的算法(隐函数f(x,y))

javascript-适应(求解)复杂方程的算法(隐函数f(x,y))

作者:互联网

我试图调整一些方程式(隐式f(x,y)),以便能够列出对应的X值的Y.
等式可以是例如如下:

y^2 = x^3 + 2x - 3xy
(X^2+y^2-1)^3-x^2y^3=0
X^3+y^3=3xy^2-x-1
X^3+y^2=6xy/sqrt(y/x)
cos(PI*Y) = cos(PI.X)

在下面您可以看到绘制的方程式:
enter image description here
提示,我不知道,但这可能会有所帮助,适用以下情况:

Y^2 + X^2 =1  ==>  Y= sqrt(1-X^2)

这些方程是自适应的(替代的),以便用X(不是Y)表示.
 对于y ^ 2 = x ^ 3 2x-3xy,通过替换结果:

y1 =(-(-3x)-sqr((-3x)^ 2-4-(4(-1)(x ^ 3 2x)))/ 2 *(-1)
y2 =(-(-3x)sqr((-3x)^ 2-4-(-1)(x ^ 3 2x)))/ 2 *(-1)

通过自适应方程,我将能够改变X并获得相应的Y.
看到这里的方程式y ^ 2 = x ^ 3 2x-3xy的Arkadiusz Raszeja-Solution解“ Arkadiusz Raszeja”的解是二次方程式,但是我需要一个算法,例如以上所有方程式都可以求解.

var x,y;
for(var n=0; n<=10; n++) {
    x=n;
    y = (-(-3*x)-Math.sqrt(((-3*x)*(-3*x)) - 4*(-1)*((x*x*x)+2*x)))/(2*(-1));
    alert(y);
}

以上警报(y);将为Y显示类似下面的列表:

X= 1 ; Y=0.79
X=2 ; Y=1.58
X=3 ; Y=2.79
X=4 ; Y=4.39
X=5 ; Y=6.33
X=6 ; Y=8.57 
X=7 ; Y=11.12 
X=8 ; Y=13.92
X=9 ; Y=16.98
X=10 ; Y= 20.29

 
我的问题是我该如何编程一个算法,该算法将像上面的示例一样适应(求解)方程式?

(您也可以使用像math.js这样的JS库,但不能使用绘图或图形库.解决方案应该在javascript中)

提前致谢.

解决方法:

希望我能正确理解您的问题. nerdamer会帮助您吗?它可以帮助代数求解高达三次多项式.可以调用buildFunction方法来获取可用于绘图的JS函数.我在项目网站上以某种类似的方式将其与function-plot.js结合使用

var solutions = nerdamer('y^2=x^3+2x-3x*y').solveFor('y');
//You'll get back two solutions since it's quadratic wrt to y
console.log(solutions.toString());
//You can then parse the solutions to native javascript function
var f = nerdamer(solutions[0]).buildFunction();
console.log(f.toString());

/* Evaluate */
var solutions = nerdamer('y^3*x^2=(x^2+y^2-1)').solveFor('y');
console.log(solutions.toString());
//You can then parse the solutions again to native javascript function
var f = nerdamer(solutions[0]);
var points = {};
for(var i=1; i<10; i++)
    points[i] = f.evaluate({x: i}).text();

console.log(points)
<script src="http://nerdamer.com/js/nerdamer.core.js"></script>
<script src="http://nerdamer.com/js/Algebra.js"></script>
<script src="http://nerdamer.com/js/Calculus.js"></script>
<script src="http://nerdamer.com/js/Solve.js"></script>

您总是可以评估.这比纯JS函数要慢,但这可能正是您所需要的.您可能必须使用try catch块将其除以零.

标签:complex-numbers,javascript,math,implicit
来源: https://codeday.me/bug/20191011/1895397.html