Domanda

C'è una libreria JavaScript o una funzione che sarà risolvere equazioni per le variabili?

Come 9 = 3 + x e risolvere per x. Ma dovrebbe anche risolvere equazioni più avanzate che comprendono seno, coseno, tangente e.

È stato utile?

Soluzione

Puoi approssimativo la soluzione facendo ciò che Excel chiama "Ricerca obiettivo" - testare i valori per x fino a quando entrambi i lati dell'equazione di circa corrispondono. È possibile farlo dividendo l'equazione dal segno "=", sostituendo ogni occorrenza di x con un valore, evaling entrambi i lati, e determinare se la differenza scende sotto una certa soglia. Mentre relativamente semplice, ci sono difetti a questo metodo se (a parte il fatto che si tratta di un'approssimazione), per esempio l'algoritmo può pensare che i due lati stanno convergendo quando in realtà è solo un minimo locale / max e verrà divergere dopo la differenza scende appena sotto la soglia. Avrete anche bisogno di testare molteplici punti di partenza per risolvere le equazioni con più di una soluzione.

Per un programma effettivamente risolve un'equazione come un essere umano farebbe (riposizionando i due lati dell'equazione e applicando inversa funzioni, derivati ??/ integrali e quant'altro) è molto più complessa, e in qualche modo sente interamente di proprietà;)

Altri suggerimenti

mi piacerebbe proporre nerdamer . Può algebricamente risolvere fino a funzioni quartici e può numericamente risolvere una serie di funzioni. Un'altra libreria da considerare è 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>

Una rapida ricerca salta fuori algebra.js e JS-risolutore . Io non so nulla di loro, ma sembrano legittime. algebra.js ha una bella API OOP, ma non sembra per gestire le funzioni trigonometriche.

Guarda lo script a programma il metodo di Newton per la f ( x) = 0 . Risolve l'equazione utilizzando di Newton metodo tangente .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top