Hoje vou apresentar o projeto de código aberto Math.NET, que podemos usar para realizar diversos tipos de cálculos na plataforma .NET.
O projeto Math.NET é uma iniciativa de código aberto para construir e manter kits de ferramentas que abrangem a matemática fundamental, necessidades avançadas, mas também as necessidades diárias dos desenvolvedores .NET.
O projeto apresenta diversas bibliotecas:
- Math.NET Numerics: fornece métodos e algoritmos para cálculos numéricos científicos, engenharia, e para uso diário. Os tópicos cobertos incluem funções especiais, álgebra linear, modelos de probabilidade, números aleatórios, interpolação, transformações integrais e muito mais.
- Math.NET Symbolics: é uma biblioteca básica de álgebra computacional opensource para .NET e Mono, escrita inteiramente em F#.
- Math.NET Filtering: fornece um kit de ferramentas para o processamento digital de sinais, oferecendo uma infraestrutura para o projeto de filtros digitais, aplicando esses filtros a fluxos de dados usando conversores de dados, bem como geradores de sinais digitais.
- Math.NET Spatial: pretende tornar-se uma biblioteca de geometria para .NET e Mono.
Neste artigo vou mostrar como usar a biblioteca Math.NET Numerics e realizar alguns cálculos usando os métodos estáticos contidos em SpecialFunctions.
A Math.NET Numerics faz parte da iniciativa Math.NET e está disponível gratuitamente sob a licença MIT/X11. Ele é voltado para o Microsoft .Net 4.0 e superior, incluindo o Mono e o .Net Standard 1.3 e superior (com versões do .NET Standard 2.0). Além de uma implementação puramente gerenciada, também suporta otimização de hardware nativa.
Os pacotes Nuget deste recurso, são:
- MathNet.Numerics: pacote principal (versão atual 4.6.0)
- MathNet.Numerics.FSharp: extensões opcionais usadas com a linguagem F# (versão atual 4.6.0)
Para poder usar os recursos da Math.NET Numerics no Visual Studio com a linguagem C#, basta incluir uma referência ao pacote Nuget MathNet.Numerics.
Recursos usados:
Criando o projeto Console no .NET Core
Abra o VS 2017 Community e crie um projeto usando o template .NET Core > Console App (.NET Core) informando o nome MathNET.FuncoesEspeciais, e a seguir, via menu Tools > Manage Nuget Packages for Solution, inclua o pacote MathNet.Numerics no projeto:
1. Vamos calcular o fatorial de um número inteiro
Na matemática, o fatorial de um número natural n, representado por n!, é o produto de todos os inteiros positivos menores ou iguais a n.
Para calcular o fatorial de um número usamos o método SpecialFunctions.Factorial(n).
Este método calcula a função fatorial x -> x! de um número inteiro > 0. A função pode representar todos os números até 22!, exatamente, e todos os números até 170! usando uma representação dupla.
Inclua os seguintes namespaces no arquivo Program.cs:
using System;
using MathNet.Numerics;
A seguir, inclua o código abaixo no método Main():
Executando o projeto iremos obter o seguinte resultado:
2. Vamos calcular o coeficiente binomial
Vejamos a definição de coeficiente binomial:
- “Sendo n e p dois números naturais, chamamos de coeficiente binomial de classe p, do número n, o seguinte número:
Que indicamos por:
Lê-se: n sobre p. Podemos escrever:
Fonte: https://www.somatematica.com.br/emedio/binomio/binomio1.php
Assim, inclua o código abaixo no método Main() do arquivo Program.cs:
Em seguida, crie o método CalcularCoeficienteBinomial() conforme mostrado abaixo:
Executando o programa iremos obter:
3. Vamos calcular a hipotenusa
Em um triângulo retângulo, a soma dos quadrados dos catetos é igual ao quadrado da hipotenusa.
Existem quatro sobrecargas para o método que permite calcular a hipotenusa.
- 1. Complex32 Hypotenuse(Complex32 a, Complex32 b)
- 2. float Hypotenuse(float a, float b)
- 3. Complex Hypotenuse(Complex a, Complex b)
- 4. double Hypotenuse(double a, double b)
Usaremos a última opção que permite calcular a hipotenusa de um triângulo retângulo que retorna um double. O teorema nos leva à fórmula: (a, b) -> sqrt (a ^ 2 + b ^ 2) que pode ser obtido usando o método SpecialFunctions.Hypotenuse(c1,c2).
Inclua o código abaixo no método Main() do arquivo Program.cs:
Crie o método CalcularHipotenusa() usando o código abaixo:
Executando o programa iremos obter:
Além desses métodos temos diversos outros métodos que podemos usar. Consulte a documentação da API neste link:
Em outro artigo irei abordar outros recursos deste projeto.
Pegue o projeto aqui: MathNET.FuncoesEspeciais.zip.