11.10. Вычисление скалярного произведения
11.10. Вычисление скалярного произведения
Проблема
Имеется два контейнера, содержащих числа, причем они имеют одинаковую длину, и требуется вычислить их скалярное произведение.
Решение
Пример 11.19 показывает, как можно вычислить скалярное произведение, используя функцию inner_product из заголовочного файла <numeric>.
Пример 11.19. Расчет скалярного произведения
#include <numeric>
#include <iostream>
#include <vector>
using namespace std;
int main() {
int v1[] = { 1, 2, 3 };
int v2[] = { 4, 6, 8 };
cout << "the dot product of (1,2,3) and (4,6,8) is ";
cout << inner_product(v1, v1 + 3, v2, 0) << endl;
}
Программа примера 11.19 выдает следующий результат.
the dot product of (1,2,3) and (4,6,8) is 40
Обсуждение
Скалярное произведение (dot product) является одной из форм обобщенного скалярного произведения (inner product), называемой евклидовым скалярным произведением (Euclidean Inner Product). Функция inner_product объявляется следующим образом.
template<class In, class In2, class T>
T inner_product(In first, In last, In2 first2, T init);
template<class In, class In2, class T, class BinOp, class BinOp2>
T inner_product(In first, In last, In2 first2, T init, BinOp op, BinOp2 op2);
Первый вариант функции inner_product суммирует произведения соответствующих элементов двух контейнеров. Второй вариант функции inner_product позволяет вам самому предоставить операцию над парой чисел и функцию суммирования. В примере 11.20 продемонстрирована простая реализация функции inner_product.
Пример 11.20. Пример реализации функции inner_product()
template<class In, class In2, class T, class BinOp, class BinOp2>
T inner_product(In first, In last, In2 first2, T init, BinOp op, Binop2 op2) {
while (first != last) {
BinOp(init, BinOp2(*first++, *first2++));
}
return init;
}
Благодаря гибкости реализации функции inner_product вы можете ее использовать для многих других целей, а не только для расчета скалярного произведения (например, ее можно использовать для вычисления расстояния между двумя векторами или для вычисления нормы вектора).
Смотри также
Рецепты 11.11 и 11.12.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Вычисление постоянных
Вычисление постоянных Вот что мы собираемся сделать: пройтись по всем объявлениям стилей и заменить вычисление выражения его постоянным значением. В предыдущем примере, предполагая, что мы используем IE6 в стандартном режиме, нам хотелось бы видеть следующий код:#myDiv {border:
Вычисление площади и периметра
Вычисление площади и периметра Команда AREA вычисляет площадь и периметр объекта или заданной области. Вызывается из падающего меню Tools ? Inquiry ? Area или щелчком на пиктограмме Area на панели инструментов Inquiry.Воображаемая фигура, предназначенная для вычисления площади и
Вычисление геометрии и массы
Вычисление геометрии и массы Команда MASSPROP вычисляет массовые характеристики областей и тел. Вызывается из падающего меню Tools ? Inquiry ? Region/Mass Properties или щелчком на пиктограмме Region/Mass Properties на панели инструментов Inquiry.Команда MASSPROP отображает массовые характеристики в
5.27. Вычисление коэффициента корреляции
5.27. Вычисление коэффициента корреляции Коэффициент корреляции — одна из самых простых и полезных статистических мер. Он измеряет «линейность» набора, состоящего из пар (x, у), и изменяется от -1.0 (полная отрицательная корреляция) до +1.0 (полная положительная корреляция).Для
7.5. Вычисление n-ого дня недели в месяце
7.5. Вычисление n-ого дня недели в месяце Иногда, зная год и месяц, хочется вычислить дату, скажем, третьего понедельника или второго вторника в этом месяце. Такую задачу решает код в листинге 7.1.Чтобы найти n-ое вхождение данного дня недели, мы передаем n в качестве первого
2. Операции декартового произведения и естественного соединения
2. Операции декартового произведения и естественного соединения Операция декартового произведения и операция естественного соединения являются бинарными операциями типа произведения и основываются на операции объединения двух отношений, которую мы рассматривали
4. Операция декартова произведения.
4. Операция декартова произведения. Как мы помним из предыдущих лекций, декартово произведение двух отношений-операндов составляется как набор всех возможных пар именованных значений кортежей на атрибутах. Поэтому на языке структурированных запросов операция
Вычисление площади и периметра
Вычисление площади и периметра Команда AREA вычисляет площадь и периметр объекта или заданной области. Вызывается из падающего меню Tools ? Inquiry ? Area или щелчком на пиктограмме Area панели инструментов Inquiry.Воображаемая фигура, предназначенная для вычисления площади и
Вычисление геометрии и массы
Вычисление геометрии и массы Команда MASSPROP вычисляет массовые характеристики областей и тел. Вызывается из падающего меню Tools ? Inquiry ? Region/Mass Properties или щелчком на пиктограмме Region/Mass Properties на панели инструментов Inquiry.Команда MASSPROP отображает массовые характеристики в
2.3.9. Вычисление размера БД
2.3.9. Вычисление размера БД ERwin позволяет рассчитать приблизительный размер БД в целом, а также таблиц, индексов и других объектов через определенный период времени после начала эксплуатации ИС. Для расчета размеров физических объектов служит диалог Volumetrics Editor (рис. 2.99),
Вычисление номеров
Вычисление номеров Пожалуй, самым простым для понимания (но не самым простым в использовании) способом вычисления номера является использование XPath-выражений. Этот способ практически идентичен использованию xsl:value-of, как было показано в начале этой главы. Единственным
5.2.1. Вычисление максимума
5.2.1. Вычисление максимума Процедуру нахождения наибольшего из двух чисел можно запрограммировать в виде отношенияmах( X, Y, Мах)где Мах = X, если X больше или равен Y, и Мах есть Y, если X меньше Y. Это соответствует двум таким предложениям:mах( X, Y, X) :- X >= Y.max( X, Y, Y) :- X < Y.Эти