Arbeiten mit komplexen Zahlen

Dart:
Arbeiten mit komplexen Zahlen

Wie geht das:

Dart selbst beinhaltet keine integrierte Bibliothek für komplexe Zahlen, was entweder die Implementierung einer eigenen komplexen Zahlklasse oder die Verwendung einer Bibliothek von Drittanbietern erforderlich macht. Eine beliebte Wahl für wissenschaftliche Rechenaufgaben, die auch die Unterstützung für komplexe Zahlen umfasst, ist package:scidart.

Implementierung einer grundlegenden komplexen Zahlklasse

Für einfache Operationen können Sie leicht Ihre eigene komplexe Zahlklasse definieren:

class Complex {
  final double real;
  final double imaginary;

  Complex(this.real, this.imaginary);

  // Addition von zwei komplexen Zahlen
  Complex operator +(Complex other) {
    return Complex(real + other.real, imaginary + other.imaginary);
  }

  // Stringdarstellung für einfaches Debugging
  @override
  String toString() => '${real} + ${imaginary}i';
}

void main() {
  var number1 = Complex(3, 4);
  var number2 = Complex(1, 2);

  var sum = number1 + number2;
  print(sum);  // 4.0 + 6.0i
}

SciDart für fortgeschrittene Operationen nutzen

Für komplexere Operationen oder wenn die Leistung kritisch ist, bietet das package:scidart umfassende Unterstützung für komplexe Zahlen unter anderem wissenschaftlichen Rechenfunktionen. Fügen Sie zunächst SciDart zu Ihrer pubspec.yaml hinzu:

dependencies:
  scidart: ^0.0.1-dev.9

So führen Sie grundlegende Operationen mit komplexen Zahlen unter Verwendung von SciDart durch:

import 'package:scidart/numdart.dart';

void main() {
  // Erstellen von komplexen Zahlen
  var complexNum1 = Complex(real: 5, imaginary: 3);
  var complexNum2 = Complex(real: 2, imaginary: 7);

  // Addition
  var sum = complexAdd(complexNum1, complexNum2);
  
  // Multiplikation
  var product = complexMultiply(complexNum1, complexNum2);

  print('Sum: ${sum.toString()}');  // Summe: Complex(real: 7.0, imaginary: 10.0)
  print('Product: ${product.toString()}');  // Produkt: Complex(real: -11.0, imaginary: 41.0)
}

Diese Beispiele demonstrieren die grundlegende Manipulation und Nutzung komplexer Zahlen in Dart, sowohl durch benutzerdefinierte Implementierung als auch über die SciDart-Bibliothek und heben die Flexibilität und Leistungsfähigkeit von Dart für wissenschaftliche Rechenaufgaben hervor.