Самостоятельная работа По Дисциплине: Программирования на тему: № Работа с численными классами. Класс complex
Download 432.11 Kb.
|
Работа с численными классами. Класс 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 complex(const complex explicit complex(const complex // Другие версии копирующих конструкторов отсутствуют ); template<> class complex 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling