Re
Действительная часть арифметического выражения
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
Re(z
) Re(L
)
Re(z)
возвращает действительную часть z
.
Надлежащее использование Re
для постоянных арифметических выражений. Специально для чисел, типа DOM_INT
, DOM_RAT
, DOM_FLOAT
или DOM_COMPLEX
, действительная часть вычисляется непосредственно и очень эффективно.
Re
может обработать символьные выражения. Свойства идентификаторов учтены. Смотрите assume
. Идентификатор без любого свойства принят, чтобы быть комплексным. Смотрите Пример 2.
Если Re
не может извлечь целую действительную часть символьного выражения z
, то возвращенное выражение содержит символьный Re
и вызовы Im
. В таких случаях попытайтесь использовать функцию rectform
. Смотрите Пример 3. Обратите внимание на то, что использование rectform
является в вычислительном отношении дорогим.
Функция Re
автоматически сопоставлена со всеми записями контейнерных объектов, такими как массивы, списки, матрицы, полиномы, наборы и таблицы.
Эта функция чувствительна к свойствам набора идентификаторов через assume
.
Действительная часть 2 e1 + i:
Re(2*exp(1 + I))
Re
не может извлечь действительную часть символьных выражений, содержащих идентификаторы без значения. Однако в некоторых случаях это может все еще упростить входное выражение, как в следующем двум примерам:
Re(u + v*I)
Re(z + 2*I)
По умолчанию идентификаторы без значения приняты, чтобы представлять произвольные комплексные числа. Можно использовать assume
, чтобы изменить это. Следующая команда говорит системе, что z
представляет только вещественные числа:
assume(z, Type::Real): Re(z + 2)
unassume(z)
Если Re
не может извлечь действительную часть символьного выражения, попытайтесь использовать функциональный rectform
. Это разделяет сложное выражение z в его действительную и мнимую часть и более мощно, чем Re
:
Re(exp(I*sin(z))); r := rectform(exp(I*sin(z)))
Затем используйте Re(r)
, чтобы извлечь действительную часть r
:
Re(r)
Символьные выражения типа, "Re"
всегда имеет свойство Type::Real
, даже если никакой идентификатор символьного выражения не имеет свойство:
is(Re(sin(2*x)), Type::Real)
Можно расширить функции Re
и Im
к их собственным специальным математическим функциям. Смотрите раздел “Algorithms”. Для этого встройте свою математическую функцию в функцию environmentf
и реализуйте поведение функций Re
и Im
для этой функции как слоты "Re"
и "Im"
функциональной среды.
Если подвыражение формы, f(u,..)
происходит в z
, то Re
и Im
издают приказ f::Re(u,..)
и f::Im(u,..)
, соответственно, к стандартной программе слота, чтобы определить действительное и мнимую часть f(u,..)
, соответственно.
Например, расширьте функциональный Re
для синусоидальной функции. Конечно, функциональная среда sin
уже имеет слот "Re"
. Вызовите свою функциональную среду Sin
по порядку, чтобы не перезаписать существующую системную функцию sin
:
Sin := funcenv(Sin): Sin::Re := proc(u) // compute Re(Sin(u)) local r, s; begin r := Re(u); if r = u then return(Sin(u)) elif not has(r, {hold(Im), hold(Re)}) then s := Im(u); if not has(s, {hold(Im), hold(Re)}) then return(Sin(r)*cosh(s)) end_if end_if; return(FAIL) end:
Re(Sin(2)), Im(Sin(3*I)), Re(Sin(2 + 3*I))
FAIL
возвращаемого значения говорит функциональному Re
, что Sin::Re
не мог определить действительную часть входного выражения. Результатом является затем символьный вызов Re
:
Re(2 + Sin(f(z)))
арифметическое выражение или контейнерный объект, содержащий такие выражения
z
Если подвыражение формы, f(u,...)
происходит в z
и f
, является функциональной средой, то Re
пытается вызвать слот "Re"
f
, чтобы определить действительную часть f(u,...)
. Таким образом можно расширить функциональность Re
к собственным специальным математическим функциям.
Слот "Re"
вызван аргументами u
... f
. Если стандартная программа слота, f::Re
не может определить действительную часть f(u,...)
, то это должно возвратить FAIL
.
Если f
не имеет слота "Re"
, или если стандартная программа слота, f::Re
возвращает FAIL
, то f(u,...)
заменяется символьным вызовом Re(f(u,...))
в возвращенном выражении. Смотрите Пример 5.
Точно так же, если элемент, d
библиотеки domainT
происходит как подвыражение z
, то Re
пытается вызвать слот "Re"
той области с d
в качестве аргумента, чтобы вычислить действительную часть d
.
Если стандартная программа слота, T::Re
не может определить действительную часть d
, то это возвращает FAIL
.
Если T
не имеет слота "Re"
, или если стандартная программа слота, T::Re
возвращает FAIL
, то d
заменяется символьным вызовом Re(d)
в возвращенном выражении.