Dart:
Trabalhando com Números Complexos
Como fazer:
O Dart por si só não inclui uma biblioteca interna para números complexos, necessitando ou da implementação de uma classe de número complexo personalizada ou do uso de uma biblioteca de terceiros. Uma escolha popular para tarefas de computação científica, que inclui suporte para números complexos, é o package:scidart
.
Implementando uma Classe Básica de Números Complexos
Para operações simples, você pode facilmente definir sua própria classe de número complexo:
class Complex {
final double real;
final double imaginary;
Complex(this.real, this.imaginary);
// Adição de dois números complexos
Complex operator +(Complex other) {
return Complex(real + other.real, imaginary + other.imaginary);
}
// Representação em string para fácil depuração
@override
String toString() => '${real} + ${imaginary}i';
}
void main() {
var number1 = Complex(3, 4);
var number2 = Complex(1, 2);
var soma = number1 + number2;
print(soma); // 4.0 + 6.0i
}
Usando o SciDart para Operações Avançadas
Para operações mais complexas ou quando o desempenho é crítico, o package:scidart
oferece suporte abrangente para números complexos, entre outras funcionalidades de computação científica. Primeiro, adicione o SciDart ao seu pubspec.yaml:
dependencies:
scidart: ^0.0.1-dev.9
Veja como realizar operações básicas com números complexos usando o SciDart:
import 'package:scidart/numdart.dart';
void main() {
// Criando números complexos
var complexNum1 = Complex(real: 5, imaginary: 3);
var complexNum2 = Complex(real: 2, imaginary: 7);
// Adição
var soma = complexAdd(complexNum1, complexNum2);
// Multiplicação
var produto = complexMultiply(complexNum1, complexNum2);
print('Soma: ${soma.toString()}'); // Soma: Complex(real: 7.0, imaginary: 10.0)
print('Produto: ${produto.toString()}'); // Produto: Complex(real: -11.0, imaginary: 41.0)
}
Estes exemplos demonstram a manipulação básica e a utilização de números complexos em Dart, tanto através da implementação personalizada quanto via a biblioteca SciDart, destacando a flexibilidade e o poder do Dart para tarefas de computação científica.