Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

mathnet/mathnet-symbolics

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

397 Commits

Repository files navigation

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

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!

Packages

No packages published

Contributors 10

Languages

AltStyle によって変換されたページ (->オリジナル) /