Att arbeta med komplexa tal

Dart:
Att arbeta med komplexa tal

Hur:

Dart inkluderar inte i sig ett inbyggt bibliotek för komplexa tal, vilket kräver antingen implementeringen av en egen klass för komplexa tal eller användningen av ett tredjepartbibliotek. Ett populärt val för vetenskapliga beräkningsuppgifter, som inkluderar stöd för komplexa tal, är package:scidart.

Implementera en grundläggande klass för komplexa tal

För enkla operationer kan du enkelt definiera din egen klass för komplexa tal:

class Complex {
  final double real;
  final double imaginary;

  Complex(this.real, this.imaginary);

  // Addition av två komplexa tal
  Complex operator +(Complex other) {
    return Complex(real + other.real, imaginary + other.imaginary);
  }

  // Strängrepresentation för enkel felsökning
  @override
  String toString() => '${real} + ${imaginary}i';
}

void main() {
  var nummer1 = Complex(3, 4);
  var nummer2 = Complex(1, 2);

  var summa = nummer1 + nummer2;
  print(summa);  // 4.0 + 6.0i
}

Använda SciDart för avancerade operationer

För mer komplexa operationer eller när prestanda är kritisk, erbjuder package:scidart omfattande stöd för komplexa tal bland andra funktioner för vetenskaplig beräkning. Först, lägg till SciDart i din pubspec.yaml:

dependencies:
  scidart: ^0.0.1-dev.9

Så här utför du grundläggande operationer med komplexa tal med hjälp av SciDart:

import 'package:scidart/numdart.dart';

void main() {
  // Skapa komplexa tal
  var complexNum1 = Complex(real: 5, imaginary: 3);
  var complexNum2 = Complex(real: 2, imaginary: 7);

  // Addition
  var summa = complexAdd(complexNum1, complexNum2);
  
  // Multiplikation
  var produkt = complexMultiply(complexNum1, complexNum2);

  print('Summa: ${summa.toString()}');  // Summa: Complex(real: 7.0, imaginary: 10.0)
  print('Produkt: ${produkt.toString()}');  // Produkt: Complex(real: -11.0, imaginary: 41.0)
}

Dessa exempel demonstrerar grundläggande manipulering och användning av komplexa tal i Dart, både genom egen implementering och via SciDart-biblioteket, vilket framhäver Darts flexibilitet och kraft för vetenskapliga beräkningsuppgifter.