exponenta event banner

упростить

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

Описание

пример

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 = 1sym(1)
S = simplify(exp(c*log(sqrt(a+b))))
S = a+bc/2(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*1i)*1i)/2 - (exp(x*1i)*1i)/2, sqrt(16)];
S = simplify(M)
S = 

(x+3cos(x)sin(x)4)[x + 3, cos(x); sin(x), sym(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+12)x2-(log(x + 1) - log((x + 1)^2))*sqrt(x^2)

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

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

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

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

-e2xii-ie2xi+1-(exp((2*x*sym(1i)))*sym(1i) - sym(1i))/(exp(2*x*sym(1i)) + 1)

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

S10 = simplify(expr,'Steps',10)
S10 = 

2ie2xi+1-i2i/(exp(2*x*sym(1i)) + 1) - sym(1i)

S30 = simplify(expr,'Steps',30)
S30 = 

cos(x)-sin(x)iicos(x)-i((cos(x) - sin(x)*sym(1i))*sym(1i))/cos(x) - sym(1i)

S50 = simplify(expr,'Steps',50)
S50 = tan(x)tan(x)

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

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

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

(cos(2x)cos(x)2-sin(x)2)[cos(2*x); cos(x)^2 - sin(x)^2]

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

S = simplify(expr,'Steps',10,'All',true)
S = 

(cos(2x)1-2sin(x)22cos(x)2-1cos(x)2-sin(x)2cot(2x)sin(2x)e-2xi2+e2xi2)[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((-2*x*sym(1i)))/2 + exp(2*x*sym(1i))/2]

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

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

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

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

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

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

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

expr = sym(1i)^(1i+1);
withoutPreferReal = simplify(expr,'Steps',100)
withoutPreferReal = 

-112+12i(-sym(1))^(sym(1/2) + sym(1/2)*sym(1i))

withPreferReal = simplify(expr,'Criterion','preferReal','Steps',100)
withPreferReal = 

e-π2iexp((-sym(pi)/2))*sym(1i)

Упрощение выражений, содержащих символьные единицы одного размера с помощью simplify.

u = symunit;
expr = 300*u.cm + 40*u.inch + 2*u.m;
S = simplify(expr)
S = 

30085cm"centimeter - a physical unit of length."sym(3008/5)*symunit('cm')

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

В большинстве случаев для упрощения символьного выражения с помощью символьных математических Toolbox™ необходимо использовать только simplify функция. Но для некоторых больших и сложных выражений можно получить более быстрый и простой результат, используя expand функция перед применением simplify.

Например, этот рабочий процесс дает лучшие результаты при поиске определителя матрицы, которая представляет метрику Керра [1]. Объявите параметры метрики Керра.

syms theta real;
syms r rs a real positive;

Определите матрицу, представляющую метрику Керра.

rho = sqrt(r^2 + a^2*cos(theta)^2);
delta  = r^2 + a^2 - r*rs;
g(1,1) = - (1 - r*rs/rho^2);
g(1,4) = - (rs*a*r*sin(theta)^2)/rho^2;
g(4,1) = - (rs*a*r*sin(theta)^2)/rho^2;
g(2,2) = rho^2/delta;
g(3,3) = rho^2;
g(4,4) = (r^2 + a^2 + rs*a^2*r*sin(theta)^2/rho^2)*sin(theta)^2;

Оцените определитель метрики Керра.

det_g = det(g)
det_g = 

-sin(θ)2a6cos(θ)4+a4r2cos(θ)4+2a4r2cos(θ)2+rsa4rcos(θ)2sin(θ)2-rsa4rcos(θ)2+2a2r4cos(θ)2+a2r4-rsa2r3cos(θ)2+rsa2r3sin(θ)2-rsa2r3+r6-rsr5a2+r2-rsr-(sin(theta)^sym(2)*(a^6*cos(theta)^sym(4) + a^4*r^2*cos(theta)^sym(4) + 2*a^4*r^2*cos(theta)^sym(2) + rs*a^4*r*cos(theta)^sym(2)*sin(theta)^sym(2) - rs*a^4*r*cos(theta)^sym(2) + 2*a^2*r^4*cos(theta)^sym(2) + a^2*r^4 - rs*a^2*r^3*cos(theta)^sym(2) + rs*a^2*r^3*sin(theta)^sym(2) - rs*a^2*r^3 + r^6 - rs*r^5))/(a^2 + r^2 - rs*r)

Упрощение детерминанта с помощью simplify функция.

D = simplify(det_g)
D = -sin(θ)2a2cos(θ)2+r2-a2sin(θ)2+a2+r2-sin(theta)^sym(2)*(a^2*cos(theta)^sym(2) + r^2)*(- a^2*sin(theta)^sym(2) + a^2 + r^2)

Вместо этого выровняйте выражение с помощью expand и затем применить simplify функция. С этим дополнительным шагом результат проще.

D = simplify(expand(det_g))
D = -sin(θ)2-a2sin(θ)2+a2+r22-sin(theta)^sym(2)*(- a^2*sin(theta)^sym(2) + a^2 + r^2)^2

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

Совет

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

Алгоритмы

При использовании IgnoreAnalyticConstraints, то simplify следует следующим правилам:

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

      (a· b) c = ac· bc.

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

      (ab)  c = ab· c.

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

    • log (ex ) = x

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

    • asinh (sinh (x )) = x, acosh (cosh (x )) = x, atanh (tanh  (x)) = x

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

Ссылки

[1] Зи, А. Эйнштейн Гравитация в двух словах. Принстон: Princeton University Press, 2013.

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