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

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

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

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

2024-02-15 25
Завершение процесса вычислений 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). Проведите несколько вычислительных экспериментов, изменяя размеры объектов.

 

__


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

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

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...



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

0.006 с.