Нормируйте выражение
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
normal(f
,options
) normal(object
)
normal(f)
возвращает нормальную форму рационального выражения f
. MuPAD® расценивает выражение, как нормировано, когда это - часть, где и числитель и знаменатель являются полиномами, наибольший общий делитель которых равняется 1.
normal(object)
заменяет операнды object
с их нормированной формой.
normal
и simplifyFraction
эквивалентны.
Если аргумент f
содержит иррациональные подвыражения, такие как sin(x)
, x^(-1/3)
и т.д., то они заменяются вспомогательными переменными перед нормализацией. После нормализации эти переменные заменяются нормализацией исходных подвыражений. Алгебраические зависимости подвыражений не учтены. Операнды нерациональных подвыражений нормированы рекурсивно.
Если аргумент f
содержит числа с плавающей запятой, то они заменяются рациональными аппроксимирующими функциями (см. numeric::rationalize
). В конце float
применяется к результату.
С опцией Expand
нормальная форма уникальна для рациональных выражений: это - частное расширенных полиномов, наибольший общий делитель которых равняется 1. Если f
и g
являются рациональными выражениями, следующие операторы эквивалентны:
f
и g
математически эквивалентны.
normal(f, Expand) = normal(g, Expand)
normal(f - g, Expand) = 0
Нормальная форма сгенерировала без опции Expand
(который эквивалентен Expand = FALSE
), частное продуктов степеней расширенных полиномов, где все факторы числителя и знаменателя являются взаимно-простыми. MuPAD расценивает разложенные на множители выражения, такие как x (x + 1), и эквивалентные расширенные выражения, такие как x 2 + x, как нормировано. Поэтому, если вы не используете Expand
, нет никакой уникальной нормальной формы рационального выражения.
Если f
и g
являются рациональными выражениями, эти операторы эквивалентны:
f
и g
математически эквивалентны.
normal(f - g) = 0
Для специальных объектов normal
автоматически сопоставлен со своими операндами. В частности, если object
является полиномом доменного типа DOM_POLY
, то его коэффициенты нормированы. Далее, если object
является набором, списком, таблицей или массивом, соответственно, то normal
применяется ко всем записям. Далее, левые и правые стороны уравнений (вводят "_equal"
), неравенства (вводят "_unequal"
) и отношения (вводят "_less"
или "_leequal"
) нормированы. Далее, операнды областей значений (вводят "_range"
) нормированы автоматически.
Вычислите нормальную форму некоторых рациональных выражений:
normal(x^2 - (x + 1)*(x - 1))
normal((x^2 - 1)/(x + 1))
normal(1/(x + 1) + 1/(y - 1))
Следующее выражение должно рассматриваться как рациональное выражение в “indeterminates” y
и sin(x)
:
normal(1/sin(x)^2 + y/sin(x))
Нормируйте записи этого списка:
[(x^2 - 1)/(x + 1), x^2 - (x + 1)*(x - 1)]
normal(%)
Теперь, нормируйте коэффициенты полиномов:
poly((x^2-1)/(x+1)*Y^2 + (x^2-(x+1)*(x-1))*Y - 1, [Y])
normal(%)
Если вы используете опцию Expand
, normal
возвращает часть с расширенным числителем и знаменателем:
normal(x/(x^6 - 1) + x^2/(x^4 - 1), Expand)
Без Expand
часть, возвращенная normal
, может содержать учтенные выражения:
normal(x/(x^6 - 1) + x^2/(x^4 - 1))
Если вы используете опцию List
, normal
возвращает список, состоящий из числителя и знаменатель входа:
normal((x^2-1)/(x^2+2*x+1), List)
Обратите внимание на то, что normal(f, List)
не является тем же самым как [numer(f), denom(f)]
:
[numer, denom]((x^2-1)/(x^2+2*x+1))
Чтобы пропустить вычисление общих делителей числителя и знаменателя выражения, используйте опцию NoGcd
:
y := (x^4 - 1)/(x + 1) + 1: normal(y); normal(y, NoGcd)
Чтобы задать общие делители, которые вы хотите уравновесить, используйте опцию ToCancel
:
y := (x^4 - 1)/(x^2 - 1): normal(y, ToCancel = {x - 1})
По умолчанию normal
вызывает функцию rationalize
в попытке рационализировать входное выражение. Вы можете ускорить вычисления при помощи Rationalize = None
в сочетании с опцией Expand
. Эта комбинация опций позволяет вам пропустить занимающиеся расследованиями алгебраические зависимости и, поэтому, экономит некоторое время:
n := exp(u): a := (n^2 + n)/(n + 1) + 1: normal(a, Expand, Rationalize = None)
Без Rationalize = None
MuPAD анализирует алгебраические зависимости и возвращает этот результат:
normal(a, Expand)
Отключите рекурсивные вызовы normal
для подвыражений при помощи Recursive = FALSE
:
y := sqrt((x^2 + 2*x + 1)/(x + 1)): normal(y, Recursive = FALSE)
Решите это уравнение и подведите итог пятых степеней решений:
solutions := solve(x^3 + x^2 + 1, x, MaxDegree = 3): f := _plus((solutions[i]^7) $i = 1..3)
Нормализация результата возвращается:
normal(f)
Чтобы ограничить количество внутренне повторных вызовов normal
из-за анализа алгебраических зависимостей, используйте опцию Iterations
. Количество по умолчанию итераций равняется 5. Используйте опцию Iterations
, чтобы увеличить или сократить число итераций. Например, нормируйте результат, использующий всего одну итерацию:
normal(f, Iterations = 1)
После двух итераций испытывает недостаток результат:
normal(f, Iterations = 2)
После трех итераций вы получаете самый простой результат:
normal(f, Iterations = 3)
| |
|
Полином типа |
|
Возвратите числитель и знаменатель нормированного выражения в расширенной форме. См. “Детали” для получения дополнительной информации. По умолчанию, |
|
Возвратите список, состоящий из числителя и знаменатель |
|
Пропустите вычислительные общие делители числителя и знаменатель |
|
Опция, заданная как Уравновесьте только заданные общие делители |
|
Опция, заданная как Выполните только основную рационализацию иррационального входного выражения. Пропустите занимающиеся расследованиями алгебраические зависимости. Эта опция работает только в сочетании с опцией |
|
Рекурсивно нормируйте подвыражения иррационального выражения. По умолчанию, |
|
Опция, заданная как Задайте количество повторных вызовов |
Объект того же типа как входной объект или список двух арифметических выражений, если опция List
используется.
object