Читаем Программирование. Принципы и практика использования C++ Исправленное издание полностью

  Scalar imag { return im; } // мнимая часть

  // операторы : = += –= *= /=

};

Стандартная библиотека complex поддерживает типы скалярных величин float, double и long double. Кроме членов класса complex и стандартных математических функций (раздел 24.8), заголовок содержит множество полезных операций.

Примечание: в классе complex нет операций < и %.

Класс complex используется так же, как любой другой встроенный тип, например double. Рассмотрим пример.

typedef complex dcmplx; // иногда выражение complex

                                // является слишком громоздким

void f(dcmplx z, vector& vc)

{

  dcmplx z2 = pow(z,2);

  dcmplx z3 = z2*9.3+vc[3];

  dcmplx sum = accumulate(vc.begin, vc.end, dcmplx);

  // ...

}

Помните, что не все операции над числами типов int и double определены для класса complex. Рассмотрим пример.

if (z2

Обратите внимание на то, что представление (схема) комплексных чисел в стандартной библиотеке языка С++ сопоставима с соответствующими типами в языках C и Fortran.

<p id="AutBody_Root479"><strong>24.10. Ссылки</strong></p>

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

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

Архив MacTutor History of Mathematics, размещенный на веб-странице http://www-gap.dcs.st-and.ac.uk/~history.

• Отличная веб-страница для всех, кто любит математику или просто хочет ее применять.

• Отличная веб-страница для всех, кто хочет увидеть гуманитарный аспект математики; например, кто из крупных математиков выиграл Олимпийские игры?

• Знаменитые математики: биографии, достижения.

• Курьезы.

• Знаменитые кривые.

• Известные задачи.

• Математические темы.

• Алгебра.

• Анализ.

• Теория чисел.

• Геометрия и топология.

• Математическая физика.

• Математическая астрономия.

• История математики.

• Многое другое

Freeman, T. L., and Chris Phillips. Parallel Numerical Algorithms. Prentice Hall, 1992.

Gullberg, Jan. Mathematics — From the Birth of Numbers. W. W. Norton, 1996. ISBN 039304002X. Одна из наиболее интересных книг об основах и пользе математики, которую можно читать одновременно и с пользой (например, о матрицах), и с удовольствием.

Knuth, Donald E. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, Third Edition. Addison-Wesley, 1998. ISBN: 0202496842.

Stewart, G. W. Matrix Algorithms, Volume I: Basic Decompositions. SIAM, 1998. ISBN 0898714141.

Wood, Alistair. Introduction to Numerical Analysis. Addison-Wesley, 1999. ISBN 020194291X.

Задание

1. Выведите на экран размеры типов char, short, int, long, float, double, int* и double* (используйте оператор sizeof, а не заголовок ).

2. Используя оператор sizeof, выведите на экран размеры объектов Matrix a(10), Matrix b(10), Matrix c(10), Matrix d(10,10), Matrix e(10, 10,10).

3. Выведите на печать количество элементов в каждом из объектов, перечисленных в упр. 2.

4. Напишите программу, вводящую числа типа int из потока cin и результат применения функции sqrt к каждому из этих чисел int. Если функцию sqrt(x) нельзя применять к некоторым значениям x, выведите на экран сообщение “корень квадратный не существует” (т.е. проверяйте значения, возвращаемые функцией sqrt).

5. Считайте десять чисел с плавающей точкой из потока ввода и запишите их в объект типа Matrix. Класс Matrix не имеет функции push_back, поэтому будьте осторожны и предусмотрите реакцию на попытку ввести неверное количество чисел типа double. Выведите этот объект класса Matrix на экран.

6. Вычислите таблицу умножения [0,n]*[0,m] и представьте ее в виде двумерного объекта класса Matrix. Введите числа n и m из потока cin и аккуратно выведите на экран полученную таблицу (предполагается, что число m достаточно мало, чтобы результаты поместились в одной строке).

7. Введите из потока cin десять объектов класса complex (да, класс cin поддерживает оператор >> для типа complex) и поместите его в объект класса Matrix. Вычислите и выведите на экран сумму десяти комплексных матриц.

8. Запишите шесть чисел типа int в объект класса Matrix m(2,3) и выведите их на экран.

Контрольные вопросы

1. Кто выполняет числовые расчеты?

2. Что такое точность?

3. Что такое переполнение?

4. Каковы обычные размеры типов double и int?

5. Как обнаружить переполнение?

6. Как определить пределы изменения чисел, например наибольшее число типа int?

7. Что такое массив, строка и столбец?

Перейти на страницу:

Похожие книги

97 этюдов для архитекторов программных систем
97 этюдов для архитекторов программных систем

Успешная карьера архитектора программного обеспечения требует хорошего владения как технической, так и деловой сторонами вопросов, связанных с проектированием архитектуры. В этой необычной книге ведущие архитекторы ПО со всего света обсуждают важные принципы разработки, выходящие далеко за пределы чисто технических вопросов.?Архитектор ПО выполняет роль посредника между командой разработчиков и бизнес-руководством компании, поэтому чтобы добиться успеха в этой профессии, необходимо не только овладеть различными технологиями, но и обеспечить работу над проектом в соответствии с бизнес-целями. В книге более 50 архитекторов рассказывают о том, что считают самым важным в своей работе, дают советы, как организовать общение с другими участниками проекта, как снизить сложность архитектуры, как оказывать поддержку разработчикам. Они щедро делятся множеством полезных идей и приемов, которые вынесли из своего многолетнего опыта. Авторы надеются, что книга станет источником вдохновения и руководством к действию для многих профессиональных программистов.

Билл де Ора , Майкл Хайгард , Нил Форд

Программирование, программы, базы данных / Базы данных / Программирование / Книги по IT
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT