combine

Объедините условия той же алгебраической структуры

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

combine(f, <IgnoreAnalyticConstraints>)
combine(f, target, <IgnoreAnalyticConstraints>)
combine(f, [target1, target2, …], <IgnoreAnalyticConstraints>)

Описание

combine(f) переписывает продукты степеней в выражении f как одна степень.

combine(f, target) комбинирует несколько вызовов целевой функции (функций) в выражении f к одному вызову.

combine(f) применяет эти правила перезаписи к продуктам степеней, происходящих как подвыражения в арифметическом expression f:

  • ,

  • ,

  • .

Последние два правила только допустимы в условиях определенных дополнительных ограничений, такой как тогда, когда b является целым числом. За исключением третьего правила, это поведение combine является обратной функциональностью expand. Смотрите Пример 1.

Примечание

В определенных случаях MuPAD® внутренний simplifier автоматически применяет эти правила в обратном направлении, и combine иногда не имеет никакого эффекта. Смотрите Пример 2.

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

  • target = arctan:

    для-1 <x <1   и-1 <y <1  .

  • target = exp (см. пример 4):

    • ,

    • ,

      где допустимый, реагируя на свойства.

  • target = int (см. пример 5):

    • af(x)dx=af(x)dx.

    • f(x)dx+g(x)dx=f(x)+g(x)dx.

    • abf(x)dx+abg(x)dx=abf(x)+g(x)dx.

    • abf(x)dx+abg(y)dy=abf(y)+g(y)dy.

    • abyf(x)dx+abxg(y)dy=abyf(c)+xf(c)dc.

  • target = gamma (см. пример 6):

    • ,

    • ,

    • ,

    • ,

    • ,

      для положительных целых чисел n.

  • target = ln (см. пример 7):

    • ,

    • ,

      если b является меньше, чем N. По умолчанию, N = 1000. Можно изменить номер N с помощью команды Pref::autoExpansionLimit. Смотрите Пример 8.

    Правила не содержат для произвольных комплексных чисел a, b. Задайте соответствующие свойства для a или b, чтобы включить эти правила перезаписи. Эти правила только применяются к натуральным логарифмам.

  • target = sincos (см. пример 3):

    • ,

      где подобные правила применяются к sin (x)  cos (y) и cos (x)  cos (y):

    • .

  • target = sinhcosh:

    • ,

      где подобные правила применяются к sinh (x)  cosh (y) и cosh (x)  cosh (y).

    • Эти правила применяются рекурсивно к степеням sinh и cosh с положительными интегральными экспонентами.

combine работает рекурсивно над подвыражениями f.

Если второй аргумент является списком целей, то combine применяется к f впоследствии для каждой из целей в списке. Смотрите Пример 10.

Если f является массивом, списком или набором, combine применяется ко всем записям f. Смотрите Пример 11. Если f является полиномом или последовательным расширением типа Series::Puiseux или Series::gseries, combine применяется к каждому коэффициенту. Смотрите Пример 12.

Взаимодействия среды

combine реагирует на свойства идентификаторов, появляющихся во входе.

Примеры

Пример 1

Объедините степени той же основы с помощью combine.

combine(sin(x) + x*y*x^(exp(1)))

combine также комбинирует степени с той же экспонентой в определенных случаях:

combine(sqrt(2)*sqrt(3))

Пример 2

В большинстве случаев, однако, combine не комбинирует степени с той же экспонентой:

combine(y^5*x^5)

Пример 3

Перепишите продукты синусов и косинусов как сумма синусов и косинусов путем установки второго аргумента на sincos:

combine(sin(a)*cos(b) + sin(b)^2, sincos)

Перепишите суммы синусов и косинусов путем установки второго аргумента на sincos:

combine(cos(a) + sin(a), sincos)

Полномочия синусов или косинусов с отрицательными целочисленными экспонентами не переписаны:

combine(sin(b)^(-2), sincos)

Пример 4

Объедините условия с показательной функцией путем определения второго аргумента как exp.

combine(exp(3)*exp(2), exp)

combine(exp(a)^2, exp)

Пример 5

Перепишите интегралы путем установки второго аргумента на int.

combine(int(f(x),x)+int(g(x),x),int)

combine комбинирует постоянный термин с интегралом.

combine(a*int(f(x),x),int)

combine комбинирует интегралы с теми же пределами.

combine(int(f(x),x=a..b)+int(g(y),y=a..b),int)

Пример 6

Объедините вызовы gamma путем определения цели как gamma. Функция combine упрощает частных гамм к рациональным выражениям.

combine(gamma(n+3)*gamma(n+4/3) / gamma(n+1) / gamma(n+10/3), gamma)

Пример 7

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

Попытайтесь объединить условия с вызовами ln путем определения цели как ln.

combine(ln(a) + ln(b), ln)

combine не комбинирует условия. Установите соответствующие предположения комбинировать условия.

assume(a > 0): assume(b > 0):
combine(ln(a) + ln(b), ln)

unassume(a): unassume(b):

Пример 8

Если a и b являются целыми или рациональными числами, и b является меньше, чем 1000, combine возвращает логарифмы.

combine(3*ln(2), ln)

Если b больше, чем или равен 1000, combine возвращает результаты как:

combine(1234*ln(5), ln)

Можно изменить предел на номере b при помощи функции Pref::autoExpansionLimit. Например, когда вы используете значение по умолчанию N = 1000, combine возвращает следующий результат для этого логарифма:

combine(12*ln(12), ln)

Если вы устанавливаете значение Pref::autoExpansionLimit к 10, combine возвращает этот логарифм в своей исходной форме:

Pref::autoExpansionLimit(10):
combine(12*ln(12), ln)

Для дальнейших вычислений восстановите значение по умолчанию Pref::autoExpansionLimit:

Pref::autoExpansionLimit(NIL):

Пример 9

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

Объедините логарифмы с помощью опции IgnoreAnalyticConstraints.

combine(ln(a^5) - ln(a^4), ln, IgnoreAnalyticConstraints)

Не используя эту опцию, вы получаете математически правильный, но длинный результат:

combine(ln(a^5) - ln(a^4), ln)

Пример 10

Второй аргумент также может быть списком целей. Затем правила перезаписи для каждой из целей в списке применяются.

Перепишите ln и условия sincos в выражении.

combine(ln(2) + ln(3) + sin(a)*cos(a), [ln, sincos])

Пример 11

combine сопоставляет с наборами:

combine({sqrt(2)*sqrt(5), sqrt(2)*sqrt(11)})

Пример 12

combine сопоставляет с коэффициентами полиномов:

combine(poly(sin(x)*cos(x)*y, [y]), sincos)

Однако это не касается indeterminates полинома:

combine(poly(sin(x)*cos(x)), sincos)

Параметры

f

Арифметическое выражение, массив, список, полином или набор

target

Один из идентификаторов: arctan, exp, int, gamma, ln, sincos или sinhcosh

Опции

IgnoreAnalyticConstraints

Примените чисто алгебраические упрощения в выражении. Для получения дополнительной информации см. опции для команды Simplify.

Возвращаемые значения

Объект того же типа как входной объект f.

Перегруженный

f

Алгоритмы

Опытные пользователи могут расширить функциональность combine путем реализации дополнительных правил перезаписи для других целевых функций. Чтобы расширить функциональность, задайте новый слот target combine. Чтобы задать новый слот, необходимо сначала оставить без защиты идентификатор, который оставляет без защиты использование combine. Впоследствии, команда combine(f, target) приводит к вызову combine::target(f) соответствующей стандартной программы слота.

По умолчанию combine обрабатывает подвыражение g(x1,x2,...) f путем вызова себя рекурсивно для операндов x1, x2, и т.д. Пользователи могут изменить это поведение для своей собственной математической функции, данной функцией environment g путем реализации слота combine g. Чтобы обработать подвыражение g(x1,x2,...), combine затем вызывает стандартную программу слота g::combine с последовательностью аргумента x1,x2,... g.

Представленный в R2007b