упрощение

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

Синтаксис

S = simplify(expr)
S = simplify(expr,Name,Value)

Описание

пример

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 должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 (загар (x)) = x

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

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

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