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

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

Его в основном обучают делению на линейные монические многочлены (известное как правило Руффини ), но этот метод можно обобщить и на деление на любой многочлен .

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

Регулярное синтетическое деление [ править ]

Первый пример - синтетическое деление с моническим линейным знаменателем .

Числитель можно записать как .

Нуль знаменателя является .

Коэффициенты расположены следующим образом, с нулем слева:

Первый коэффициент после бара «упал» до последней строки.

Сократилось число умножается на числа до бара, и место в следующей колонке .

В следующем столбце выполняется добавление .

Предыдущие два шага повторяются, и получается следующее:

Здесь последний член (-123) - это остаток, а остальные соответствуют коэффициентам частного.

Члены записываются с возрастающей степенью справа налево, начиная с нулевой степени для остатка и результата.

Следовательно, частное и остаток равны:

Вычисление многочленов по теореме об остатке [ править ]

Вышеупомянутая форма синтетического деления полезна в контексте теоремы о полиномиальном остатке для вычисления одномерных полиномов. Подводя итог, значение at равно оставшейся части . Преимущество вычисления значения таким способом состоит в том, что он требует чуть более половины шагов умножения, чем наивная оценка. Альтернативная стратегия оценки - метод Хорнера .

Расширенное синтетическое подразделение [ править ]

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

Мы занимаемся только коэффициентами. Напишите сверху коэффициенты многочлена, который нужно разделить.

Отбросить коэффициенты делителя.

Впишите все коэффициенты, кроме первого слева, по диагонали направленной вверх (см. Следующую диаграмму).

Обратите внимание на изменение знака с 1 на −1 и с −3 на 3 . «Перетащите» первый коэффициент после полосы в последнюю строку.

Умножьте выпавшее число на диагональ перед полосой и разместите полученные записи по диагонали справа от выпавшей записи.

Выполните сложение в следующем столбце.

Повторяйте предыдущие два шага, пока не пройдете записи вверху со следующей диагональю .

Затем просто сложите оставшиеся столбцы.

Подсчитайте термины слева от полосы. Поскольку их два, остаток имеет степень один, и это два крайних правых члена под чертой. Отметьте разделение вертикальной чертой.

Члены записываются с возрастающей степенью справа налево, начиная с нулевой степени как для остатка, так и для результата.

Результат нашего деления:

Для немонических делителей [ править ]

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

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

Как можно заметить, сначала выполняя длинное деление с таким немоническим делителем, коэффициенты делятся на ведущий коэффициент после «отбрасывания» и до умножения.

Проиллюстрируем, выполнив следующее деление:

Используется немного измененная таблица:

Обратите внимание на дополнительную строку внизу. Это используется для записи значений, найденных путем деления "отброшенных" значений на ведущий коэффициент (в данном случае, обозначенный / 3 ; обратите внимание, что, в отличие от остальных коэффициентов , знак этого числа не изменяется) .

Далее, как обычно, опускается первый коэффициент :

а затем выпавшее значение делится на 3 и помещается в строку ниже:

Затем новое (разделенное) значение используется для заполнения верхних строк числами, кратными 2 и 1, как в расширенной технике:

Затем отбрасывается 5 с обязательным добавлением 4 под ним, и ответ снова делится:

Затем цифра 3 используется для заполнения верхних строк:

На этом этапе, если бы после получения третьей суммы мы попытались использовать ее для заполнения верхних строк, мы бы «отвалились» от правой стороны, таким образом, третья сумма является первым коэффициентом остатка, как в обычном синтетическое деление. Но значения остатка не делятся на старший коэффициент делителя:

Теперь мы можем считать коэффициенты ответа. Как и в расширенном синтетическом делении, последние два значения (2 - степень делителя) являются коэффициентами остатка, а остальные значения являются коэффициентами частного:

и результат

Компактное расширенное синтетическое подразделение [ править ]

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

Ниже описывается, как выполнять алгоритм; этот алгоритм включает шаги для деления немонических делителей:

  1. Напишите коэффициенты дивиденда на полосе
  2. Игнорируя первый (ведущий) коэффициент делителя, отмените все коэффициенты и поместите их в левую часть полосы.
  3. Из числа коэффициентов, помещенных в левую часть полосы, подсчитайте количество коэффициентов деления над полосой, начиная с самого правого столбца. Затем поместите вертикальную полосу слева, а также строку ниже этого столбца. Эта вертикальная черта отмечает разделение между частным и остатком.
  4. Опустите первый коэффициент дивиденда под столбик.
    • Разделите ранее выпавшее / суммированное число на ведущий коэффициент делителя и поместите его в строку ниже (это не нужно делать, если ведущий коэффициент равен 1). В этом случае .
    • Умножьте ранее выпавшее / суммированное число (или разделенное отброшенное / суммированное число) на каждый отрицательный коэффициент делителя слева (начиная с самого левого); пропустить, если отброшенное / суммированное число равно нулю. Поместите каждый продукт поверх следующих столбцов.
  5. Выполните добавление по столбцам в следующем столбце.
  6. Повторите два предыдущих шага. Остановитесь, когда вы выполнили предыдущие два шага над числом перед вертикальной чертой. Пусть . Пусть . Пусть .
  7. Выполните остальные столбцы сложения в последующих столбцах (вычисляя остаток).
  8. Самые нижние результаты под горизонтальной чертой - это коэффициенты многочленов, остаток и частное. Где коэффициенты частного находятся слева от вертикальной черты разделения, а коэффициенты остатка - справа. Эти коэффициенты будут интерпретироваться с возрастающей степенью справа налево, начиная с нулевой степени как для остатка, так и для частного. Мы интерпретируем результаты, чтобы получить:

Реализация Python [ править ]

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

def  extended_synthetic_division ( делимое ,  делитель ):  "" "Быстрое полиномиальное деление с помощью расширенного синтетического деления.  Также работает с немоническими полиномами. Дивиденд и делитель - это многочлены, которые здесь просто списки коэффициентов.  Например: х ** 2 + 3 * х + 5 будет представлен в виде [1, 3, 5]  ""»  из  =  список ( дивидендов )  # Скопировать дивиденды  нормализатор  =  делитель [ 0 ]  для  ввода  в  диапазоне ( LEN ( дивиденды )  -  len ( divisor )  +  1 ):  # Для общего деления многочленов (когда многочлены немоничны), # нам нужно нормализовать, разделив коэффициент на первый коэффициент делителя  out [ i ]  / =  normalizer coef  =  out [ i ]  if  coef  ! =  0 :  # Бесполезно умножать, если coef равен 0  # При синтетическом делении мы всегда пропускаем первый коэффициент делителя,  # потому что он используется только для нормализации коэффициентов  деления для  j  в  диапазоне ( 1 ,  len ( divisor )):  out [ i  +  j ]  + =  - divisor [ j ]  *  coef # Результирующий результат содержит как частное, так и остаток,  # остаток равен размеру делителя (остаток  # обязательно имеет ту же степень, что и делитель, поскольку это  # то, что мы не можем разделить из делимого), поэтому мы вычислить индекс  #, где находится это разделение, и вернуть частное и остаток.  separator  =  1  -  len ( делитель )  return  out [: separator ],  out [ separator :]  # Возвращает частное, остаток.

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

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

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