level 1
kaoyanning
楼主
//下面是C代码,只用把矩阵变成对角线都为1的上三角矩阵,矩阵为10*11增广矩阵,C结果如图
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 10
#define eps 1e-6
int main()
{
int i,j,k,r;
float c,d,e;
float a[n][n+1]={-82,-84,81,-42,-13,82,98,27,95,66,2669,81,-92,-82,40,-40,10,35,40,95,-75,341,-59,-2,-64,-53,-51,19,-15,72,-43,2,-504,-24,-11,89,91,92,-85,30,-25,-33,43,678,32,-3,-80,-39,-56,15,17,42,99,-51,276,51,-67,-23,-70,-21,79,49,4,57,6,885,-66,-28,-43,11,-56,-8,28,-28,58,-24,-281,3,76,-86,58,-46,-21,0,-14,26,60,495,99,48,-62,-12,-17,-80,87,37,62,34,1199,41,-17,-17,99,99,30,21,-55,-11,96,1595};
for(k=0;k<n;k++)
{
//按列找主元
{
r=k;
for(i=k;i<n;i++)
if (fabs (a[i][k])>fabs(a[r][k]))r=i;
if (fabs (a[r][k])<eps)exit(0);
if(r>k)
{
for(j=k;j<n+1;j++)
{c=a[k][j];a[k][j]=a[r][j];a[r][j]=c;}
}
}
//归一
{
d=a[k][k];
for(i=k;i<n+1;i++)
a[k][i]=a[k][i]/d;
}
//消去
{
for(i=k+1;i<n;i++)
{e=a[i][k];
for(j=0;j<n+1;j++)
a[i][j]=a[i][j]-e*a[k][j];
}
}
//打印
{ for(i=0;i<n;i++)
{ for(j=0;j<n+1;j++)
{
printf("%12f",a[i][j]);
}
printf("\n");
}
}
printf("\n");
}
return 0;
}

2016年11月25日 14点11分
1
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 10
#define eps 1e-6
int main()
{
int i,j,k,r;
float c,d,e;
float a[n][n+1]={-82,-84,81,-42,-13,82,98,27,95,66,2669,81,-92,-82,40,-40,10,35,40,95,-75,341,-59,-2,-64,-53,-51,19,-15,72,-43,2,-504,-24,-11,89,91,92,-85,30,-25,-33,43,678,32,-3,-80,-39,-56,15,17,42,99,-51,276,51,-67,-23,-70,-21,79,49,4,57,6,885,-66,-28,-43,11,-56,-8,28,-28,58,-24,-281,3,76,-86,58,-46,-21,0,-14,26,60,495,99,48,-62,-12,-17,-80,87,37,62,34,1199,41,-17,-17,99,99,30,21,-55,-11,96,1595};
for(k=0;k<n;k++)
{
//按列找主元
{
r=k;
for(i=k;i<n;i++)
if (fabs (a[i][k])>fabs(a[r][k]))r=i;
if (fabs (a[r][k])<eps)exit(0);
if(r>k)
{
for(j=k;j<n+1;j++)
{c=a[k][j];a[k][j]=a[r][j];a[r][j]=c;}
}
}
//归一
{
d=a[k][k];
for(i=k;i<n+1;i++)
a[k][i]=a[k][i]/d;
}
//消去
{
for(i=k+1;i<n;i++)
{e=a[i][k];
for(j=0;j<n+1;j++)
a[i][j]=a[i][j]-e*a[k][j];
}
}
//打印
{ for(i=0;i<n;i++)
{ for(j=0;j<n+1;j++)
{
printf("%12f",a[i][j]);
}
printf("\n");
}
}
printf("\n");
}
return 0;
}
