combine

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

Описание

пример

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

пример

Y = combine(S,T) объединяет несколько вызовов целевой функции T в выражении S. Использование combine для реализации обратной функциональности expand в отношении большинства применяемых правил.

пример

Y = combine(___,'IgnoreAnalyticConstraints',true) упрощает выход путем применения общих математических тождеств, таких как log(a) + log(b) = log(a*b). Эти тождества могут быть действительны не для всех значений переменных, но применение их может вернуть более простые результаты.

Примеры

Степени той же основы

Объедините степени одной основы.

syms x y z
combine(x^y*x^z)
ans =
x^(y + z)

Объедините степени числовых аргументов. Чтобы предотвратить MATLAB® от оценки выражения используйте sym для преобразования по крайней мере одного числового аргумента в символьное значение.

syms x y
combine(x^(3)*x^y*x^exp(sym(1)))
ans =
x^(y + exp(1) + 3)

Здесь, sym преобразует 1 в символическое значение, препятствующее MATLAB вычислять выражение e1.

Степени того же экспонента

Объедините степени с одинаковыми показателями в определенных случаях.

combine(sqrt(sym(2))*sqrt(3))
ans =
6^(1/2)

combine обычно не объединяет степеней, поскольку внутренний упрощатель применяет те же правила в противоположном направлении, чтобы расширить результат.

syms x y 
combine(y^5*x^5)
ans =
x^5*y^5

Термины с логарифмами

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

S = log(sym(2)) + log(sym(3));
combine(S,'log')
ans =
log(6)

Попробуйте объединить log(a) + log(b). Потому что a и b приняты комплексными числами по умолчанию, правило не содержит и combine не объединяет термины.

syms a b
S = log(a) + log(b);
combine(S,'log')
ans =
log(a) + log(b)

Примените правило, установив такие допущения, что a и b удовлетворить условиям правила.

assume(a > 0)
assume(b > 0)
S = log(a) + log(b);
combine(S,'log')
ans =
log(a*b)

Для будущих расчетов очистите допущения, установленные на переменных a и b, воссоздав их используя syms.

syms a b

Кроме того, примените правило, проигнорировав аналитические ограничения с помощью 'IgnoreAnalyticConstraints'.

syms a b
S = log(a) + log(b);
combine(S,'log','IgnoreAnalyticConstraints',true)
ans =
 log(a*b)

Условия с вызовами функций синуса и косинуса

Перепишите продукты функций синуса и косинуса как сумму функций путем установки целевого аргумента в sincos.

syms a b
combine(sin(a)*cos(b) + sin(b)^2,'sincos')
ans =
sin(a + b)/2 - cos(2*b)/2 + sin(a - b)/2 + 1/2

Перепишите суммы функций синуса и косинуса путем установки целевого аргумента в sincos.

combine(cos(a) + sin(a),'sincos')
ans =
2^(1/2)*cos(a - pi/4)

Перепишите косинусоидную квадратную функцию путем установки целевого аргумента на sincos.

combine(cos(a)^2,'sincos')
ans =
cos(2*a)/2 + 1/2

combine не переписывает степени синусоидальных или косинусоидальных функций с отрицательными целочисленными экспонентами.

syms a b
combine(sin(b)^(-2)*cos(b)^(-2),'sincos')
ans =
1/(cos(b)^2*sin(b)^2)

Экспоненциальные условия

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

combine(exp(sym(3))*exp(sym(2)),'exp')
ans =
exp(5)
syms a
combine(exp(a)^3, 'exp')
ans =
exp(3*a)

Условия с интегралами

Объедините условия с интегралами путем определения целевого аргумента как int.

syms a f(x) g(x)
combine(int(f(x),x)+int(g(x),x),'int')
combine(a*int(f(x),x),'int')
ans =
int(f(x) + g(x), x)
ans =
int(a*f(x), x)

Объедините интегралы с теми же пределами.

syms a b h(z)
combine(int(f(x),x,a,b)+int(h(z),z,a,b),'int')
ans =
int(f(x) + h(x), x, a, b)

Условия с Обратным тангенсом вызовами функций

Объедините два вызова функции обратного тангенса путем определения целевого аргумента следующим atan.

syms a b
assume(-1 < a < 1)
assume(-1 < b < 1)
combine(atan(a) + atan(b),'atan')
ans =
-atan((a + b)/(a*b - 1))

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

assume(a > 0)
combine(atan(a) + atan(1/a),'atan')
ans =
pi/2

Для дальнейших расчетов очистите допущения:

syms a b

Условия с вызовами гамма-функции

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

syms x
combine(gamma(x)*gamma(1-x),'gamma')
ans =
 -pi/sin(pi*(x - 1))

combine упрощает частные гамма-функции к рациональным выражениям.

Несколько входных выражений в одном вызове

Вычислите несколько выражений в одном вызове функции с помощью символьной матрицы в качестве входа параметра.

S = [sqrt(sym(2))*sqrt(5), sqrt(2)*sqrt(sym(11))];
combine(S)
ans =
[ 10^(1/2), 22^(1/2)]

Входные параметры

свернуть все

Входное выражение, заданное как символьное выражение, функция или как вектор или матрица символьных выражений или функций.

combine рекурсивно работает над подэкспрессиями S.

Если S является символьной матрицей, combine применяется ко всем элементам матрицы.

Целевая функция, заданная как 'atan', 'exp', 'gamma', 'int', 'log', 'sincos', или 'sinhcosh'. Правила перезаписи применяются только к вызовам целевой функции.

Выходные аргументы

свернуть все

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

Алгоритмы

combine применяет следующие правила перезаписи к входу выражению S, в зависимости от значения целевого аргумента T.

  • Когда T = 'exp', combine применяет эти правила перезаписи, где это допустимо,

    eaeb=ea+b

    (ea)b=eab.

  • Когда T = 'log',

    log(a)+log(b)=log(ab).

    Если b < 1000,

    blog(a)=log(ab).

    Когда b >= 1000, combine не применяет это второе правило.

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

  • Когда T = 'int',

    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)+xg(c)dc.

  • Когда T = 'sincos',

    sin(x)sin(y)=cos(xy)2cos(x+y)2.

    combine применяет аналогичные правила для sin(x)cos(y) и cos(x)cos(y).

    Acos(x)+Bsin(x)=A1+B2A2cos(x+tan1(BA)).

  • Когда T = 'atan' и -1 < x < 1, -1 < y < 1,

    atan(x)+atan(y)=atan(x+y1xy).

  • Когда T = 'sinhcosh',

    sinh(x)sinh(y)=cosh(x+y)2cosh(xy)2.

    combine применяет аналогичные правила для sinh(x)cosh(y) и cosh(x)cosh(y).

    combine применяет предыдущие правила рекурсивно к степеням sinh и cosh с положительными интегральными экспонентами.

  • Когда T = 'gamma',

    aΓ(a)=Γ(a+1).

    и,

    Γ(a+1)Γ(a)=a.

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

    Γ(a)Γ(a)=πsin(πa).

Введенный в R2014a