Mxparser

MathParser.org-mXparser
Oryginalni autorzy Mariusza Gromady
Pierwsze wydanie styczeń 2010 ; 13 lat temu ( 2010-01 )
Wersja stabilna
5.0.7 / 21 sierpnia 2022 ; 6 miesięcy temu ( 2022-08-21 )
Magazyn github .com /mariuszgromada /MathParser .org-mXparser /
Napisane w Jawa , C#
Platforma JVM , Android , .NET , .NET Core , .NET Standard, Windows Phone , MONO , Xamarin , Xamarin.iOS , Xamarin.Android
Strona internetowa parser matematyczny .org

mXparser to parser /ocena wyrażeń matematycznych typu open source , który umożliwia obliczanie różnych wyrażeń w czasie wykonywania . Definicje wyrażeń podawane są jako zwykły tekst, następnie weryfikowane pod względem gramatycznym/składniowym , ostatecznie obliczane. Kod źródłowy biblioteki jest obsługiwany oddzielnie dla języka Java i języka C# , zapewniając ten sam interfejs API dla środowiska Java/JVM , Android , .NET i Mono ( Zgodność ze specyfikacją wspólnego języka ).

Główne cechy / przykłady użycia

mXparser zapewnia takie funkcjonalności, jak: podstawowe obliczenia, mnożenie implikowane, wbudowane stałe i funkcje, operacje na rachunku różniczkowym, operatory iteracyjne, stałe zdefiniowane przez użytkownika, funkcje zdefiniowane przez użytkownika, rekurencja zdefiniowana przez użytkownika, obsługa symboli matematycznych Unicode .

Podstawowe operatory

mXparser obsługuje podstawowe operatory, takie jak: dodawanie '+' , odejmowanie '-' , mnożenie '*' , dzielenie '/' , silnia '!' , potęga '^' , modulo '#' .

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "2+3/(4+5)^4"  );  podwójne  v  =  mi  .  obliczyć  (); 

Implikowane mnożenie

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "2(3+4)3"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "2pi(3+4)2sin(3)e"  );  podwójne  v  =  mi  .  obliczyć  (); 

Relacje binarne

Możliwe jest łączenie typowych wyrażeń relacjami binarnymi (takimi jak: większe niż '>' , mniejsze niż '<' , równość '=' , nierówność '<>' , większe lub równe '>=', mniejsze lub równe '< ='), ponieważ każda ocena relacji daje wynik „1” dla wyniku true lub „0” dla false .

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "(2<3)+5"  );  podwójne  v  =  mi  .  obliczyć  (); 

Logika boolowska

Logika boolowska działa również przy założeniu równoważności „1 jako prawdy ” i „0 jako fałszu ”. Obsługiwane operatory boolowskie obejmują: koniunkcja AND , alternatywna OR , obrys Sheffera NAND , NOR , XOR wyłączne OR , implikacja IMP , implikacja odwrotna CIMP , nieimplikacja materialna NIMP , nieimplikacja odwrotna CNIMP , dwuwarunkowa logiczna EQV , Negacja .

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "1 --> 0"  );  podwójne  v  =  mi  .  obliczyć  (); 

Wbudowane funkcje matematyczne

Obsługiwane wspólne funkcje matematyczne (jednoargumentowe, binarne i zmienna liczba argumentów), w tym: funkcje trygonometryczne , odwrotne funkcje trygonometryczne , funkcje logarytmiczne , funkcja wykładnicza , funkcje hiperboliczne , odwrotne funkcje hiperboliczne , liczby Bella , liczby Lucasa , liczby Stirlinga , funkcja liczenia liczb pierwszych , całka wykładnicza , całka logarytmiczna , przesunięta całka logarytmiczna , współczynnik dwumianu i inne.

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "sin(0)+ln(2)+log(3,9)"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "min(1,2,3,4)+gcd(1000,100,10)"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "if(2<1, 3, 4)"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "iff(2<1, 1; 3<4, 2; 10<2, 3; 5<10, 4)" )  ;  podwójne  v  =  mi  .  obliczyć  (); 

Wbudowane stałe matematyczne

Wbudowane stałe matematyczne z dużą precyzją.

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "sin(pi)+ln(e)"  );  podwójne  v  =  mi  .  obliczyć  (); 

Operatory iteracyjne

sumowania iteracyjnego i iloczynu .

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "suma(i, 1, 10, ln(i))"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "prod(i, 1, 10, sin(i))"  );  podwójne  v  =  mi  .  obliczyć  (); 

Różniczkowanie i całkowanie numeryczne

mXparser zapewnia implementację następujących operacji na rachunku różniczkowym: różniczkowanie i całkowanie .

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "der( sin(x), x )"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "int( sqrt(1-x^2), x, -1, 1)"  );  podwójne  v  =  mi  .  obliczyć  (); 

Obsługa liczb pierwszych

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "ispr(21)"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "Pi(1000)"  );  podwójne  v  =  mi  .  obliczyć  (); 

Obsługa symboli matematycznych Unicode

    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "√2"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "∜16 + ∛27 + √16"  );  podwójne  v  =  mi  .  obliczyć  (); 
    
    Wyrażenie  e  =  nowe  Wyrażenie  (  "∑(i, 1, 5, i^2)"  );  podwójne  v  =  mi  .  obliczyć  (); 

Elementy zdefiniowane przez użytkownika

Biblioteka udostępnia API do tworzenia obiektów zdefiniowanych przez użytkownika, takich jak: stałe, argumenty, funkcje.

Stałe zdefiniowane przez użytkownika

    
     
    Stała  t  =  nowa  Stała  (  "t = 2*pi"  );  Wyrażenie  e  =  nowe  Wyrażenie  (  "sin(t)"  ,  t  );  podwójne  v  =  mi  .  obliczyć  (); 

Argumenty zdefiniowane przez użytkownika

    
     
      
    Argument  x  =  nowy  Argument  (  "x = 5"  );  Argument  y  =  nowy  Argument  (  "y = 2*x"  ,  x  );  Wyrażenie  e  =  nowe  Wyrażenie  (  "sin(x)+y"  ,  x  ,  y  );  podwójne  v  =  mi  .  obliczyć  (); 

Funkcje zdefiniowane przez użytkownika

    
     
    Funkcja  f  =  nowa  funkcja  (  "f(x, y) = sin(x)+cos(y)"  );  Wyrażenie  e  =  nowe  Wyrażenie  (  "f(1,2)"  ,  f  );  podwójne  v  =  mi  .  obliczyć  (); 

Zdefiniowane przez użytkownika funkcje zmiennoprzecinkowe

    
     
    Funkcja  f  =  nowa  funkcja  (  "f(...) = sum( i, 1, [npar], par(i) )"  );  Wyrażenie  e  =  nowe  Wyrażenie  (  "f(1,2,3,4)"  ,  f  );  podwójne  v  =  mi  .  obliczyć  (); 

Rekurencja zdefiniowana przez użytkownika

    
        
    Funkcja  fib  =  nowa  funkcja  (  "fib(n) = iff(n>1, fib(n-1)+fib(n-2); n=1, 1; n=0, 0 )" )  ;  Wyrażenie  e  =  nowe  Wyrażenie  (  "fib(10)"  ,  fib  );  podwójne  v  =  mi  .  obliczyć  (); 

Wymagania

Dokumentacja

mXparser - kod źródłowy

Kod źródłowy jest utrzymywany i udostępniany w serwisie GitHub .

Zobacz też

Linki zewnętrzne