Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Кафедра електронних обчислювальних машин

Інформація про роботу

Рік:
2005
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Паралельні та розподілені обчислення

Частина тексту файла

Міністерство освіти і науки України Національний університет „Львівська політехніка” Кафедра електронних обчислювальних машин Звіт про виконання лабораторної роботи № 1 з курсу „ Паралельні та розподілені обчислення ” ВИКОРИСТАННЯ ФУНКЦІОНАЛЬНОЇ ДЕКОМПОЗИЦІЇ ДЛЯ РОЗВ’ЯЗКУ ОБЧИСЛЮВАЛЬНИХ ЗАДАЧ. Львів – 2005 Мета роботи: Вивчити методи декомпозицій задач. Набути навиків розв’язування задач з використанням функціональної декомпозиції. Завдання Використовуючи метод функціональної декомпозиції, розробити алгоритм обчислення запропонованого матрично-векторного виразу, який би враховував можливість паралельного виконання і був оптимальним з точки зору часових затрат. На основі створеного алгоритму написати програму яка дозволяє обчислити вираз та ілюструє проведену декомпозицію. Вираз, який слід обрахувати, заданий наступним чином:  ( Варіант 20 ) При чому елементи  визначаються згідно правил: , де bi=20/(i3+20), і=1,2,...n  , де Cij=20/(i3-j3+2) Аналіз завдання. Вхідні дані: розмірність матриць – n, матриці ; вектори-стовпці . Вектор-стовпець  та матриця  обраховуються, виходячи з уведеної розмірності, зауважимо, що значення їх елементів завжди менші одиниці і різко спадають зі збільшенням розмірності. Згідно з поставленою задачею, в обчисленні загального виразу приймають участь три різні елементи – два вектори стовпці  та матриця . Оскільки, згідно правил матричних обчислень, добуток не є комутативною операцією, всі множення слід виконувати в тій послідовності, яка задана. Результатом множення рядка на стовпець є число, а матриці на матрицю – матриця, рядок ( матрицю = рядок, матрицю ( стовпець = стовпець, рядок ( стовпець = число, число ( матрицю = матриця. Декомпозиція задачі. Однозначно, всі обчислення безпосередньо залежать від розмірності даних, тому найперше, слід забезпечити ввід змінної n, що визначає цю розмірність. Далі, можна паралельно виконувати обчислення значень вектора b та матриці С2, оскільки вони незалежні від інших параметрів. Крім того, на тому ж рівні декомпозиції слід визначати вхідні дані, тобто вводити з клавіатури, або генерувати випадковим чином матриці  та вектори-стовпці . Наступний рівень декомпозиції – це знаходження елементів виразу. Значення  залежить від введеної матриці А та обрахованого вектора b. Значення  залежить від введеної А1 та різниці векторів b1 і c1, тому знайти його можна лише після обчислення (b1 - c1). Зауважимо, що множення на константу не є окремою операцією, як і транспонування векторів. Аналогічно, знаходимо . Подальша декомпозиція відбувається згідно заданої послідовності операцій та врахування залежностей отриманих на кожному рівні даних. Порядок виконання програми умовно розбито на 8 етапів. Повна схема декомпозиції обчислення заданого виразу приведена нижче. Об’єднання частин виразу проведено безпосередньо у схемі декомпозиції, оскільки воно однозначно визначається порядком обчислень. Схема декомпозиції задачі  Текст програми #include "stdafx.h" #include "stdlib.h" #include "conio.h" #include "math.h" FILE *OutFile=fopen("output.txt","w"); int rows; int Option(void) { char select; while ( select!='y' && select!='Y' && select!='N' && select!='n' ) { printf("\b"); select=getche(); } if (select=='y' || select=='Y') return 1; return 0; } /************************************ Memory allocation *****/ float** AllocateMatrix(int row) { int i; float **A; A=new float*[row]; if (A==NULL) { puts("Memory allocation error."); exit(0); }; for (i=0; i<rows; i++) { A[i]=new float[row]; if (A[i]==NULL) { puts("Memory allocation error."); exit(0); }; }; return A; }; float* AllocateVector(int row) { float *A; A=new float[row]; if (A==NULL) { puts("Memory allocation error."); exit(0); }; return A; }; /************************************ Memory freeing *****/ void DeleteMatrix( float **A, int row) { int i; for (i=0; i<row; i++) delete A[i]; delete A; }; void DeleteVector( float *A) { delete A; }; /**********************...
Антиботан аватар за замовчуванням

31.03.2013 14:03

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини