Spec-Zone.ru › Nim

std/complex

SourceEdit

Этот модуль реализует комплексные числа и базовые математические операции над ними.

Комплексные числа в настоящее время являются обобщенными для 64-битных или 32-битных чисел с плавающей точкой.

Пример:

import std/complex
from std/math import almostEqual, sqrt

let
  z1 = complex(1.0, 2.0)
  z2 = complex(3.0, -4.0)

assert almostEqual(z1 + z2, complex(4.0, -2.0))
assert almostEqual(z1 - z2, complex(-2.0, 6.0))
assert almostEqual(z1 * z2, complex(11.0, 2.0))
assert almostEqual(z1 / z2, complex(-0.2, 0.4))

assert almostEqual(abs(z1), sqrt(5.0))
assert almostEqual(conjugate(z1), complex(1.0, -2.0))

let (r, phi) = z1.polar
assert almostEqual(rect(r, phi), z1)

Импорты

math, strformat

Типы

Complex[T] = object
  re*, im*: T
Комплексное число, состоящее из вещественной и мнимой части. Source Edit
Complex32 = Complex[float32]
Псевдоним для комплексного числа, использующего 32-битные числа с плавающей точкой. Source Edit
Complex64 = Complex[float64]
Псевдоним для комплексного числа, использующего 64-битные числа с плавающей точкой. Source Edit

Проц

func `$`(z: Complex): string
Возвращает строковое представление z в формате "(re, im)".

Пример:

doAssert $complex(1.0, 2.0) == "(1.0, 2.0)"
Исходный код Редактировать
func `*`[T](x, y: Complex[T]): Complex[T]
Перемножает два комплексных числа. Исходный код Редактировать
func `*`[T](x: Complex[T]; y: T): Complex[T]
Перемножает комплексное число и действительное число. Исходный код Редактировать
func `*`[T](x: T; y: Complex[T]): Complex[T]
Перемножает действительное число и комплексное число. Исходный код Редактировать
func `*=`[T](x: var Complex[T]; y: Complex[T])
Перемножает x на y. Исходный код Редактировать
func `+`[T](x, y: Complex[T]): Complex[T]
Складывает два комплексных числа. Исходный код Редактировать
func `+`[T](x: Complex[T]; y: T): Complex[T]
Складывает комплексное число и действительное число. Исходный код Редактировать
func `+`[T](x: T; y: Complex[T]): Complex[T]
Складывает действительное число и комплексное число. Исходный код Редактировать
func `+=`[T](x: var Complex[T]; y: Complex[T])
Складывает y к x. Исходный код Редактировать
func `-`[T](x, y: Complex[T]): Complex[T]
Вычитает два комплексных числа. Исходный код Редактировать
func `-`[T](x: Complex[T]; y: T): Complex[T]
Вычитает действительное число из комплексного числа. Исходный код Редактировать
func `-`[T](x: T; y: Complex[T]): Complex[T]
Вычитает комплексное число из действительного числа. Исходный код Редактировать
func `-`[T](z: Complex[T]): Complex[T]
Унарный минус для комплексных чисел. Исходный код Редактировать
func `-=`[T](x: var Complex[T]; y: Complex[T])
Вычитает y из x. Исходный код Редактировать
func `/`[T](x, y: Complex[T]): Complex[T]
Делит два комплексных числа. Исходный код Редактировать
func `/`[T](x: Complex[T]; y: T): Complex[T]
Делит комплексное число на действительное число. Исходный код Редактировать
func `/`[T](x: T; y: Complex[T]): Complex[T]
Делит действительное число на комплексное число. Исходный код Редактировать
func `/=`[T](x: var Complex[T]; y: Complex[T])
Делит x на y на месте. Исходный код Редактировать
func `==`[T](x, y: Complex[T]): bool
Сравнивает два комплексных числа на равенство. Исходный код Редактировать
func abs[T](z: Complex[T]): T
Возвращает абсолютное значение z, т. е. расстояние от (0, 0) до z. Исходный код Редактировать
func abs2[T](z: Complex[T]): T
Возвращает квадрат абсолютного значения z, т. е. квадрат расстояния от (0, 0) до z. Это более эффективно, чем abs(z) ^ 2. Исходный код Редактировать
func almostEqual[T: SomeFloat](x, y: Complex[T]; unitsInLastPlace: Natural = 4): bool

Проверяет, являются ли два комплексных значения почти равными, используя машинный эпсилон.

Два комплексных значения считаются почти равными, если их вещественные и мнимые компоненты почти равны.

unitsInLastPlace — максимальное количество единиц в последнем разряде допустимой разницы при сравнении двух чисел. Чем больше значение, тем больше допускается погрешность. Значение 0 означает, что два числа должны быть точно одинаковыми, чтобы считаться равными.

Машинный эпсилон должен быть масштабирован до величины используемых значений и умножен на требуемую точность в ULP, если разница не является субнормальной.

Исходный код Редактировать
func arccos[T](z: Complex[T]): Complex[T]
Возвращает обратный косинус z. Исходный код Редактировать
func arccosh[T](z: Complex[T]): Complex[T]
Возвращает обратный гиперболический косинус z. Исходный код Редактировать
func arccot[T](z: Complex[T]): Complex[T]
Возвращает обратную котангенс z. Исходный код Редактировать
func arccoth[T](z: Complex[T]): Complex[T]
Возвращает обратную гиперболическую котангенс z. Исходный код Редактировать
func arccsc[T](z: Complex[T]): Complex[T]
Возвращает обратную косеканс z. Исходный код Редактировать
func arccsch[T](z: Complex[T]): Complex[T]
Возвращает обратную гиперболическую косеканс z. Исходный код Редактировать
func arcsec[T](z: Complex[T]): Complex[T]
Возвращает обратную секанс z. Исходный код Редактировать
func arcsech[T](z: Complex[T]): Complex[T]
Возвращает обратный гиперболический секанс z. Source Edit
func arcsin[T](z: Complex[T]): Complex[T]
Возвращает обратный синус z. Source Edit
func arcsinh[T](z: Complex[T]): Complex[T]
Возвращает обратный гиперболический синус z. Source Edit
func arctan[T](z: Complex[T]): Complex[T]
Возвращает обратный тангенс z. Source Edit
func arctanh[T](z: Complex[T]): Complex[T]
Возвращает обратный гиперболический тангенс z. Source Edit
func complex[T: SomeFloat](re: T; im: T = 0.0): Complex[T]
Возвращает Complex[T] с действительной частью re и мнимой частью im. Source Edit
func complex32(re: float32; im: float32 = 0.0): Complex32 {....raises: [],
    tags: [], forbids: [].}
Возвращает Complex32 с действительной частью re и мнимой частью im. Source Edit
func complex64(re: float64; im: float64 = 0.0): Complex64 {....raises: [],
    tags: [], forbids: [].}
Возвращает Complex64 с действительной частью re и мнимой частью im. Source Edit
func conjugate[T](z: Complex[T]): Complex[T]
Возвращает комплексно сопряженное число z (complex(z.re, -z.im)). Source Edit
func cos[T](z: Complex[T]): Complex[T]
Возвращает косинус z. Source Edit
func cosh[T](z: Complex[T]): Complex[T]
Возвращает гиперболический косинус z. Source Edit
func cot[T](z: Complex[T]): Complex[T]
Возвращает котангенс z. Source Edit
func coth[T](z: Complex[T]): Complex[T]
Возвращает гиперболический котангенс z. Source Edit
func csc[T](z: Complex[T]): Complex[T]
Возвращает косеканс z. Source Edit
func csch[T](z: Complex[T]): Complex[T]
Возвращает гиперболический косеканс z. Source Edit
func exp[T](z: Complex[T]): Complex[T]
Вычисляет экспоненциальную функцию (e^z). Source Edit
proc formatValue(result: var string; value: Complex; specifier: string)
Стандартная реализация форматирования для Complex. Не имеет особого смысла вызывать её напрямую, но её существование требуется макросом &. Для комплексных чисел добавляется специальный спецификатор 'j', который форматирует значение как (A+Bj), как в математике. Source Edit
func inv[T](z: Complex[T]): Complex[T]
Возвращает мультипликативный обратный элемент z (1/z). Source Edit
func ln[T](z: Complex[T]): Complex[T]
Возвращает (главное значение) натурального логарифма z. Source Edit
func log2[T](z: Complex[T]): Complex[T]

Возвращает логарифм по основанию 2 от z.

См. также:

  • ln func
Source Edit
func log10[T](z: Complex[T]): Complex[T]

Возвращает логарифм по основанию 10 от z.

См. также:

  • ln func
Source Edit
func phase[T](z: Complex[T]): T
Возвращает фазу (или аргумент) z, то есть угол в полярном представлении.

result = arctan2(z.im, z.re)

Source Edit
func polar[T](z: Complex[T]): tuple[r, phi: T]
Возвращает z в полярных координатах.

result.r = abs(z)
result.phi = phase(z)

См. также:

  • rect func для обратной операции
Source Edit
func pow[T](x, y: Complex[T]): Complex[T]
x в степени y. Source Edit
func pow[T](x: Complex[T]; y: T): Complex[T]
Комплексное число x в степени действительного числа y. Source Edit
func rect[T](r, phi: T): Complex[T]
Возвращает комплексное число с полярными координатами r и phi.

result.re = r * cos(phi)
result.im = r * sin(phi)

См. также:

  • polar func для обратной операции
Source Edit
func sec[T](z: Complex[T]): Complex[T]
Возвращает секанс z. Source Edit
func sech[T](z: Complex[T]): Complex[T]
Возвращает гиперболический секанс z. Исходный код Изменить
func sgn[T](z: Complex[T]): Complex[T]
Возвращает фазу z в виде комплексного числа единичной длины или 0, если z равно 0. Исходный код Изменить
func sin[T](z: Complex[T]): Complex[T]
Возвращает синус z. Исходный код Изменить
func sinh[T](z: Complex[T]): Complex[T]
Возвращает гиперболический синус z. Исходный код Изменить
func sqrt[T](z: Complex[T]): Complex[T]
Вычисляет (главное) квадратный корень из комплексного числа z. Исходный код Изменить
func tan[T](z: Complex[T]): Complex[T]
Возвращает тангенс z. Исходный код Изменить
func tanh[T](z: Complex[T]): Complex[T]
Возвращает гиперболический тангенс z. Исходный код Изменить

Шаблоны

template im(arg: float32): Complex32
Возвращает arg как мнимое число (complex32(0, arg)). Исходный код Изменить
template im(arg: float64): Complex64
Возвращает arg как мнимое число (complex64(0, arg)). Исходный код Изменить
template im(arg: typedesc[float32]): Complex32
Возвращает мнимую единицу (complex32(0, 1)). Исходный код Изменить
template im(arg: typedesc[float64]): Complex64
Возвращает мнимую единицу (complex64(0, 1)). Исходный код Изменить

© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/complex.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API