PHP:
Praca z liczbami zespolonymi
Jak?
PHP oferuje wbudowane wsparcie dla liczb zespolonych za pomocą rozszerzenia ext-intl
z klasą NumberFormatter
. Oto przykład:
// Upewnij się, że rozszerzenie intl jest załadowane
if (!extension_loaded('intl')) {
die("Rozszerzenie intl nie jest włączone. Proszę je włączyć, aby uruchomić ten kod.");
}
function addComplexNumbers($a, $b) {
// Użyj NumberFormatter do analizowania i formatowania liczb zespolonych
$formatter = new NumberFormatter('en_US', NumberFormatter::PATTERN_RULEBASED, 'i = -1;');
// Analizuj liczby zespolone z ciągów
$numA = $formatter->parse($a, NumberFormatter::TYPE_DOUBLE);
$numB = $formatter->parse($b, NumberFormatter::TYPE_DOUBLE);
// Wykonaj dodawanie
$sum = $numA + $numB;
// Sformatuj wynik jako liczbę zespoloną
return $formatter->format($sum);
}
echo addComplexNumbers('5+3i', '2+7i'); // Wynik: 7+10i
Pogłębienie
Przed ext-intl
, PHP nie miało rodzimego wsparcia dla liczb zespolonych. Deweloperzy używali funkcji lub niestandardowych bibliotek klas do obsługi liczb zespolonych. Operacje na liczbach zespolonych mogły być uciążliwe i podatne na błędy, ale ext-intl
oferuje zinternacjonalizowany sposób prezentacji i analizy liczb zespolonych, zgodny z biblioteką ICU.
Jednak, w przypadku zaawansowanych operacji matematycznych, niektórzy mogą używać zewnętrznych bibliotek napisanych w bardziej przyjaznych dla matematyki językach (takich jak C lub Python) i łączyć się z nimi za pośrednictwem PHP. Jeśli chodzi o implementację, ext-intl
radzi sobie z nią za kulisami, zapewniając dokładne obliczenia matematyczne, jednocześnie abstrahując złożoność od programisty.
Historycznie liczby zespolone były niechętnie przyjmowane, będąc określane jako ‘urojone’, ale od tego czasu stały się fundamentalne w różnorodnych dziedzinach naukowych i matematycznych, pokazując więcej o ich znaczeniu w rzeczywistym świecie, niż sugerowałby ich urojony status.