在网站上搜索了一下,发现C语言代码可能是很原始的版本,编译的时候会报出诸多错误。
不过大致还是能看懂,就看你能不能转过弯来咯。
原文的代码是要存成矩阵形式,而实际代码写的着则是一维数组形式。
可以直接使用的代码如下:
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
// 对矩阵求逆,结果保存在a中
int brinv(double a[], int n)
{
int *is,*js,i,j,k,l,u,v;
double d,p;
is = new int[n];
js = new int[n];
for (k=0; k<=n-1; k++)
{
d=0.0;
for (i=k; i<=n-1; i++)
for (j=k; j<=n-1; j++)
{
l=i*n+j; p=fabs(a[l]);
if (p>d) { d=p; is[k]=i; js[k]=j;}
}
if (d+1.0==1.0)
{
free(is); free(js); printf("err**not inv\n");
return(0);
}
if (is[k]!=k)
for (j=0; j<=n-1; j++)
{
u=k*n+j; v=is[k]*n+j;
p=a[u]; a[u]=a[v]; a[v]=p;
}
if (js[k]!=k)