当前位置:编程学习 > C#/ASP.NET >>

求人帮忙做一个LU分解的MFC小程序啊,急用!

求人帮忙做一个LU分解的MFC小程序啊,急用! --------------------编程问答-------------------- 百度一下就有了 pudn 里面多得是。。。 --------------------编程问答-------------------- #include <stdio.h>
给你来一段c++的 自己建工程 实现吧
-----------------------------------------------------------------------------------------


#include <stdlib.h>
#include <time.h>

#define SIZE 10

void randomInit(float M[SIZE][SIZE]);
void outPutMatrix(float H[SIZE][SIZE]);
void creatLU(float N[SIZE][SIZE]);
float arraySum(float P[SIZE][SIZE], float Q[SIZE][SIZE], int cSmall, int cLarge);

void main()
{
float arrayA[SIZE][SIZE];
printf("初始化要进行分解的矩阵arrayA:\n");
randomInit(arrayA);
outPutMatrix(arrayA);

printf("开始分解:\n");
    creatLU(arrayA);
}

void randomInit(float M[SIZE][SIZE])
{
srand(time(NULL));
for(int i=0; i<SIZE; i++)
for(int j=0; j<SIZE; j++)
{
M[i][j]=rand()%10;
}
}

void creatLU(float N[SIZE][SIZE])
{
float arrayL[SIZE][SIZE], arrayU[SIZE][SIZE]; 
printf("为已初始化矩阵进行LU分解:\n");
int i, j;
for(j=0; j<SIZE; j++)
{
arrayU[0][j]=N[0][j];
}
for(i=1; i<SIZE; i++)
{
    arrayL[i][0]=N[i][0]/arrayU[0][0];
}

for(i=1; i<SIZE; i++)
{
for(j=1; j<SIZE; j++)
{
if(j>=i)
{
arrayU[i][j]=N[i][j]-arraySum(arrayL, arrayU, i, j);
}
else
{
arrayL[i][j]=(N[i][j]-arraySum(arrayL, arrayU, j, i))/arrayU[j][j];
}
}
}
for(i=0; i<SIZE; i++)
for(j=0; j<SIZE; j++)
{
if(i==j)
arrayL[i][j]=1;
else if(i<j)
arrayL[i][j]=0;
else if(i>j)
arrayU[i][j]=0;
}

printf("分解后的L矩阵为:\n");
outPutMatrix(arrayL);

printf("分解后的U矩阵为:\n");
    outPutMatrix(arrayU);
}

float arraySum(float P[SIZE][SIZE], float Q[SIZE][SIZE], int cSmall, int cLarge)
{
float sum=0;
for(int i=0; i<cSmall; i++)
sum+=P[cSmall][i]*Q[i][cLarge];

return sum;
}

void outPutMatrix(float H[SIZE][SIZE])
{
for(int i=0; i<SIZE; i++)
{
for(int j=0; j<SIZE; j++)
{
printf("%1.1f ", H[i][j]);
}
printf("\n");
}
} --------------------编程问答-------------------- --------------------编程问答-------------------- 找找应该有现成的
补充:.NET技术 ,  VC.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,