Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
про виконання лабораторної роботи №1
з курсу „ паралельні та розподілені обчислення”
на тему„ ВИКОРИСТАННЯ ФУНКЦІОНАЛЬНОЇ ДЕКОМПОЗИЦІЇ ДЛЯ РОЗВ’ЯЗКУ ОБЧИСЛЮВАЛЬНИХ ЗАДАЧ”
Львів 2005
Тема:
Використання функціональної декомпозиції для розв’язку обчислювальних задач.
Мета:
Вивчити методи декомпозицій задач. Набути навиків розв’язування задач з використанням функціональної декомпозиції.
Варіант №15
15
рядок
bi=i для парних і
bi=15/i для непарних і
15A1b1+c1
A2С2+B2
Cij=15/(i2+j)
Схема декомпозиції:
Текст програми:
#include <stdio.h>
#include <string.h>
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <fstream.h>
#include <time.h>
#include <iomanip.h>
class ofstream o("zvit.txt");
void delay()
{
for(int i=0;i<1000;i++);
}
double** AddMas(double** a, double** b, int n)
{
int i,j;
double **c;
c = new double*[n];
for(j=0; j<n; j++)
{
c[j]= new double[n];
}
for(i=0; i<n; i++)
{
for(j=0;j<n; j++)
{
c[i][j] = a[i][j] + b[i][j];
}
}
return c;
}
double** DeductMas(double **a, double **b, int n)
{
int i,j;
double **c;
c = new double*[n];
for(j=0; j<n; j++)
{
c[j]= new double[n];
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
c[i][j] = a[i][j] - b[i][j];
}
}
return c;
}
double* AddVector(double *a, double *b, int n)
{
int i;
double *c;
c = new double[n];
for(i=0; i<n; i++)
{
c[i] = a[i] + b[i];
}
return c;
}
double* DeductVector(double *a, double *b, int n)
{
int i;
double *c;
c = new double[n];
for(i=0; i<n; i++)
{
c[i] = a[i] - b[i];
}
return c;
}
double** MulMatrix_Number(double **a, double con, int n)
{
int i, j;
double **c;
c = new double*[n];
for(j=0; j<n; j++)
{
c[j]= new double[n];
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
c[i][j] = a[i][j] * con;
}
}
return c;
}
double** MulMatrix_Matrix(double **a, double **b, int n)
{
int i, j, k;
double **c;
double s;
c = new double*[n];
for(j=0; j<n; j++)
{
c[j]= new double[n];
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
s = 0;
for(k=0; k<n; k++)
{
s = s + a[i][k] * b[k][j];
}
c[i][j] = s;
}
}
return c;
}
double* MulVector_Number(double *a, double con, int n)
{
int i;
double* c;
c = new double[n];
for(i=0; i<n; i++)
{
c[i] = a[i] * con;
}
return c;
}
double MulVector(double *a, double *b, int n)
{
int i;
double c;
//c = new double[n];
c=0;
for(i=0; i<n; i++)
{
c = c + a[i] * b[i];
}
return c;
}
double* MulMatrix_Vector(double **a, double *b, int n)
{
int i, k;
double s;
double *c;
c = new double[n];
for(i=0; i<n; i++)
{
s = 0;
for(k=0; k<n; k++)
{
s = s + a[i][k] * b[k];
}
c[i] = s;
}
return c;
}
double** Transp(double **a, int n)
{
int i, j;
double prom;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
prom = a[i][j];
a[j][i] = prom;
}
}
return a;
}
double** InputMas(int n)
{
double **a;
a = new double*[n];
int j;
for(j=0; j<n; j++)
{
a[j]= new double[n];
}
int i;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
cout << "Matrix[" << i << "][" << j << "]=";
cin >> a[i][j];
}
}
return a;
}
double* InputVector(int n)
{
double *a;
a = new double[n];
int i;
for(i=0; i<n; i++)
{
cout << "a[" << i << "]=";
cin >> a[i];
}
return a;
}
double** MatrixC(int n)
{
int i, j;
double **c;
c = new double*[n];
for(j=0; j<n; j++)
{
c[j]= new double[n];
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
c[i][j] = 15 * (pow(i+1,2)+j);
}
}
return c;
}
double* VectorBi(int n)
{
double *b;
b = new double[n];
int i, j;
j = 1;
for(i=0; i<n; i++)
{
if((j%2)==0) b[i] = j;else b[i]=15/j;
j = j + 1;
}
return b;
}
void FreeMem(double **a, int n)
{
for(int j=0; j<n;j++)
{
delete [] a[j];
}
delete [] a;
}
void FreeMemVector(double *a, int n)
{
delete [] a;
}
double** AvtoGen(int n)
{
double **a;
a = new double*[n];
int j;
for(j=0; j<n; j++)
{
...