主函数:
View Code
#include <stdio.h>
#include "MyLib.h"
#define C(i,j) C[i*36+j] //用一维数组空间来表示二维数组
//int gaus(double a[],double b[],int n);
int main(int argc,char *argv[])
{
FILE *fptr1, *fptr2,*fptr3;
int i,j;
double a[36][36];
double b[36];
fptr1 = fopen("input1.txt", "r");
for (i=0; i<36; i++)
{
for (j=0; j<36; j++)
{
fscanf(fptr1,"%lf", &a[i][j]);
}
fscanf(fptr1,"n");
}
fclose(fptr1);
fptr2 = fopen("input2.txt", "r");
for (i=0; i<36; i++)
{
fscanf(fptr2,"%lf", &b[i]);
}
fclose(fptr2);
fptr3 = fopen("output.txt", "w");
double C[36*36];
for (i=0; i<36; i++)
{
for (j=0; j<36; j++)
{
C(i,j)=a[i][j];
}
}
if (gaus(C,b,36)!=0)
{
for (i=0;i<=35;i++)
{
printf("x(%d)=%en",i,b[i]);
fprintf(fptr3,"%18.5e",b[i]);
fprintf(fptr3,"n");
}
}
fclose(fptr3);
return 0;
}
头文件:
View Code
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/*处理函数*/
int gaus(double a[],double b[],int n)
{
int *js,l,k,i,j,is,p,q;
double d,t;
js=(int *)malloc(n*sizeof(int));
l=1;
for (k=0;k<=n-2;k++)
{
d=0.0;
for (i=k;i<=n-1;i++)
for (j=k;j<=n-1;j++)
{
t=fabs(a[i*n+j]);
if (t>d)
{
d=t;
js[k]=j;
is=i;
}
}
if (d+1.0==1.0)
l=0;
else
{
if (js[k]!=k)
for (i=0;i<=n-1;i++)
{
p=i*n+k;
q=i*n+js[k];
t=a[p];
a[p]=a[q];
a[q]=t;
}
if (is!=k)
{
for (j=k;j<=n-1;j++)
{
p=k*n+j;
q=is*n+j;
t=a[p];
a[p]=a[q];
a[q]=t;
}
t=b[k];
b[k]=b[is];
b[is]=t;
}
}
if (l==0)
{
free(js);
printf("failn");
return(0);
}
d=a[k*n+k];
for (j=k+1;j<=n-1;j++)
{
p=k*n+j;
a[p]=a[p]/d;
}
b[k]=b[k]/d;
for (i=k+1;i<=n-1;i++)
{
for (j=k+1;j<=n-1;j++)
{
p=i*n+j;
a[p]=a[p]-a[i*n+k]*a[k*n+j];
}
b[i]=b[i]-a[i*n+k]*b[k];
}
}
d=a[(n-1)*n+n-1];
if (fabs(d)+1.0==1.0)
{
free(js);
printf("failn");
return(0);
}
b[n-1]=b[n-1]/d;
for (i=n-2;i>=0;i--)
{
t=0.0;
for (j=i+1;j<=n-1;j++)
t=t+a[i*n+j]*b[j];
b[i]=b[i]-t;
}
js[n-1]=n-1;
for (k=n-1;k>=0;k--)
if (js[k]!=k)
{
t=b[k];
b[k]=b[js[k]];
b[js[k]]=t;
}
free(js);
return (1);
}
新建工程,即可调用成功。
此处主函数的矩阵维数还是给定的 后续版本给不定的。
原文链接: https://www.cnblogs.com/kmliang/archive/2013/01/16/2863343.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/75726
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!