Из Википедии, бесплатной энциклопедии
  (Перенаправлен с алгоритма частичных товаров )
Перейти к навигации Перейти к поиску

Сеточный метод (также известный как метод коробки ) умножения является вводным подходом к многоразрядным вычислениям умножения , которые вовлекают чисел больше , чем десять. Поскольку его часто преподают в рамках математического образования на уровне начальной или начальной школы , этот алгоритм иногда называют методом гимназии. [1]

По сравнению с традиционным длинным умножением метод сетки отличается четким разделением умножения и сложения на два шага и меньшей зависимостью от разряда.

Будучи менее эффективным, чем традиционный метод, умножение сетки считается более надежным , поскольку дети с меньшей вероятностью совершают ошибки. Большинство учеников продолжат изучать традиционный метод, когда они освоятся с методом сетки; но знание метода сетки остается полезным «отступлением» в случае возникновения путаницы. Также утверждается, что, поскольку каждый, кто много занимается умножением, в настоящее время будет использовать карманный калькулятор, эффективность ради самой эффективности менее важна; в равной степени, поскольку это означает, что большинство детей будут реже использовать алгоритм умножения, им будет полезно ознакомиться с более явным (и, следовательно, более запоминающимся) методом.

Использование сеточного метода было стандартом в математическом образовании в начальных школах Англии и Уэльса с момента введения Национальной стратегии счета с ее «часом счета» в 1990-х годах. Его также можно найти в различных учебных программах в других местах. По сути, тот же подход к расчету, но без явного расположения сетки, также известен как алгоритм частичных произведений или метод частичных произведений .

Расчеты [ править ]

Вступительная мотивация [ править ]

Метод сетки можно представить, подумав о том, как сложить количество точек в регулярном массиве, например количество квадратов шоколада в плитке шоколада. По мере того, как размер вычисления становится больше, становится легче начать считать по десяткам; и представить расчет в виде прямоугольника, который можно разделить на части, а не рисовать множество точек. [2] [3]

На простейшем уровне учеников можно попросить применить этот метод к вычислению типа 3 × 17. Разбив («разбив») 17 на (10 + 7), это незнакомое умножение можно вычислить как сумму двух простых умножения:

Итак, 3 × 17 = 30 + 21 = 51.

Это структура «сетки» или «ящиков», которая дает название методу умножения.

Столкнувшись с немного большим умножением, например 34 × 13, ученики могут сначала побудить также разбить его на десятки. Итак, раскрывая 34 как 10 + 10 + 10 + 4 и 13 как 10 + 3, можно представить произведение 34 × 13:

Суммируя содержимое каждой строки, становится очевидным, что окончательный результат вычисления будет (100 + 100 + 100 + 40) + (30 + 30 + 30 + 12) = 340 + 102 = 442.

Стандартные блоки [ править ]

Как только ученики освоятся с идеей разбить весь продукт на вклады из отдельных ящиков, естественным шагом будет сгруппировать десятки вместе, так что вычисление 34 × 13 станет

добавление

Итак, 34 × 13 = 442.

Это самая обычная форма для расчета сетки. В таких странах, как Великобритания, где обучение сеточному методу является обычным, ученики могут проводить значительный период времени, регулярно проводя расчеты, подобные приведенным выше, до тех пор, пока метод не станет полностью удобным и знакомым.

Большие числа [ править ]

Сеточный метод напрямую распространяется на вычисления с большими числами.

Например, чтобы вычислить 345 × 28, ученик может построить сетку с шестью простыми умножениями.

чтобы найти ответ 6900 + 2760 = 9660.

Однако на этом этапе (по крайней мере, в стандартной современной педагогической практике Великобритании) учеников может начать поощрять выполнение таких вычислений с использованием традиционной формы длинного умножения без необходимости рисовать сетку.

Традиционное длинное умножение может быть связано с сеточным умножением, в котором только одно из чисел разбивается на десятки и единицы, которые умножаются отдельно:

Традиционный метод в конечном итоге более быстрый и компактный; но это требует двух значительно более сложных умножений, с которыми ученики могут сначала бороться [ цитата ] . По сравнению с методом сетки, традиционное длинное умножение также может быть более абстрактным [ необходима цитата ] и менее явно ясной [ необходима цитата ] , поэтому некоторым ученикам труднее вспомнить, что нужно делать на каждом этапе и почему [ необходима ссылка ] . Таким образом, учеников можно в течение некоторого времени поощрять к использованию более простого метода сетки наряду с более эффективным традиционным методом длинного умножения в качестве проверки и отступления.

Другие приложения [ править ]

Дроби [ править ]

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

Например, расчет 2½ × 1½ может быть выполнен с использованием метода сетки.

чтобы найти, что полученное произведение равно 2 + ½ + 1 + ¼ = 3¾

Алгебра [ править ]

Сеточный метод также можно использовать для иллюстрации умножения произведения биномов , например ( a + 3) ( b + 2), стандартной темы в элементарной алгебре (хотя она обычно не встречается до средней школы ):

Таким образом, ( a + 3) ( b + 2) = ab + 3 b + 2 a + 6.

Вычисления [ править ]

32-битные процессоры обычно не имеют инструкции для умножения двух 64-битных целых чисел. Однако большинство процессоров поддерживают команду «умножить с переполнением», которая принимает два 32-битных операнда, умножает их и помещает 32-битный результат в один регистр, а переполнение - в другой, что приводит к переносу. Например, они включают umullинструкцию, добавленную в набор инструкций ARMv4t, или pmuludqинструкцию, добавленную в SSE2, которая работает с младшими 32 битами регистра SIMD, содержащего две 64-битные полосы.

На платформах, поддерживающих эти инструкции, используется немного измененная версия метода сетки. Отличия заключаются в следующем:

  1. Вместо работы с числами, кратными 10, они работают с 32-битными целыми числами.
  2. Вместо того, чтобы умножать старшие биты на десять, они умножаются на 0x100000000. Обычно это делается либо сдвигом влево на 32, либо помещением значения в конкретный регистр, который представляет старшие 32 бита.
  3. Любые значения, лежащие выше 64-го бита, усекаются. Это означает, что умножение старших битов не требуется, потому что результат будет смещен за пределы 64-битного диапазона. Это также означает, что для более высоких кратных требуется только 32-битное умножение.

Это будет обычная процедура в C:

#include  <stdint.h>uint64_t  multiply ( uint64_t  ab ,  uint64_t  cd ) {  / * Эти сдвиги и маски обычно неявны, поскольку 64-битные целые числа  * часто передаются как 2 32-битных регистра. * /  uint32_t  b  =  ab  >>  32 ,  a  =  ab  &  0xFFFFFFFF ;  uint32_t  d  =  cd  >>  32 ,  c  =  cd  &  0xFFFFFFFF ; / * умножение с переполнением * /  uint64_t  ac  =  ( uint64_t ) a  *  ( uint64_t ) c ;  uint32_t  high  =  ac  >>  32 ;  / * переполнение * /  uint32_t  low  =  ac  &  0xFFFFFFFF ; / * 32-битное умножение и прибавление к старшим битам * /  high  + =  ( a  *  d );  / * добавляем объявление * /  high  + =  ( b  *  c );  / * добавить bc * /  / * умножить на 0x100000000 (с помощью сдвига влево) и добавить к младшим битам двоичным или. * /  return  (( uint64_t ) high  <<  32 )  |  низкий ; }

Это будет обычная процедура сборки ARM:

кратно:  @  = г0 @ Ь = r1 @ с = г2 @ г = г3 толчок { r4 , Л.Р. } @ резервного копирования r4 и Л.Р. к в стек umull r12 , Lr , r2 , r0 @ многократно r2 и r0 , хранить в результат в r12 и переполнения в ЛО                                              MLA  r4 ,  r2 ,  r1 ,  Л.Р.  @  умножить  r2  и  r1 ,  добавить  Л.Р. ,  и  магазин  в  r4  MLA  r1 ,  r3 ,  r0 ,  r4  @  умножить  r3  и  r0 ,  добавить  r4 ,  и  магазин  в  Г1  @  The  значение  будет  сдвинута  влево  неявно ,  потому что  в  @  высокие  биты из  более  64 - разрядного  целого числа  будут  возвращены  в  r1.  мы  г0 ,  r12  @  Установить  на  низкие  биты  из  с  обратным  значения  для  r12  ( аса )  поп  { г4 ,  Л.Р. }  @  восстановить  r4  и  Л.Р.  из  стека BX Л.Р. @ вернуться на низкие и высокие битах в r0 и              r1  соответственно

Математика [ править ]

Математически способность разбивать умножение таким образом известна как закон распределения , который может быть выражен в алгебре как свойство a ( b + c ) = ab + ac . Метод сетки использует свойство распределения дважды для расширения продукта, один раз для горизонтального фактора и один раз для вертикального фактора.

Исторически расчет сетки (немного измененный) был основой метода, называемого умножением на решетку , который был стандартным методом многозначного умножения, разработанным в средневековой арабской и индуистской математике. Решеточное умножение было введено в Европу Фибоначчи в начале тринадцатого века вместе с так называемыми арабскими цифрами; хотя, как и в случае с числами, способы, которые он предлагал вычислять с их помощью, поначалу медленно прижились. Кости Напьера были расчетной помощью, введенной шотландцем Джоном Напье в 1617 году для помощи в расчетах методом решетки.

См. Также [ править ]

  • Алгоритм умножения
  • Таблица умножения

Ссылки [ править ]

  • Роб Истэуэй и Майк Эскью, Математика для мам и пап , Square Peg, 2010. ISBN  978-0-224-08635-6 . С. 140–153.
  1. ^ https://tspiteri.gitlab.io/gmp-mpfr-sys/gmp/Algorithms.html#Multiplication-Algorithms
  2. ^ Длинное умножение - метод бокса
  3. ^ Длинное умножение и деление

Внешние ссылки [ править ]

  • Длинное умножение - метод ящика , Математика онлайн .
  • Длинное умножение и деление , BBC GCSE Bitesize