Mxparser

MathParser.org-mXparser
Оригинальный автор(ы)Мариуш Громада
Первоначальный выпускЯнварь 2010 ; 15 лет назад ( 2010-01 )
Стабильный релиз
6.1.0 / 19 октября 2024 г. ; 2 месяца назад ( 2024-10-19 )
Репозиторийgithub.com/mariuszgromada/MathParser.org-mXparser/
Написано вJava , C# , C++
ПлатформаJVM , Android , C++ , .NET , .NET Core , .NET Standard, Windows Phone , MONO , Xamarin , Xamarin.iOS , Xamarin.Android
Веб-сайтmathparser.org

mXparser — это синтаксический анализатор /оценщик математических выражений с открытым исходным кодом , предоставляющий возможности для вычисления различных выражений во время выполнения . [1] Определения выражений задаются в виде обычного текста, затем проверяются с точки зрения грамматики/синтаксиса , и, наконец, вычисляются. Исходный код библиотеки поддерживается отдельно для Java и C# , предоставляя тот же API для Java/JVM , Android , .NET и Mono ( совместимый со спецификацией Common Language ).

Основные характеристики/примеры использования

mXparser предоставляет такие функциональные возможности, как: базовые вычисления, подразумеваемое умножение, встроенные константы и функции, операции числового исчисления, итерационные операторы, определяемые пользователем константы, определяемые пользователем функции, определяемая пользователем рекурсия, поддержка математических символов Unicode .

Базовыйоператоры[2]

mXparser поддерживает основные операторы, такие как: сложение «+» , вычитание «-» , умножение «*» , деление «/» , факториал «!» , возведение в степень «^» , остаток от деления «#» .

Выражение e = новое выражение ( "2+3/(4+5)^4" ); double v = e . calculate ();       

Подразумеваемое умножение[2]

Выражение e = новое выражение ( "2(3+4)3" ); double v = e . calculate ();       
Выражение e = новое выражение ( "2pi(3+4)2sin(3)e" ); double v = e . calculate ();       

Можно комбинировать типичные выражения с бинарными отношениями (например, больше чем '>' , меньше чем '<' , равенство '=' , неравенство '<>' , больше или равно '>=', меньше или равно '<='), поскольку каждая оценка отношения дает либо '1' для истинного результата, либо '0' для ложного .

Выражение e = новое выражение ( "(2<3)+5" ); double v = e . calculate ();       

Булева логика также работает, предполагая эквивалентность «1 как истина » и «0 как ложь ». Поддерживаемые булевы операторы включают: AND конъюнкция , OR дизъюнкция , NAND Шеффер штрих , NOR , XOR Исключающее ИЛИ , IMP импликация , CIMP обратная импликация , NIMP материальная неимпликация , CNIMP обратная неимпликация , EQV логическая двуусловная , отрицание .

Выражение e = новое выражение ( "1 --> 0" ); double v = e . calculate ();       

Встроенные математические функции[2]

Поддерживаются общие математические функции (унарные, бинарные и с переменным числом аргументов), в том числе: тригонометрические функции , обратные тригонометрические функции , логарифмические функции , показательные функции , гиперболические функции , обратные гиперболические функции , числа Белла , числа Люка , числа Стирлинга , функция подсчета простых чисел , показательная интегральная функция , логарифмическая интегральная функция , смещенный логарифмический интеграл , биномиальный коэффициент и другие.

Выражение e = новое выражение ( "sin(0)+ln(2)+log(3,9)" ); double v = e . calculate ();       
Выражение e = новое выражение ( "min(1,2,3,4)+gcd ( 1000,100,10)" ); double v = e .calculate ();       
Выражение e = новое выражение ( "if(2<1, 3 , 4)" ); double v = e .calculate ();       
Выражение e = новое выражение ( "iff(2<1, 1; 3<4 , 2; 10<2, 3; 5<10, 4)" ); double v = e .calculate ();       

Встроенные математические константы[2]

Встроенные математические константы с высокой точностью.

Выражение e = новое выражение ( "sin(pi)+ln(e)" ); double v = e . calculate ();       

Итеративные операторы[2]

Операторы итерационного суммирования и произведения .

Выражение e = новое выражение ( "sum(i, 1, 10, ln(i))" ); double v = e . calculate ();       
Выражение e = новое выражение ( "prod(i, 1, 10, sin(i))" ); double v = e . calculate ();       

mXparser обеспечивает реализацию следующих вычислительных операций: дифференцирование и интегрирование .

Выражение e = новое выражение ( "der( sin(x), x )" ); double v = e . calculate ();       
Выражение e = новое выражение ( "int( sqrt(1-x^2), x, -1, 1)" ); double v = e . calculate ();       

Простые числаподдерживать[2]

Выражение e = новое выражение ( "ispr(21)" ); double v = e . calculate ();       
Выражение e = новое выражение ( "Pi(1000)" ); double v = e . calculate ();       
Выражение e = новое выражение ( "√2" ); double v = e . calculate ();       
Выражение e = новое выражение ( "∜16 + ∛27 + √16" ); double v = e . calculate ();       
Выражение e = новое выражение ( "∑(i, 1, 5, i^2)" ); double v = e . calculate ();       

Элементы, определяемые пользователем

Библиотека предоставляет API для создания пользовательских объектов, таких как: константы, аргументы, функции.

Константы, определяемые пользователем[3]

Константа t = новая Константа ( "t = 2*pi" ); Выражение e = новое Выражение ( " sin(t)" , t ); double v = e.calculate () ;            

Аргументы, определяемые пользователем[3]

Аргумент x = новый аргумент ( "x = 5" ); Аргумент y = новый аргумент ( "y = 2*x" , x ); Выражение e = новое выражение ( " sin(x)+y" , x , y ); double v = e.calculate () ;                  

Пользовательские функции[3]

Функция f = новая Функция ( "f(x, y) = sin(x)+cos(y)" ) ; Выражение e = новое Выражение ( " f(1,2)" , f ); double v = e.calculate ();            

Определяемые пользователем вариативные функции[3]

Функция f = новая Функция ( "f(...) = сумма( i, 1, [npar], par(i) )" ); Выражение e = новое Выражение ( "f(1,2,3,4)" , f ); double v = e . calculate ();            

Определяемый пользователемрекурсия[3]

Функция fib = новая Функция ( "fib(n) = iff(n>1, fib(n-1)+fib(n-2); n=1, 1; n=0, 0) )" ) ; Выражение e = новое Выражение ( "fib(10)" , fib ); double v = e .calculate ();             

Требования[3]

Документация

mXparser - исходный код

Исходный код поддерживается и доступен на GitHub . [5]

Смотрите также

Ссылки

  1. ^ .org - страница проекта
  2. ^ abcdefghij mXparser - Математическая коллекция
  3. ^ abcdefg mXparser - Учебное пособие
  4. ^ mXparser - спецификация API
  5. ^ mXparser - исходный код на GitHub
  • MathParser.org
  • mXparser на NuGet
  • mXparser на Apache Maven
  • Скалярный, работающий на mXparser
  • ScalarMath.org на базе mXparser
Взято с "https://en.wikipedia.org/w/index.php?title=Mxparser&oldid=1252321408"