ComplexosLib.murilao 1.0.0

dotnet add package ComplexosLib.murilao --version 1.0.0
                    
NuGet\Install-Package ComplexosLib.murilao -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ComplexosLib.murilao" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ComplexosLib.murilao" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="ComplexosLib.murilao" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ComplexosLib.murilao --version 1.0.0
                    
#r "nuget: ComplexosLib.murilao, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ComplexosLib.murilao@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ComplexosLib.murilao&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=ComplexosLib.murilao&version=1.0.0
                    
Install as a Cake Tool

Complexos

Struct imutável representando números complexos. Inclui funcionalidades algébricas básicas, além de conversões.

Propósito

Feito para uma avaliação de matemática, visando ser integrado em uma aplicação gráfica para encontrar raízes de números complexos arbitrários. Portanto, bibliotecas externas não foram utilizadas, dependendo somente de funcionalidade nativa disponível pela System.Math. Esse pacote NÃO deve ser utilizado para aplicações profissionais, e especialmente onde precisão for necessária.

Uso

O construtor da struct está disponível, e recebe dois argumentos, representando seu valor real e seu valor imaginário. Ambos são armazenados como pontos flutuantes de dupla precisão (double), para maior compatibilidade com os métodos de Sytem.Math.

Números complexos também podem ser declarados através de uma tupla.

Complex number = new Complex(4, 5);
Complex tupleNumber = (4, 5);

A sobrecarga do método ToString() permite exibição legível e inspirada em notação matemática.

Complex number = new Complex(4, 5);
Complex tupleNumber = (4, 5);

Console.WriteLine(number); // 4 + 5i

Forma polar

A forma polar de um número complexo está disponível pela propriedade .Polar, que retorna uma tupla (abs double, arg double), de primeiro elemento igual ao módulo e segundo igual ao argumento, em radianos.

A propriedade .Abs retorna o módulo do complexo, e .Arg retorna o argumento do complexo, em radianos. A conversão de radianos para graus pode ser feita com arg * Math.PI / 180, ou, alternativamente, o argumento em graus é retornado pela propriedade .ArgDegree.

Complex numero = (2, -2);

Console.WriteLine(numero.Abs); // 2.8282
Console.WriteLine(numero.Arg); // 5.4978
Console.WriteLine(numero.ArgDegree); // 315

var polar = numero.Polar;
polar.arg;
polar.abs;

A conversão de forma polar para complexo pode ser feita através do método estático .FromPolar(polar), com duas assinaturas.

Complex number = (3, 4);

var polar = number.Polar;

var fromPolar = Complex.FromPolar(polar); // Igual a `number`
var fromPolar2 = Complex.FromPolar(4, Math.PI * 2 / 3); // Módulo 4, argumento 60º

Aritmética

Todos os operadores aritméticos estão implementados, além de potenciação e radiciação, através das fórmulas de De Moivre.

Complex firstNumber = (4, 5);
Complex secondNumber = (1, 2);

Console.WriteLine(firstNumber + secondNumber); // 5 + 7i
Console.WriteLine(firstNumber - secondNumber); // 3 + 3i
Console.WriteLine(firstNumber * secondNumber); // -6 + 13i
Console.WriteLine(firstNumber / secondNumber); // 2.8 - 0.6i
Potenciação

Pode ser realizada através do método .Pow(n), que eleva o complexo a n, retornando um único novo complexo. A potenciação é calculada pela primeira fórmula de De Moivre, onde a potência do complexo z pode ser descrita como um complexo w cuja forma polar tem módulo igual ao módulo de z elevado a n e argumento igual ao produto do argumento de z por n.

z = a + bi w = z^3

w = |z|^3 * (sen(arg(z) * 3) + icos(arg(z) * 3))

Complex number = (4, 2);
Complex power = number.Pow(3); // Equivalente a (4 + 2i)^3

Console.WriteLine(power); // 16 + 88i
Radiciação

Ao calcular a raiz N de um número complexo, obtém-se N complexos que, elevados a N, resultam no complexo original. Portanto, o método .Root(n) retorna um IEnumerable<Complex>, um gerador que produz as raízes apenas quando iterado, atráves das fórmulas de De Moivre.

O argumento de todas as raízes é calculado como a N raíz do argumento original, enquanto o argumento consiste em vetores de ângulo θ entre si, onde θ é igual a 2π/N.

Resulta-se, portanto, numa circunferência contendo N pontos.

Complex number = (4, 9);

foreach (var root in number.Root(3)) {
    Console.WriteLine(root); // exibe as três raízes cúbicas de 4 + 9i
}

Há também uma propriedade Sqrt, levemente otimizada em relação ao método genérico .Root(n), para raízes quadradas.

Complex number = (4, 9);

foreach (var root in number.Sqrt) { // Equivalente a number.Root(2)
    Console.WriteLine(root); // exibe as duas raízes quadradas de 4 + 9i
}
Product Compatible and additional computed target framework versions.
.NET net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net7.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 358 10/28/2023