rationalize

Преобразуйте выражение в рациональное выражение

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

rationalize(object, options)

Описание

rationalize(object) преобразовывает выражение object в эквивалентное рациональное выражение, заменяя нерациональные подвыражения недавно сгенерированными переменными.

По умолчанию рациональное выражение является выражением, которое содержит только суммы, продукты, степени с целочисленными экспонентами, целыми числами, рациональными числами и идентификаторами как подвыражения.

rationalize функция возвращает последовательность (rat, subsSet). Рационализированное выражение rat содержит новые переменные. Набор замен subsSet выражает новые переменные старыми единицами.

Если исходное выражение содержит подвыражения, rationalize функция может рационализировать или заменить подвыражения или сохранить их в их исходной форме. Используйте опции DescendInto, ReplaceType, и StopOn управлять действием rationalize берет для конкретных типов подвыражений.

Если FindRelations = ["exp", "_power", "sin"], rationalize функция обнаруживает максимальное количество алгебраических зависимостей.

Если вы вызываете rationalize с любой комбинацией следующих трех опций противоречия функция выбирает опцию с помощью следующих приоритетов: ReplaceType, StopOn, DescendInto. Например, если вы задаете тот же тип подвыражения с StopOn и DescendInto, rationalize функционируйте использует только StopOn опция для подвыражений заданного типа. Если вы комбинируете какую-либо из этих опций с ReplaceType опция, rationalize использование только ReplaceType опция.

Примеры

Пример 1

rationalize работает с одним арифметическими выражениями, списками и наборами выражений:

rationalize(2*sqrt(3) + 0.5*x^3)

rationalize([(x - sqrt(2))*(x^2 + sqrt(3)),
             (x - sqrt(2))*(x - sqrt(3))])

Пример 2

Используйте ApproximateFloats опция, чтобы заменить все числа с плавающей запятой на рациональные числа:

rationalize([0.4, 0.333, 0.74], ApproximateFloats)

Если вы используете оба ApproximateFloats и ReplaceTypes опции, ApproximateFloats не применяется к типам подвыражений, заданных в ReplaceTypes:

rationalize(0.4*x^2 + sin(0.33/x),
                ApproximateFloats,
                ReplaceTypes={DOM_FLOAT})

Вместо того, чтобы задать значение ReplaceTypes как последовательность типов, можно задать его как функцию. Функция должна возвратить TRUE или FALSE в результате. Например, рационализируйте то же выражение. На этот раз используйте функциональный F чтобы задать тип подвыражений, которые вы хотите заменить переменными:

F := X -> testtype(X, DOM_FLOAT):
rationalize(0.4*x^2 + sin(0.33/x),
                ApproximateFloats,
                ReplaceTypes = F)

Пример 3

По умолчанию, rationalize рационализирует суммы, продукты, основы целочисленных степеней, списков и наборов:

rationalize(ln(sin(x)^2 + cos(x)*exp(x)))

DescendInto опция позволяет вам задать типы подвыражений, которые вы хотите рационализировать. Каждый тип может быть доменным типом, строка, как возвращено функциональным type или Текстовый объект. Обратите внимание на то, что DescendInto перезаписывает типы по умолчанию с типами, которые вы задаете:

rationalize(ln(sin(x)^2 + cos(x)*exp(x)), DescendInto = {"ln"})

Если вы хотите добавить новые типы подвыражений к единицам по умолчанию, задайте значение DescendInto как процедура, которая задает все необходимые типы явным образом. Процедура должна возвратить TRUE или FALSE:

F := proc(X)
begin
  hastype(X, {"_plus", "_mult", DOM_SET, DOM_LIST, "ln"}) or
  (hastype(X, "_power") and hastype(op(X, 2), DOM_INT))
end:

rationalize(ln(sin(x)^2 + cos(x)*exp(x)), DescendInto = F)

Пример 4

Используйте MinimalPolynomials опция, чтобы найти минимальные полиномы иррациональных выражений:

rationalize(x^(7/6) + x^(3/2), MinimalPolynomials)

Пример 5

Используйте Prefix = s, где s строка, чтобы задать префикс для сгенерированных переменных (префиксом по умолчанию является X):

rationalize(x^(7/6) + x^(3/2), Prefix = "ABC")

Пример 6

Используйте ReplaceHardToEval опция, чтобы заменить пределы, суммы и интегралы со сгенерированными переменными. Выражения с пределами, суммами и интегралами имеют тенденцию быть наиболее в вычислительном отношении дороги:

rationalize(sum(exp(x)/(x^2 + 1), x) +
            limit(sin(cos(1/x))*cos(1/x), x),
                           ReplaceHardToEval)

Пример 7

По умолчанию, rationalize избегает рационализации целых чисел, рациональных чисел и идентификаторов:

rationalize(2*sqrt(3) + 0.5*x^3)

DescendInto опция позволяет вам избежать рационализации конкретных типов подвыражений. Каждый тип может быть задан как доменный тип, строка, как возвращено функциональным type, или Текстовый объект. Например, рационализируйте то же выражение, оставив подвыражение x^3 (типа "_power") неизменный:

rationalize(2*sqrt(3) + 0.5*x^3, StopOn = {"_power"})

Рационализируйте то же выражение включая все подвыражения. Сохраните числа с плавающей запятой, целые числа и идентификаторы (не заменяйте их на сгенерированные переменные):

rationalize(2*sqrt(3) + 0.5*x^3,
            StopOn = {DOM_FLOAT, DOM_INT, DOM_IDENT})

Обратите внимание на то, что StopOn перезаписывает типы по умолчанию с типами, которые вы задаете. Если вы хотите добавить новые типы подвыражений к единицам по умолчанию, задайте все типы явным образом:

rationalize(2*sqrt(3) + 0.5*x^3,
            StopOn = {DOM_INT, DOM_IDENT, DOM_RAT, DOM_FLOAT})

rationalize(2*sqrt(3) + 0.5*x^3,
            StopOn = {DOM_INT, DOM_IDENT,
                      DOM_RAT, DOM_FLOAT,
                               "_power"})

StopOn опция также может принять функцию как свое значение. Функция должна возвратить TRUE или FALSE. Например, используйте сгенерированные переменные, чтобы заменить только подвыражения, которые содержат sin. Сохраните все другие подвыражения в целости:

F := X -> not hastype(X, "sin"):
rationalize(sin(x^2) + x^3 + exp(x) + 1/x, StopOn = F)

Пример 8

Используйте FindRelations опция, чтобы обнаружить алгебраические зависимости между экспоненциалами:

rationalize(exp(x/2) + exp(x/3), FindRelations = ["exp"])

Обнаружьте алгебраические зависимости для различных степеней той же основы путем определения типа "_power":

rationalize(x^(3/2) + x^(7/4), FindRelations = ["_power"])

Обнаружьте алгебраические зависимости для тригонометрических функций путем определения типа "sin" или "cos":

rationalize(sin(x) + cos(x), FindRelations = ["sin"]);
rationalize(sin(x)^3 + cos(x)^3, FindRelations = ["cos"])

Пример 9

Для вложенных экспоненциалов используйте Recursive опция, чтобы получить список замен:

rationalize(exp(exp(x)), FindRelations = ["exp"], Recursive)

Опция также работает на тригонометрические функции:

rationalize(sin(sin(x)), FindRelations = ["sin"], Recursive)

Пример 10

ShowDependencies опция показывает все исходные переменные, от которых зависит каждая сгенерированная переменная:

rationalize(sin(x)^3, ShowDependencies)

Параметры

object

Любой объект MuPAD®

Опции

ApproximateFloats

Когда вы используете ApproximateFloats опция, rationalize функционируйте заменяет числа с плавающей запятой на рациональные числа. По умолчанию, ApproximateFloats= FALSE: rationalize функционируйте заменяет все числа с плавающей запятой на новые переменные. Если вы рационализируете выражение с помощью обоих ApproximateFloats и StopOn опции, StopOn не предотвращает рационализацию чисел с плавающей запятой в заданных подвыражениях. Если вы рационализируете выражение с помощью обоих ApproximateFloats и ReplaceTypes опции, ApproximateFloats не применяется к типам подвыражений, заданных в ReplaceTypes. Смотрите пример 2.

DescendInto

Когда вы используете DescendInto опция, rationalize функция рационализирует все подвыражения заданных типов. Можно задать значение этой опции как набор (даже если существует только один тип), или процедура, которая возвращает TRUE или FALSE. Каждый тип может быть

По умолчанию, rationalize функция рационализирует следующие типы подвыражений: суммы, продукты, основы целочисленных степеней, списков и наборов. Когда вы задаете другие типы подвыражений, rationalize использует их вместо типов по умолчанию. (DescendInto перезаписывает типы по умолчанию с типами, которые вы задаете.), Если вы хотите расширить набор типов подвыражений, сохраняющих типы по умолчанию, задайте значение DescendInto как процедура, которая задает все значение по умолчанию и дополнительные типы явным образом. Смотрите Пример 3.

FindRelations

Когда вы используете FindRelations опция, rationalize функция обнаруживает алгебраические зависимости для подвыражений заданных типов. Эта опция принимает типы подвыражений в форме списка. Следующие типы доступны: "sin"потому чтоexp, и "_power". По умолчанию, rationalize не ищет зависимости для иррациональных подвыражений: FindRelations= [].

MinimalPolynomials

Когда вы используете MinimalPolynomials опция, rationalize функция возвращает минимальные полиномы иррациональных выражений. Функция возвращает рационализированное выражение, набор уравнений замены и минимальные полиномы. По умолчанию, MinimalPolynomials= FALSE. Смотрите пример 4.

Prefix

Используйте Prefix опция, чтобы задать префикс для новых переменных, сгенерированных rationalize функция. Значение этой опции должно быть строкой. По умолчанию, Prefix= "X". Смотрите пример 5.

Recursive

Когда вы используете Recursive опция, rationalize функция рекурсивно рационализирует вложенные подвыражения и возвращает список уравнений замены. Каждая сгенерированная переменная в возвращенном списке может зависеть от других переменных в списке. По умолчанию, Recursive= FALSE. Смотрите пример 9.

ReplaceHardToEval

Когда вы используете ReplaceHardToEval опция, rationalize функционируйте заменяет все пределы, суммы и интегралы сгенерированными переменными. Обычно эта опция позволяет вам избегать большинства дорогих рационализаций сумм, пределов и интегралов. По умолчанию, ReplaceHardToEval= FALSE. Смотрите пример 6.

ReplaceTypes

Когда вы используете ReplaceTypes опция, rationalize функционируйте заменяет все подвыражения заданных типов со сгенерированными переменными. Можно задать значение этой опции как набор (даже если существует только один тип), или процедура, которая возвращает TRUE или FALSE. Каждый тип может быть

Эта опция позволяет вам задавать и избегать большинства дорогих рационализаций для своего конкретного выражения. Если вы используете эту опцию в сочетании с ReplaceHardToEval, rationalize функционируйте использует сгенерированные переменные, чтобы заменить все пределы, суммы, интегралы и типы, которые вы задаете. Если ReplaceTypes задает тот же тип подвыражения как DescendInto, ReplaceTypes опция преобладает. По умолчанию, ReplaceTypes= {}.

В качестве альтернативы задайте значение этой опции как функция, которая возвращает TRUE или FALSE. Смотрите пример 2.

ShowDependencies

Когда вы используете ShowDependencies опция, rationalize функционируйте заменяет любое иррациональное подвыражение, содержащее идентификаторы vars с выражением формы newvar(vars), показ зависимостей сгенерированных переменных на исходных переменных. По умолчанию, ShowDependencies= FALSE.

StopOn

Когда вы используете StopOn опция, rationalize функция не рационализирует заданные типы подвыражений. Можно задать значение этой опции как набор (даже если существует только один тип), или функция, которая возвращает TRUE или FALSE. Каждый тип может быть

По умолчанию, rationalize функция не рационализирует или заменяет целые числа, рациональные числа и идентификаторы. Когда вы задаете другие типы подвыражений, rationalize использует их вместо типов по умолчанию. (StopOn перезаписывает типы по умолчанию с типами, которые вы задаете.), Если вы хотите расширить набор типов подвыражений, сохраняющих типы по умолчанию, задайте StopOn = {DOM_INT, DOM_IDENT, DOM_RAT, extra types}, где extra types дополнительные типы подвыражений, которые вы не хотите рационализировать. Смотрите Пример 7.

Если StopOn задает тот же тип подвыражения как DescendInto, StopOn опция преобладает.

StopOnConstants

Когда вы используете StopOnConstants опция, rationalize функция не рационализирует объект типа Type::Constant: числа, строки, булевы константы, NIL, FAIL, PI, ЭЙЛЕР и CATALAN в наборе Type::ConstantIdents. По умолчанию, StopOnConstants= FALSE.

Возвращаемые значения

Последовательность, состоящая из рационализированного объекта и набор уравнений замены. Если вы используете Recursive опция, rationalize функция возвращает список уравнений замены вместо набора. Если вы используете MinimalPolynomials опция, возвращенное значение имеет третий аргумент: минимальные полиномы.

Смотрите также

Функции MuPAD