All Projects → mathnet → Mathnet Symbolics

mathnet / Mathnet Symbolics

Licence: mit
Math.NET Symbolics

Programming Languages

fsharp
127 projects

Projects that are alternatives of or similar to Mathnet Symbolics

Grassmann.jl
⟨Leibniz-Grassmann-Clifford⟩ differential geometric algebra / multivector simplicial complex
Stars: ✭ 289 (+12.89%)
Mutual labels:  math, computer-algebra
Sage
Mirror of the Sage source tree -- please do not submit PRs here -- everything must be submitted via https://trac.sagemath.org/
Stars: ✭ 1,656 (+546.88%)
Mutual labels:  math, computer-algebra
Gap
Main development repository for GAP - Groups, Algorithms, Programming, a System for Computational Discrete Algebra
Stars: ✭ 447 (+74.61%)
Mutual labels:  math, computer-algebra
Angourimath
Open-source symbolic algebra library for C# and F#. One of the most powerful in .NET
Stars: ✭ 266 (+3.91%)
Mutual labels:  math, computer-algebra
Mppp
Multiprecision for modern C++
Stars: ✭ 196 (-23.44%)
Mutual labels:  math, computer-algebra
Symengine
SymEngine is a fast symbolic manipulation library, written in C++
Stars: ✭ 703 (+174.61%)
Mutual labels:  math, computer-algebra
Sympy
A computer algebra system written in pure Python
Stars: ✭ 8,688 (+3293.75%)
Mutual labels:  math, computer-algebra
Symengine.py
Python wrappers for SymEngine
Stars: ✭ 110 (-57.03%)
Mutual labels:  math, computer-algebra
Reduce.jl
Symbolic parser generator for Julia language expressions using REDUCE algebra term rewriter
Stars: ✭ 172 (-32.81%)
Mutual labels:  math, computer-algebra
Symengine.jl
Julia wrappers of SymEngine
Stars: ✭ 139 (-45.7%)
Mutual labels:  math, computer-algebra
symengine.rb
Ruby wrappers for SymEngine
Stars: ✭ 26 (-89.84%)
Mutual labels:  math, computer-algebra
Oscar.jl
A comprehensive open source computer algebra system for computations in algebra, geometry, and number theory.
Stars: ✭ 182 (-28.91%)
Mutual labels:  math, computer-algebra
Hecke.jl
Computational algebraic number theory
Stars: ✭ 142 (-44.53%)
Mutual labels:  math, computer-algebra
Online-Tools
Webpage offering a wide range of online tools
Stars: ✭ 38 (-85.16%)
Mutual labels:  math
IwEngine
This is an engine that I initially started building after taking a game coding class in high school. I didn't like Unity so tried to make something more code focused that was personally easier to use.
Stars: ✭ 97 (-62.11%)
Mutual labels:  math
keisan
A Ruby-based expression parser, evaluator, and programming language
Stars: ✭ 48 (-81.25%)
Mutual labels:  math
combi
Pythonic package for combinatorics
Stars: ✭ 51 (-80.08%)
Mutual labels:  math
algorithm
📌 Notes and Codes for studying data structures and algorithm
Stars: ✭ 72 (-71.87%)
Mutual labels:  math
SharpMath2
2D math / geometry collision library for C#, compatable with monogame.
Stars: ✭ 36 (-85.94%)
Mutual labels:  math
Euler
The open-source computational framework for the Swift language
Stars: ✭ 37 (-85.55%)
Mutual labels:  math

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/610/3.
  • (a/b/(c*a))*(c*d/a)/d1/(a*b)
  • (a+b)/(b+a)**21/(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

Windows (.NET): AppVeyor build status
Linux (Mono): Travis Build Status

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!

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].