Чтение онлайн

на главную - закладки

Жанры

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

2. Используя оператор

sizeof
, выведите на экран размеры объектов
Matrix <int> a(10)
,
Matrix<int> b(10)
,
Matrix<double> c(10)
,
Matrix<int,2> d(10,10)
,
Matrix<int,3> e(10, 10,10)
.

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

4. Напишите программу, вводящую числа типа

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

5. Считайте десять чисел с плавающей точкой из потока ввода и запишите их в объект типа

Matrix<double>
. Класс
Matrix
не имеет функции
push_back
, поэтому будьте осторожны и предусмотрите реакцию на попытку ввести неверное количество чисел типа
double
. Выведите этот объект класса
Matrix
на экран.

6. Вычислите таблицу умножения

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

7. Введите из потока

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

8. Запишите шесть чисел типа

int
в объект класса
Matrix<int,2> m(2,3)
и выведите их на экран.

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

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

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

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

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

double
и
int
?

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

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

int
?

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

8. Что такое многомерный массив в стиле языка C?

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

10. Что такое размерность матрицы?

11. Сколько размерностей может иметь матрица?

12. Что такое срезка?

13. Что такое пересылка? Приведите пример.

14. В чем заключается разница между индексированием в стиле языков Fortran и C?

15. Как применить операцию к каждому элементу матрицы? Приведите примеры.

16. Что такое объединенное умножение и сложение (fused operation)?

17. Дайте определение скалярного произведения.

18. Что такое линейная алгебра?

19. Опишите метод исключения Гаусса.

20.

Что такое опорный элемент (в линейной алгебре и реальной жизни)?

21. Что делает число случайным?

22. Что такое равномерное распределение?

23. Где найти стандартные математические функции? Для каких типов аргументов они определены?

24. Что такое мнимая часть комплексного числа?

25. Чему равен корень квадратный из –1?

Термины

Упражнения

1. Аргументы функции

f
в выражениях
a.apply(f)
и
apply(f,a)
являются разными. Напишите функцию
triple
для каждого варианта и примените их для удвоения элементов массива
{ 1 2 3 4 5 }
. Определите отдельную функцию
triple
, которую можно было бы использовать как в выражении
a.apply(triple)
, так и в выражении
apply(triple,a)
. Объясните, почему нецелесообразно писать все функции именно так для использования в качестве аргумента функции
apply
.

2. Повторите упр. 1, используя не функции, а объекты-функции. Подсказка: примеры можно найти в заголовке

Matrix.h
.

3. Только для экспертов (средствами, описанными в книге эту задачу решить невозможно). Напишите функцию

apply(f,a)
, принимающую в качестве аргумента функции
void (T&)
,
T (const T&)
, а также эквивалентные им объекты-функции. Подсказка:
Boost::bind
.

4. Выполните программу исключения методом Гаусса, т.е. завершите ее, скомпилируйте и протестируйте на простом примере.

5. Примените программу исключения методом Гаусса к системе

A=={{0 1}{1 0}}
и
b=={5 6}
и убедитесь, что программа завершится крахом. Затем попробуйте вызвать функцию
elim_with_partial_pivot
.

6. Замените циклами векторные операции

dot_product
и
scale_and_add
в программе исключения методом Гаусса. Протестируйте и прокомментируйте эту программу.

7. Перепишите программу исключения методом Гаусса без помощи библиотеки

Matrix
. Иначе говоря, используйте встроенные массивы или класс vector, а не класс
Matrix
.

8. Проиллюстрируйте метод исключения методом Гаусса.

9. Перепишите функцию

apply
, не являющуюся членом класса
Matrix
, так, чтобы она возвращала объект класса
Matrix
, содержащий объекты, имеющие тип примененной функции. Иначе говоря, функция
apply(f,a)
должна возвращать объект класса
Matrix<R>
, где
R
— тип значения, возвращаемого функцией
f
. Предупреждение: это решение требует информации о шаблонах, которая не излагалась в этой книге.

Поделиться:
Популярные книги

Вираж бытия

Ланцов Михаил Алексеевич
1. Фрунзе
Фантастика:
героическая фантастика
попаданцы
альтернативная история
6.86
рейтинг книги
Вираж бытия

Кодекс Крови. Книга IХ

Борзых М.
9. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга IХ

Эфемер

Прокофьев Роман Юрьевич
7. Стеллар
Фантастика:
боевая фантастика
рпг
7.23
рейтинг книги
Эфемер

Попаданка в академии драконов 4

Свадьбина Любовь
4. Попаданка в академии драконов
Любовные романы:
любовно-фантастические романы
7.47
рейтинг книги
Попаданка в академии драконов 4

Крестоносец

Ланцов Михаил Алексеевич
7. Помещик
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Крестоносец

Промышленникъ

Кулаков Алексей Иванович
3. Александр Агренев
Приключения:
исторические приключения
9.13
рейтинг книги
Промышленникъ

Ротмистр Гордеев 2

Дашко Дмитрий
2. Ротмистр Гордеев
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ротмистр Гордеев 2

Безумный Макс. Поручик Империи

Ланцов Михаил Алексеевич
1. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
7.64
рейтинг книги
Безумный Макс. Поручик Империи

Фиктивный брак

Завгородняя Анна Александровна
Фантастика:
фэнтези
6.71
рейтинг книги
Фиктивный брак

Набирая силу

Каменистый Артем
2. Альфа-ноль
Фантастика:
фэнтези
боевая фантастика
рпг
6.29
рейтинг книги
Набирая силу

Имперец. Земли Итреи

Игнатов Михаил Павлович
11. Путь
Фантастика:
героическая фантастика
боевая фантастика
5.25
рейтинг книги
Имперец. Земли Итреи

Титан империи

Артемов Александр Александрович
1. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи

Странник

Седой Василий
4. Дворянская кровь
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Странник

Мне нужна жена

Юнина Наталья
Любовные романы:
современные любовные романы
6.88
рейтинг книги
Мне нужна жена