Завершение процесса вычислений — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Завершение процесса вычислений

2024-02-15 17
Завершение процесса вычислений 0.00 из 5.00 0 оценок
Заказать работу

Перед выполнением матрично-векторного умножения сначала разработаем функцию для корректного завершения процесса вычислений. Для этого необходимо освободить память, выделенную динамически в процессе выполнения программы. Реализуем соответствующую функцию ProcessTermination. Память выделялась для хранения исходных матрицы pMatrix и вектора pVector, а также для хранения результата умножения pResult. Следовательно, эти объекты необходимо передать в функцию ProcessTermination в качестве аргументов:

// Function for computational process termination

void ProcessTermination(double* pMatrix,double* pVector,double* pResult) {

delete [] pMatrix;

delete [] pVector;

delete [] pResult;

}

Вызов функции ProcessTermination необходимо выполнить перед завершением той части программы, которая выполняет умножение матрицы на вектор:

// Memory allocation and data inialization

ProcessInitialization(pMatrix, pVector, pResult, Size);

// Matrix and vector output

printf ("Initial Matrix: \n");

PrintMatrix (pMatrix, Size, Size);

printf ("Initial Vector: \n");

PrintVector (pVector, Size);

// Computational process termination

ProcessTermination(pMatrix, pVector, pResult);

Скомпилируйте и запустите приложение. Убедитесь в том, что оно выполняется корректно.

Реализация умножения матрицы на вектор

Выполним теперь разработку основной вычислительной части программы. Для выполнения умножения матрицы на вектор реализуем функцию SerialResultCalculation, которая принимает на вход исходные матрицу pMatrix и вектор pVector, размеры этих объектов Size, а также указатель на вектор в памяти, где должен быть сохранен результат pResult.

В соответствии с алгоритмом, изложенным в задании 1, код этой функции должен быть

следующий:

// Function for matrix-vector multiplication

void SerialResultCalculation(double* pMatrix, double* pVector, double*

pResult,

int Size) {

int i, j; // Loop variables

for (i=0; i<Size; i++) {

pResult[i] = 0;

for (j=0; j<Size; j++)

pResult[i] += pMatrix[i*Size+j]*pVector[j];

}

}

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

Выполним вызов функции вычисления умножения матрицы на вектор из основной программы. Для контроля правильности выполнения умножения распечатаем результирующий вектор:

// Memory allocation and data initialization

ProcessInitialization(pMatrix, pVector, pResult, Size);

// Matrix and vector output

printf ("Initial Matrix: \n");

PrintMatrix (pMatrix, Size, Size);

printf ("Initial Vector: \n");

PrintVector (pVector, Size);

// Matrix-vector multiplication

SerialResultCalculation(pMatrix, pVector, pResult, Size);

// Printing the result vector

printf (“\n Result Vector: \n”);

PrintVector(pResult, Size);

// Computational process termination

ProcessTermination(pMatrix, pVector, pResult);

Скомпилируйте и запустите приложение. Проанализируйте результат работы алгоритма умножения матрицы на вектор. Если алгоритм реализован правильно, то результирующий вектор должен иметь следующую структуру: i-ый элемент результирующего вектора равен произведению размера вектора Size на номер элемента i. Так, если размер объектов Size равен 4, результирующий вектор pResult должен быть таким: pResult = (0, 4, 8, 12). Проведите несколько вычислительных экспериментов, изменяя размеры объектов.

 

__


Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.007 с.