Самостоятельная работа По Дисциплине: Программирования на тему: № Работа с численными классами. Класс complex


Download 432.11 Kb.
bet2/10
Sana23.12.2022
Hajmi432.11 Kb.
#1046730
TuriСамостоятельная работа
1   2   3   4   5   6   7   8   9   10
Bog'liq
Работа с численными классами. Класс complex - C.Бойзаков

2.1 Строение класса complex

Здесь приведены подробные описания всех операций класса complex<>. Обозначение Т задает параметр шаблона класса complex<>, то есть тип вещественной и мнимой частей значения complex.


Определения типов
complex::value_type
Тип вещественной и мнимой частей.
Операции создания, копирования и присваивания
complex::complex ()
● Конструктор по умолчанию.
● Создает комплексное значение, в котором вещественная и мнимая части инициализируются вызовом конструкторов по умолчанию (0 для базовых типов данных). Это означает, что для базовых типов данных исходные значения вещественной и мнимой частей равны 0
сотрlex::complex (const Т& re)
● Создает комплексное значение, в котором вещественная часть равна re, а мнимая часть инициализируется вызовом конструктора по умолчанию (0 для базовых типов данных).

● Конструктор также определяет автоматическое преобразование типа Т в complex


complex::complex (const Т& re. const Т& im)


complex программа число комплексный
Создает комплексное значение, в котором вещественная и мнимая части равны соответственно re и im

complex polar (const Т& rho)


complex polar (const T& rho. const T& theta)
● Обе формы создают и возвращают комплексное число, инициализированное в полярных координатах.
● Параметр rho определяет амплитуду.
● Параметр theta определяет фазовый угол в радианах (по умолчанию 0).

complex conj (const complex& cmplx)


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

complex::complex (const complex& cmplx)


● Копирующий конструктор.
● Создает новое комплексное число как копию cmplx.
● Копирует вещественную и мнимую части.
● Функция определяется в обеих формах: шаблонной и обычной. Таким образом, конструктор обеспечивает автоматическое преобразование к типу элементов.
● В специализированных версиях для типов float, double и long double копирующие конструкторы ограничиваются так, чтобы небезопасные преобразования (double и long double в float, long double в double) выполнялись явно, а другие преобразования к типу элементов были запрещены:
Листинг1-преобразования
namespace std { template<> class complex
{
public;
explicit complex(const complex&);
explicit complex(const complex)&);
// Другие версии копирующих конструкторов отсутствуют
};
template<> class complex { public;
complex(const complex&);
explicit complex(const complex)&);
// Другие версии копирующих конструкторов отсутствуют
);
template<> class complex { public;
complex(const complex&);
complex(const complex)&);
// Другие версии копирующих конструкторов отсутствуют
};
}

complex& complex: :operator= (const complex& cmplx)


● Присваивает значение комплексного числа cmplx.
● Возвращает *this.
● Функция определяется в обеих формах: шаблонной и обычной. Тем самым обеспечивается автоматическое преобразование к типу элементов (это относится и к специализированным версиям из стандартной библиотеки С++).
complex& complex: :operator+= (const complex& cmplx)
complex& complex::operator-- (const complex& cmplx)
complex& complex::operator*= (const complex& cmplx)
complex& complex: :operator/= (const complex& cmplx)
● Сложение, вычитание, умножение и деление cmplx и *this с сохранением результата в *this.
● Операторы возвращают *this.
● Операции определяются в обеих формах: как шаблонные и обычные функции. Тем самым обеспечивается автоматическое преобразование к типу элементов (это относится и к специализированным версиям из стандартной библиотеки С++). Обратите внимание: операторы присваивания — единственные функции, позволяющие изменить значение существующего объекта complex.
Обращение к данным
Т complex:.real () const
Т real (const complex& cmplx)
T complex::imag () const
T imag (const complex& cmplx)
●Функции возвращают значение вещественной или мнимой части соответственно.
● Возвращаемое значение не является ссылкой. Это означает, что функции real() и imag() не могут использоваться для изменения вещественной или мнимой части числа. Чтобы изменить только вещественную или мнимую часть, необходимо присвоить объекту complex новое комплексное число.
Т abs (const complex& cmplx)
● Возвращает модуль (абсолютное значение) комплексного числа cmplx.
● По формуле вычисляется модуль комплексного числа. Т norm (const complex& cmplx)
● Возвращает квадрат модуля комплексного числа cmplx.
● Квадрат модуля комплексного числа вычисляется по формуле стрlx.real()2 + + cmplx.imag()2.
Т arg (const complex& cmplx)
● Возвращает фазовый угол представления cmplx в полярных координатах (φ).
● Эквивалент:
atan2(cmplx.imag() .cmplx.real()).
Операции ввода-вывода
ostream& operator« (ostream& strm, const complex& cmplx)
● Выводит значение cmplx в ноток данных strm в формате:
(вещественная_часть , мнимая_часть)
● Возвращает strm.
istream& operator» (istream& strm. complex& cmplx)
● Читает новое значение из потока данных strm в переменную cmplx.
● Допустимые форматы входных данных:
(вещественная_частъ , мнимая_часть)
(вещественная_часть)
вещественная __часть
● Возвращает strm.
Операторы
complex operator (const complex& cmplx)
Возвращает cmplx. complex operator (const complex& cmplx)
● Унарное изменение знака.
● Возвращает cmplx с обратными знаками вещественной и мнимой частей.
complex бинарна я_операция (const complex& cmplx1. const complex& cmplx2)
complex бинарная_операция (const complex& cmplx1. const T& value)
complex бинарная_операция (const T& value, const complex& cmplx2)
● Все формы возвращают комплексный результат выполнения заданной бинарной операции.
● Параметр бинарная_операция — один из следующих операторов:
operator-operator* operator/
● Если при вызове оператора передается скалярное значение типа элемента, оно интерпретируется как вещественная часть, а мнимая часть инициализируется значением по умолчанию для своего типа (0 для базовых типов данных).
bool сравнение (const complex& cmplx1, const complex& cmplx2)
bool сравнение (const complex& cmplx1. const T& value)
bool сравнение (const T& value, const complex& cmplx1)
● Возвращает результат сравнения двух комплексных чисел или комплексного
числа со скалярным значением.
● Параметр сравнение — один из следующих операторов:
operator == operator !=
● Если при вызове оператора передается скалярное значение типа элемента, оно интерпретируется как вещественная часть, а мнимая часть инициализируется значением по умолчанию для своего типа (0 для базовых типов данных).
● Обратите внимание: операторы <, <=, > и >= не поддерживаются.
Трансцендентные функции
complex pow (const complex& base, int exp)
complex pow (const complex& base, const T& exp)
complex pow (const complex& base, const complex& exp)
complex pow (const T& base, const complex& exp)
● Все формы возвращают результат комплексного возведения base в степень ехр, вычисляемый по формуле:
exp(exp*log(base))
● Разрывы направлены вдоль отрицательной вещественной полуоси.
Значение, возвращаемое для pow(0,0), определяется реализацией.
complex exp (const complex& cmplx)
Возвращает результат комплексного возведения числа е в степень cmplx.
complex sqrt (const complex& cmplx)
● Возвращает комплексный квадратный корень из cmplx, находящийся в правой полуплоскости.
● Если аргумент является отрицательным вещественным числом, то возвращаемое значение находится на положительной мнимой полуоси.
● Разрывы направлены вдоль отрицательной вещественной полуоси. complex log (const complex& cmplx)
● Возвращает комплексный натуральный логарифм cmplx.
● Если cmplx является отрицательным вещественным числом, то imag(log(cmplx))=PI.
● Разрывы направлены вдоль отрицательной вещественной полуоси, complex log10 (const complex& cmplx)
● Возвращает комплексный десятичный логарифм cmplx.
● Эквивалент:
log(cmplx)/log(10)
● Разрывы направлены вдоль отрицательной вещественной полуоси.
complex sin (const complex& cmplx)
complex cos (const complex& cmplx)
complex tan (const complex& cmplx)
complex sinh (const complex& cmplx)
complex cosh (const complex& cmplx)
complex tanh (const complex& cmplx)
● Функции возвращают результаты соответствующих комплексных тригонометрических операций с cmplx.
Класс complex объявляется в заголовочном файле :
#include
Определение класса complex в файле выглядит так:
Листинг 2-Определение класса complex
Namespace std
{
template
class complex;
}
Параметр шаблона T задает скалярный тип как вещественной, так и мнимой части комплексного числа.
В стандартную библиотеку С++ включены также три специализированные версии класса complex для типов float, double и long double:

Листинг 2-специализированные классы


namespace std {
template<> class complex;
template<> class complex;
template<> class complex;
}

Определения этих типов позволяют выполнять некоторые виды оптимизации и безопасное преобразование от одного комплексного типа к другому.





Download 432.11 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   10




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling