PERL: БИБЛИОТЕКА ПРОГРАММИСТА


PERL: БИБЛИОТЕКА ПРОГРАММИСТА - стр. 90


return ($rows, $cols),

Комментарий

Если у вас установлена библиотека PDL, вы можете воспользоваться ее молние­носными числовыми операциями. Они требуют значительно меньше памяти и ресурсов процессора, чем стандартные операции с массивами Perl. При использо­вании объектов PDL многие числовые операторы (например, + и *) перегружаются и работают с конкретными типами операндов (например, оператор * выполняет так называемое скалярное умножение). Для умножения матриц используется пе­регруженный оператор х.

use PDL;

$а = pdl [

[ 3,   2,   3  ], [ 5,   9,   8 ],

$b = pdl  [

[ 4,   7   ],

[ 9,   3   ],

[ 8,    1   ],

$c = $a x $b;   # Перегруженный оператор x

Если библиотека PDL недоступна или вы не хотите привлекать ее для столь тривиальной задачи, матрицы всегда можно перемножить вручную:


86   Глава 2 • Числа

# mmult() и другие процедуры определены выше

$х = [

[ 3,   2,   3 ], [ 5,   9,   8 ],

$У = [

[  4,    7  ],

[  9,    3  ],

[  8,    1  ],

$z = mult($x,   $y);

> Смотри также---------------------------------------------------------------------------------------------

Документация по модулю PDL с CPAN.

2.15. Операции с комплексными числами

Проблема

Ваша программа должна работать с комплексными числами, часто используемы­ми в инженерных, научных и математических расчетах.

Решение

Либо самостоятельно организуйте хранение вещественной и мнимой состав­ляющих комплексного числа, либо воспользуйтесь классом Math::Complex (из стандартной поставки Perl).

Ручное умножение комплексных чисел

#  $с = $а • $Ь - моделирование операции

$c_real = ( $a_real * $b_real ) - ($a_imaginary ¦ $b_imaginary ); $c_imagmary = ( $a_real * $b_itnaginary ) - ($b_real • $a_imaginary );

Math::Complex

# Умножение комплексных чисел с помощью Math::Complex
use Math::Complex;

$c = $a * $b;

Комментарий

Ручное умножение комплексных числа 3+5i и 2-2i выполняется следующим образом:

$a_real = 3;   $a_imaginary =5;                                 # 3 + 5i;




Начало  Назад  Вперед