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