Вопрос

Есть ли библиотека JavaScript или функция, которая будет решать уравнения для переменных?

Такие как 9 = 3 + x и решить для x. Но это также должно решать более продвинутые уравнения, которые включают синус, косинус и касательный.

Это было полезно?

Решение

Вы можете приблизительно решение, выполняя то, что Excel называет «целью цели» - тестирование ценностей для x до тех пор, пока обе стороны уравнения приблизительно не совпадают. Вы можете сделать это, разделяя уравнение "=" знак, заменив каждое событие x со значением, evalс обеих сторон и определение того, падает ли разница ниже определенного порога. Несмотря на то, что он относительно прост, хотя в этом методе есть недостатки (кроме того факта, что это приближение), например, алгоритм может подумать, что две стороны сходятся, когда на самом деле это всего лишь локальный мин/макс и расходится после Разница падает чуть ниже вашего порога. Вам также необходимо протестировать несколько начальных точек для решения уравнений с более чем одним решением.

Для программы на самом деле решать Уравнение в качестве человека (перестройка двух сторон уравнения и применение обратных функций, производных/интегралов и еще много чего) является гораздо более сложным и каким -то образом чувствует себя полностью запатентованным;)

Другие советы

Я хотел бы предложить Nerdamer. Анкет Он может алгебраически решать до квартирных функций, и он может численно решать диапазон функций. Еще одна библиотека, которую нужно рассмотреть Алгебрит.

//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>

Быстрый поиск появляется Algebra.js а также JS-Solver. Анкет Я ничего о них не знаю, но они кажутся законными. У Algebra.js есть хороший API ООП, но, похоже, не выполняет тригонометрические функции.

Посмотрите на сценарий на Программа методов Ньютона для f (x) = 0. Анкет Он решает уравнение, используя Касательный метод Ньютона.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top