Työskentely kompleksilukujen kanssa

Dart:
Työskentely kompleksilukujen kanssa

Kuinka:

Dart itsessään ei sisällä valmista kirjastoa kompleksiluvuille, mikä edellyttää joko oman kompleksilukuluokan toteuttamista tai kolmannen osapuolen kirjaston käyttöä. Suosittu valinta tieteellisen laskennan tehtäviin, joka sisältää tuen kompleksiluvuille, on package:scidart.

Peruskompleksilukuluokan toteuttaminen

Yksinkertaisiin toimenpiteisiin voit helposti määritellä oman kompleksilukuluokan:

class Complex {
  final double real;
  final double imaginary;

  Complex(this.real, this.imaginary);

  // Kahden kompleksiluvun yhteenlasku
  Complex operator +(Complex other) {
    return Complex(real + other.real, imaginary + other.imaginary);
  }

  // Merkkijonoesitys helpottaa debuggausta
  @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
}

SciDartin käyttäminen monimutkaisempiin toimenpiteisiin

Monimutkaisemmissa toimenpiteissä tai kun suorituskyky on kriittistä, package:scidart tarjoaa kattavan tuen kompleksiluvuille muiden tieteellisen laskennan toiminnallisuuksien ohella. Lisää ensin SciDart pubspec.yaml-tiedostoosi:

dependencies:
  scidart: ^0.0.1-dev.9

Tässä on, kuinka suorittaa perustoimintoja kompleksiluvuilla käyttäen SciDartia:

import 'package:scidart/numdart.dart';

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

  // Yhteenlasku
  var sum = complexAdd(complexNum1, complexNum2);
  
  // Kertolasku
  var product = complexMultiply(complexNum1, complexNum2);

  print('Summa: ${sum.toString()}');  // Summa: Complex(real: 7.0, imaginary: 10.0)
  print('Tulo: ${product.toString()}');  // Tulo: Complex(real: -11.0, imaginary: 41.0)
}

Nämä esimerkit osoittavat perusmanipuloinnin ja kompleksilukujen käytön Dartissa, sekä oman toteutuksen että SciDart-kirjaston kautta, korostaen Dart:in joustavuutta ja voimaa tieteellisen laskennan tehtävissä.