Question

Y at-il une bibliothèque JavaScript ou une fonction qui permettra de résoudre les équations pour les variables?

Tels que 9 = 3 + x et résoudre pour x. Mais il faut aussi résoudre des équations plus avancées qui incluent sinus, cosinus et tangente.

Était-ce utile?

La solution

Vous pouvez approximative la solution en faisant ce que Excel appelle « Valeur cible » - valeurs test pour x jusqu'à ce que les côtés de l'équation correspondent environ. Pour ce faire, en divisant l'équation par le signe de "=", le remplacement de chaque occurrence de x avec une valeur, evaling deux côtés, et en déterminant si la différence tombe en dessous d'un certain seuil. Bien que relativement simple, il y a des défauts à cette méthode bien (autre que le fait qu'il est une approximation), par exemple l'algorithme peut penser que les deux parties convergent alors qu'en fait, il est juste un min local / max et diverger après la la différence se situe juste en dessous de seuil. Vous aurez également besoin de tester plusieurs points de départ pour résoudre des équations avec plus d'une solution.

Pour un programme réellement résoudre une équation comme un être humain serait (en réorganisant les deux côtés de l'équation et l'application inverse des fonctions, des dérivés / Intégrales et autres joyeusetés) est beaucoup plus complexe, et en quelque sorte se sent entièrement propriétaire;)

Autres conseils

Je voudrais proposer nerdamer . Il peut résoudre algébriquement jusqu'à fonctions quartiques et il peut résoudre numériquement une gamme de fonctions. Une autre bibliothèque à considérer est Algebrite .

//solve linear equations
var x = nerdamer.solve('(x+1)*3=x-6', 'x');
console.log(x.toString());
//quadratic
var x2 = nerdamer.solve('x^2-8x+15', 'x');
console.log(x2.toString());
//quadratic algebraically
var x3 = nerdamer.solve('x^2-ax+3*b', 'x');
console.log(x3.toString());
//multiple roots
var x4 = nerdamer.solve('x^6+41*x^5+652*x^4+5102*x^3+20581*x^2+40361*x+30030', 'x');
console.log(x4.toString());
//functions - numerically around to zero up to a predefined range
var x5 = nerdamer.solve('cos(x)^2+sin(x-1)', 'x');
console.log(x5.toString());
//solve a system of linear equations
var x6 = nerdamer.solveEquations(['2x+y=7', 'x-y+3z=11', 'y-z=-1']);
console.log(x6.toString());
//solve a system of nonlinear equations
var x7 = nerdamer.solveEquations(['3*x^2/y=2', 'z*x*y-1=35', '5*z^2+7=52']);
console.log(x7.toString());
<script src="https://cdn.jsdelivr.net/npm/nerdamer@latest/nerdamer.core.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@latest/Algebra.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@latest/Calculus.js"></script>
<script src="https://cdn.jsdelivr.net/npm/nerdamer@latest/Solve.js"></script>

Une recherche rapide se présente algebra.js et js-solveur . Je ne sais pas quoi que ce soit à leur sujet, mais ils semblent légitimes. algebra.js a une belle API POO, mais ne semble pas gérer les fonctions trigonométriques.

Regardez le script à programme Méthode de Newton pour f ( x) = 0 . Il résout l'équation en utilisant méthode de la tangente de Newton .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top