Нормируйте выражение
Блокноты 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