65,186
社区成员




// LU sequential.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
int size;
double **l;
double **u;
double **mat;
clock_t t1,t2;
FILE *fp;
void decompose(double **m) {
t1 = clock();
int i = 0, j = 0, k = 0;
for (j = 0; j < size - 1; j++) {
for (i = j + 1; i < size; i++) {
double factor = m[i][j] / m[j][j];
for (k = 0; k < size; k++) {
u[i][k] = m[i][k] - (m[j][k] * factor);
}
l[i][j] = factor;
}
for (i = 0; i < size; i++) {
for (k = 0; k < size; k++) {
m[i][k] = u[i][k];
}
}
t2 = clock();
}
}
int generateMatrix(int size){
srand((unsigned) time(NULL));
mat =new double*[size * (sizeof *mat)];
u = new double*[size * (sizeof *u)];
l = new double*[size * (sizeof *l)];
int i = 0;
for (i = 0; i < size; i++) {
u[i] = new double[(sizeof *u[i]) * size];
l[i] = new double[(sizeof *l[i]) * size];
mat[i] = new double[(sizeof *mat[i]) * size];
int j = i;
for (j = i; j< size; j++) {
mat[i][j] = i + 1;
mat[j][i] = i + 1;
u[i][j] = mat[i][j];
u[j][i] = mat[j][i];
}
}
decompose(mat);
return 1;
}
int main(int argc, char * argv[])
{
size =100;
fopen_s(&fp,"output.txt", "a+");
int successFlag = 0;
if (generateMatrix(size) == 1)
{
successFlag = 1;
}
delete[]mat;
delete[]u;
delete[]l;
fprintf(fp, "%d ", size);
fprintf(fp, "%f\n", (double)(t2 - t1) / CLOCKS_PER_SEC);
fclose(fp);
return 0;
}