simplify

Алгебраическое упрощение

Описание

пример

S = simplify(expr) выполняет алгебраическое упрощение expr. Если expr символьный вектор или матрица, эта функция упрощает каждый элемент expr.

пример

S = simplify(expr,Name,Value) выполняет алгебраическое упрощение expr использование дополнительных опций задано одним или несколькими Name,Value парные аргументы.

Примеры

Упростите выражения

Упростите эти символьные выражения:

syms x a b c
S = simplify(sin(x)^2 + cos(x)^2)
S = simplify(exp(c*log(sqrt(a+b))))
S =
1

S =
(a + b)^(c/2)

Упростите элементы матрицы

Вызовите simplify для этой символьной матрицы. Когда входной параметр является вектором или матрицей, simplify попытки найти более простую форму каждого элемента вектора или матрицы.

syms x
M = [(x^2 + 5*x + 6)/(x + 2), sin(x)*sin(2*x) + cos(x)*cos(2*x);
		(exp(-x*i)*i)/2 - (exp(x*i)*i)/2, sqrt(16)];
S = simplify(M)
S =
[  x + 3, cos(x)]
[ sin(x),      4]

Получите более простые результаты для логарифмов и полномочий

Упростите символьное выражение, которые содержат логарифмы и степени. По умолчанию, simplify не комбинирует степени и логарифмы, потому что объединение их не допустимо для типовых комплексных чисел.

syms x
expr = (log(x^2 + 2*x + 1) - log(x + 1))*sqrt(x^2);
S = simplify(expr)
S =
-(log(x + 1) - log((x + 1)^2))*(x^2)^(1/2)

Применять правила упрощения, которые позволяют simplify функционируйте, чтобы объединить степени и логарифмы, установить 'IgnoreAnalyticConstraints' к true:

S = simplify(expr, 'IgnoreAnalyticConstraints', true)
S =
x*log(x + 1)

Получите более простые результаты Используя большее количество шагов упрощения

Упростите это выражение:

syms x
expr = ((exp(-x*i)*i) - (exp(x*i)*i))/(exp(-x*i) + exp(x*i));
S = simplify(expr)
S =
-(exp(x*2i)*1i - 1i)/(exp(x*2i) + 1)

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

S10 = simplify(expr,'Steps',10)
S30 = simplify(expr,'Steps',30)
S50 = simplify(expr,'Steps',50)
S10 =
2i/(exp(x*2i) + 1) - 1i
 
S30 =
((cos(x) - sin(x)*1i)*1i)/cos(x) - 1i
 
S50 =
tan(x)

Если вы не можете возвратить желаемый результат, попробуйте альтернативные функции упрощения. Смотрите Выбирают Функцию, чтобы Перестроить Выражение.

Получите эквивалентные результаты для символьного выражения

Получите эквивалентные результаты для символьного выражения путем устанавливания значения 'All' к true.

syms x
expr = cos(x)^2 - sin(x)^2;
S = simplify(expr,'All',true)
S =
            cos(2*x)
 cos(x)^2 - sin(x)^2

Увеличьте число шагов упрощения к 10. Найдите другие эквивалентные результаты для того же выражения.

S = simplify(expr,'Steps',10,'All',true)
S =
                   cos(2*x)
             1 - 2*sin(x)^2
             2*cos(x)^2 - 1
        cos(x)^2 - sin(x)^2
          cot(2*x)*sin(2*x)
 exp(-x*2i)/2 + exp(x*2i)/2

Разделите действительные и мнимые части

Попытайтесь разделить действительные и мнимые части выражения путем устанавливания значения 'Criterion' к 'preferReal'.

syms x
f = (exp(x + exp(-x*i)/2 - exp(x*i)/2)*i)/2 -...
    (exp(- x - exp(-x*i)/2 + exp(x*i)/2)*i)/2;
S = simplify(f, 'Criterion','preferReal', 'Steps', 100)
S =
sin(sin(x))*cosh(x) + cos(sin(x))*sinh(x)*1i

Если 'Criterion' не установлен в 'preferReal', затем simplify возвращает более короткий результат, но действительные и мнимые части не разделяются.

S = simplify(f,'Steps',100)
S =
sin(sin(x) + x*1i)

Когда вы устанавливаете 'Criterion' к 'preferReal', simplifier порицает формы выражения, где комплексные числа появляются в подвыражениях. Во вложенных подвыражениях глубже комплексное число появляется в выражении, наименьшее количество настройки, которую получает эта форма выражения.

Избегайте мнимых условий в экспонентах

Попытайтесь избежать мнимых условий в экспонентах установкой 'Criterion' к 'preferReal'.

Покажите это поведение путем упрощения комплексного символьного выражения с и без установки 'Criterion' к 'preferReal'. Когда 'Criterion' установлен в 'preferReal', затем simplify помещает мнимый термин вне экспоненты.

expr = sym(i)^(i+1);
withoutPreferReal = simplify(expr,'Steps',100)
withoutPreferReal =
(-1)^(1/2 + 1i/2)
withPreferReal = simplify(expr,'Criterion','preferReal','Steps',100)
withPreferReal =
exp(-pi/2)*1i

Упростите модули

Упростите выражения, содержащие символьные модули той же размерности при помощи simplify.

u = symunit;
expr = 300*u.cm + 40*u.inch + 2*u.m;
S = simplify(expr)
S =
(3008/5)*[cm]

simplify автоматически выбирает модуль, чтобы переписать в. Чтобы выбрать определенный модуль, используйте rewrite.

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

свернуть все

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

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: 'Seconds',60 ограничивает процесс упрощения 60 секундами.

Опция, чтобы возвратить эквивалентные результаты, заданные как разделенная запятой пара, состоящая из 'All' и любое из двух логических значений. Когда вы используете эту опцию, входной параметр expr должен быть скаляр.

falseИспользуйте опцию по умолчанию, чтобы возвратить только итоговый результат упрощения.
trueВозвратите вектор-столбец эквивалентных результатов для входного выражения. Можно использовать эту опцию наряду с 'Steps' опция, чтобы получить альтернативные выражения в процессе упрощения.

Критерий упрощения, заданный как разделенная запятой пара, состоящая из 'Criterion' и один из этих векторов символов.

'default'Используйте (внутренние) критерии упрощения по умолчанию.
'preferReal'Одобрите формы S содержа действительные значения по формам, содержащим комплексные числа. Если любая форма S содержит комплексные числа, simplifier порицает формы, где комплексные числа появляются в подвыражениях. В случае вложенных подвыражений глубже комплексное число появляется в выражении, наименьшее количество настройки, которую получает эта форма выражения.

Правила упрощения, заданные как разделенная запятой пара, состоящая из 'IgnoreAnalyticConstraints' и одно из этих значений.

falseИспользуйте строгие правила упрощения. simplify всегда возвращает результаты, которые аналитически эквивалентны начальному выражению.
trueПримените чисто алгебраические упрощения в выражении. simplify может возвратить более простые результаты для входных выражений, куда это возвратило бы более сложные результаты в противном случае. Установка IgnoreAnalyticConstraints к true может привести к результатам, которые не эквивалентны начальному выражению.

Ограничение по времени для процесса упрощения, заданного как разделенная запятой пара, состоящая из 'Seconds' и положительное значение, которое обозначает максимальное время в секундах.

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

simplify(expr,'Steps',n) эквивалентно simplify(expr,n), где n количество шагов упрощения.

Советы

  • Упрощение математического выражения не является ясно заданным предметом. Нет никакой универсальной идеи, относительно которой форма выражения является самой простой. Форма математического выражения, которое является самым простым для одной проблемы, может быть сложной или даже неподходящая для другой проблемы.

Алгоритмы

Когда вы используете IgnoreAnalyticConstraints, затем simplify следует этим правилам:

  • регистрируйте (a) + журнал (b) = журнал (a · b) для всех значений a и b. В частности, следующее равенство допустимо для всех значений a, b и c:

      ) c = a c · b c.

  • журнал (a b) = b · регистрируйте (a) для всех значений a и b. В частности, следующее равенство допустимо для всех значений a, b и c:

      (a b) c = a b · c.

  • Если f и g являются стандартными математическими функциями и f (g (x)) = x для всех маленьких положительных чисел, f (g (x)) = , x принят, чтобы быть допустимым для всех комплексных чисел x. В частности:

    • журнал (e x) = x

    • asin (sin (x)) = x, acos (cos (x)) = x, atan (tan (x)) = x

    • asinh (sinh (x)) = x, acosh (дубинка (x)) = x, atanh (tanh (x)) = x

    • Wk (x · e x) = x для всех индексов ветви k функции Ламберта В.

Представлено до R2006a