Travailler avec des nombres complexes

Dart:
Travailler avec des nombres complexes

Comment faire :

Dart lui-même n’inclut pas de bibliothèque intégrée pour les nombres complexes, nécessitant soit la mise en œuvre d’une classe de nombre complexe personnalisée, soit l’utilisation d’une bibliothèque tierce. Un choix populaire pour les tâches de calcul scientifique, qui inclut le support pour les nombres complexes, est package:scidart.

Implémenter une classe de nombre complexe basique

Pour des opérations simples, vous pouvez facilement définir votre propre classe de nombre complexe :

class Complexe {
  final double reel;
  final double imaginaire;

  Complexe(this.reel, this.imaginaire);

  // Addition de deux nombres complexes
  Complexe operator +(Complexe autre) {
    return Complexe(reel + autre.reel, imaginaire + autre.imaginaire);
  }

  // Représentation en chaîne pour faciliter le débogage
  @override
  String toString() => '${reel} + ${imaginaire}i';
}

void main() {
  var nombre1 = Complexe(3, 4);
  var nombre2 = Complexe(1, 2);

  var somme = nombre1 + nombre2;
  print(somme);  // 4.0 + 6.0i
}

Utiliser SciDart pour des opérations avancées

Pour des opérations plus complexes ou lorsque les performances sont critiques, le package:scidart offre un support complet pour les nombres complexes parmi d’autres fonctionnalités de calcul scientifique. Tout d’abord, ajoutez SciDart à votre fichier pubspec.yaml :

dependencies:
  scidart: ^0.0.1-dev.9

Voici comment réaliser des opérations de base avec des nombres complexes en utilisant SciDart :

import 'package:scidart/numdart.dart';

void main() {
  // Création de nombres complexes
  var complexeNum1 = Complexe(reel: 5, imaginaire: 3);
  var complexeNum2 = Complexe(reel: 2, imaginaire: 7);

  // Addition
  var somme = complexAdd(complexeNum1, complexeNum2);
  
  // Multiplication
  var produit = complexMultiply(complexeNum1, complexeNum2);

  print('Somme: ${somme.toString()}');  // Somme: Complexe(reel: 7.0, imaginaire: 10.0)
  print('Produit: ${produit.toString()}');  // Produit: Complexe(reel: -11.0, imaginaire: 41.0)
}

Ces exemples démontrent la manipulation et l’utilisation basiques des nombres complexes en Dart, à la fois par l’implémentation personnalisée et via la bibliothèque SciDart, soulignant la flexibilité et la puissance de Dart pour les tâches de calcul scientifique.