# mathnet / mathnet-symbolics

Math.NET Symbolics

## Latest commit

`Fix Evaluate.fapply for Csc`
a3cf2af

## Files

Failed to load latest commit information.
Type
Name
Commit time
Apr 26, 2020
Jul 11, 2020
Oct 3, 2015
Apr 26, 2020
Apr 26, 2020
Jun 1, 2019
Jun 1, 2019
May 24, 2020
May 2, 2020
May 1, 2020
Jun 1, 2019
Jun 1, 2019

# Math.NET Symbolics

Math.NET Symbolics is a basic open source computer algebra library for .NET, Silverlight and Mono written entirely in F#.

This project does not aim to become a full computer algebra system. If you need such a system, have a look at Axiom or Maxima instead, or for proprietary commercial solutions Maple, Mathematica or Wolfram Alpha.

You'll find a large set of expression and algebraic operator examples in the Unit Tests (yes, they're actually very readable). A few examples:

• `(3Q + 2)*4/6``10/3`.
• `(a/b/(c*a))*(c*d/a)/d``1/(a*b)`
• `(a+b)/(b+a)**2``1/(a + b)`
• `Algebraic.expand ((a+b)**3)``a^3 + 3*a^2*b + 3*a*b^2 + b^3`
• `Exponential.expand (exp(2*x+y))``exp(x)^2*exp(y)`
• `Exponential.contract (exp(x)*(exp(x) + exp(y)))``exp(2*x) + exp(x + y)`
• `Exponential.simplify (1/(exp(x)*(exp(y)+exp(-x))) - (exp(x+y)-1)/((exp(x+y))**2-1))``0`
• `Trigonometric.expand (sin(2*x))``2*sin(x)*cos(x)`
• `Trigonometric.contract (sin(x)**2*cos(x)**2)``1/8 - (1/8)*cos(4*x)`
• `Trigonometric.simplify ((cos(x)+sin(x))**4 + (cos(x)-sin(x))**4 + cos(4*x) - 3)``0`
• `Polynomial.polynomialDivision x (x**3 - 2*x**2 - 4) (x-3)``(3 + x + x^2, 5)`
• `Polynomial.polynomialExpansion x y (x**5 + 11*x**4 + 51*x**3 + 124*x**2 + 159*x + 86) (x**2 + 4*x + 5)``1 + x + (2 + x)*y + (3 + x)*y^2`
• `Polynomial.gcd x (x**7 - 4*x**5 - x**2 + 4) (x**5 - 4*x**3 - x**2 + 4)``4 - 4*x - x^2 + x^3`
• `Rational.rationalize (1+1/(1+1/x))``(1 + 2*x)/(1 + x)`
• `Rational.simplify x ((x**2-1)/(x+1))``-1 + x`
```let taylor (k:int) symbol x a =
let rec impl n nf acc dxn =
if n = k then acc else
impl (n+1) (nf*(n+1)) (acc + (dxn |> Structure.substitute symbol a)/nf*(symbol-a)**n) (Calculus.differentiate symbol dxn)
impl 0 1 zero x |> Algebraic.expand

taylor 3 x (1/(1-x)) 0Q       → 1 + x + x^2
taylor 3 x (1/x) 1Q           → 3 - 3*x + x^2
taylor 3 x (ln(x)) 1Q         → -3/2 + 2*x - (1/2)*x^2
taylor 4 x (ln(x)) 1Q         → -11/6 + 3*x - (3/2)*x^2 + (1/3)*x^3
taylor 4 x (sin(x)+cos(x)) 0Q → 1 + x - (1/2)*x^2 - (1/6)*x^3```

### Literature

• Computer Algebra and Symbolic Computation - Elementary Algorithms, Joel. S. Cohen
• Computer Algebra and Symbolic Computation - Mathematical Methods, Joel. S. Cohen
• Modern Computer Algebra, Second Edition, Joachim von zur Gathen, Jürgen Gerhard
• Symbolic Integration I - Transcendental Functions, Second Edition, Manuel Bronstein
• Concrete Mathematics, Second Edition, Graham, Knuth, Patashnik
• ... and of course the fundamental theory by Euclid, Newton, Gauss, Fermat and Hilbert.

### Project

Maintained by Christoph Rüegg and part of the Math.NET initiative (see also Math.NET Numerics). It is covered under the terms of the MIT/X11 open source license. See also the license file in the root folder. We accept contributions!

Math.NET Symbolics