Mxparser

MathParser.org-mXparser
Originalförfattare Mariusz Gromada
Initial release januari 2010 ; 13 år sedan ( 2010-01 )
Stabil frisättning
5.0.7 / 21 augusti 2022 ; 6 månader sedan ( 2022-08-21 )
Förvar github .com /mariuszgromada /MathParser .org-mXparser /
Skrivet i Java , C#
Plattform JVM , Android , .NET , .NET Core , .NET Standard, Windows Phone , MONO , Xamarin , Xamarin.iOS , Xamarin.Android
Hemsida mathparser .org

mXparser är en öppen källkod för matematiska uttryckstolkare / utvärderare som ger möjlighet att beräkna olika uttryck samtidigt . Uttrycksdefinitioner ges som vanlig text, verifieras sedan i termer av grammatik/syntax , slutligen beräknas. Bibliotekets källkod upprätthålls separat för Java och C# , vilket ger samma API för Java/JVM , Android , .NET och Mono ( Compatible Language Specification) .

Huvudfunktioner / användningsexempel

mXparser levererar funktioner som: grundläggande beräkningar, implicit multiplikation, inbyggda konstanter och funktioner, numeriska kalkyloperationer, itererade operatorer, användardefinierade konstanter, användardefinierade funktioner, användardefinierad rekursion, stöd för matematiska Unicode-symboler .

Grundläggande operatörer

mXparser stöder grundläggande operatorer, såsom: addition '+' , subtraktion '-' , multiplikation '*' , division '/' , faktoriell '!' , effekt '^' , modulo '#' .

    
    Uttryck  e  =  nytt  uttryck  (  "2+3/(4+5)^4" )  ;  dubbel  v  =  e  .  beräkna  (); 

Underförstådd multiplikation

    
    Uttryck  e  =  nytt  uttryck  (  "2(3+4)3")  ;  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "2pi(3+4)2sin(3)e"  );  dubbel  v  =  e  .  beräkna  (); 

Binära relationer

Det är möjligt att kombinera typiska uttryck med binära relationer (som: större än '>' , mindre än '<' , likhet '=' , olikhet '<>' , större eller lika '>=', lägre eller lika '< ='), eftersom varje relationsutvärdering resulterar i antingen '1' för sant resultat eller '0' för falskt .

    
    Uttryck  e  =  nytt  uttryck  (  "(2<3)+5")  ;  dubbel  v  =  e  .  beräkna  (); 

boolesk logik

Boolesk logik fungerar också under antagande av ekvivalensen av '1 som sant ' och '0 som falskt '. Stödda booleska operatorer inkluderar: AND konjunktion , OR disjunktion , NAND Sheffer stroke , NOR , XOR Exclusive OR , IMP Implikation , CIMP Converse implikation , NIMP Material nonimplication , CNIMP Converse nonimplication , EQV Logical biconditional , Negation .

    
    Uttryck  e  =  nytt  uttryck  (  "1 --> 0")  ;  dubbel  v  =  e  .  beräkna  (); 

Inbyggda matematiska funktioner

Stöds vanliga matematiska funktioner (unära, binära och variabelt antal argument), inklusive: trigonometriska funktioner , inversa trigonometriska funktioner , logaritmfunktioner , exponentialfunktion , hyperboliska funktioner , inversa hyperboliska funktioner , klocktal , Lucas-tal , Stirlingtal , primtalsfunktion , exponentiell integralfunktion , logaritmisk integralfunktion , offset logaritmisk integral , binomialkoefficient och andra.

    
    Uttryck  e  =  nytt  uttryck  (  "sin(0)+ln(2)+log(3,9)" )  ;  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "min(1,2,3,4)+gcd(1000,100,10)")  ;  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "if(2<1, 3, 4)")  ;  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "iff(2<1, 1; 3<4, 2; 10<2, 3; 5<10, 4)")  ;  dubbel  v  =  e  .  beräkna  (); 

Inbyggda matematikkonstanter

Inbyggda matematiska konstanter, med hög precision.

    
    Uttryck  e  =  nytt  uttryck  (  "sin(pi)+ln(e)"  );  dubbel  v  =  e  .  beräkna  (); 

Itererade operatörer

Itererad summering och produktoperatörer .

    
    Uttryck  e  =  nytt  uttryck  (  "summa(i, 1, 10, ln(i))" )  ;  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "prod(i, 1, 10, sin(i))" )  ;  dubbel  v  =  e  .  beräkna  (); 

Numerisk differentiering och integration

mXparser levererar implementering av följande kalkyloperationer: differentiering och integration .

    
    Uttryck  e  =  nytt  uttryck  (  "der( sin(x), x )" )  ;  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "int( sqrt(1-x^2), x, -1, 1)" )  ;  dubbel  v  =  e  .  beräkna  (); 

Stöd för primtal

    
    Uttryck  e  =  nytt  uttryck  (  "ispr(21)" )  ;  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "Pi(1000)" )  ;  dubbel  v  =  e  .  beräkna  (); 

Unicode matematiska symboler stöder

    
    Uttryck  e  =  nytt  uttryck  (  "√2"  );  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "∜16 + ∛27 + √16")  ;  dubbel  v  =  e  .  beräkna  (); 
    
    Uttryck  e  =  nytt  uttryck  (  "∑(i, 1, 5, i^2)"  );  dubbel  v  =  e  .  beräkna  (); 

Element definierade av användaren

Library tillhandahåller API för att skapa användardefinierade objekt, såsom: konstanter, argument, funktioner.

Användardefinierade konstanter

    
     
    Konstant  t  =  ny  konstant  (  "t = 2*pi")  ;  Uttryck  e  =  nytt  Uttryck  (  "sin(t)",  t  )  ;  dubbel  v  =  e  .  beräkna  (); 

Användardefinierade argument

    
     
      
    Argument  x  =  nytt  argument  (  "x = 5")  ;  Argument  y  =  nytt  Argument  (  "y = 2*x" ,  x  )  ;  Uttryck  e  =  nytt  Uttryck  (  "sin(x)+y"  ,  x  ,  y  );  dubbel  v  =  e  .  beräkna  (); 

Användardefinierade funktioner

    
     
    Funktion  f  =  ny  Funktion  (  "f(x, y) = sin(x)+cos(y)"  );  Uttryck  e  =  nytt  uttryck  (  "f(1,2)",  f  )  ;  dubbel  v  =  e  .  beräkna  (); 

Användardefinierade variadiska funktioner

    
     
    Funktion  f  =  ny  Funktion  (  "f(...) = summa( i, 1, [npar], par(i) )" )  ;  Uttryck  e  =  nytt  uttryck  (  "f(1,2,3,4)" ,  f  )  ;  dubbel  v  =  e  .  beräkna  (); 

Användardefinierad rekursion

    
        
    Funktion  fib  =  ny  Funktion  (  "fib(n) = iff( n>1, fib(n-1)+fib(n-2); n=1, 1; n=0, 0 ) )" )  ;  Uttryck  e  =  nytt  uttryck  (  "fib(10)",  fib  )  ;  dubbel  v  =  e  .  beräkna  (); 

Krav

Dokumentation

mXparser - källkod

Källkoden underhålls och delas på GitHub .

Se även

externa länkar