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.

Примеры

Пример 1

Мнимая часть 2 e1 + i:

Im(2*exp(1 + I))

Пример 2

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

Im(u + v*I)

Im(z + 2)

По умолчанию идентификаторы без значения приняты, чтобы представлять произвольные комплексные числа. Можно использовать assume, чтобы изменить это. Следующая команда говорит системе, что z представляет только мнимые числа:

assume(z, Type::Imaginary):
Im(z + 2*I)

unassume(z)

Пример 3

Если Im не может извлечь мнимую часть символьного выражения, попытайтесь использовать функциональный rectform. Это разделяет сложное выражение z в его действительную и мнимую часть и более мощно, чем Im:

Im(exp(I*sin(z)));
r := rectform(exp(I*sin(z)))

Затем используйте Im(r), чтобы извлечь мнимую часть r:

Im(r)

Пример 4

Символьные выражения типа, "Im" всегда имеет свойство Type::Real, даже если никакой идентификатор символьного выражения не имеет свойство:

is(Im(sin(2*x)), Type::Real)

Пример 5

Можно расширить функции 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) в возвращенном выражении.

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

Функции MuPAD