Back-End

6 mar, 2019

C# – Usando a biblioteca Math.NET (.NET Core)

Publicidade

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:

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.