【编程求助】用c语言或者c++编程,实现用高斯消元法求解线性方程组Ax=b。

其中A是一个24*24阶矩阵(如图),b是向量(1,2,3,...,23,24)... 其中A是一个24*24阶矩阵(如图),b是向量(1,2,3,...,23,24) 展开
 我来答
匿名用户
推荐于2017-09-23
展开全部
void gaussj(double a[], int n, double b[])
{
int i,j,k,l,ll,irow,icol;
double big,pivinv,dum;
int ipiv[50], indxr[50], indxc[50];
for (j=0;j<=n-1;j++)
{
ipiv[j]=0;
}
for (i=0;i<=n-1;i++)
{
big=0.0;
for (j=0;j<=n-1;j++)
{
if(ipiv[j]!=1)
{
for(k=0;k<=n-1;k++)
{
if(ipiv[k]==0)
{
if(fabs(a[j*n+k])>=big)
{
big=fabs(a[j*n+k]);
irow=j;
icol=k;
}
else if(ipiv[k]>1)
{
cout<<"singular matrix";
}
}
}
}
}
ipiv[icol]=ipiv[icol]+1;
if(irow!=icol)
{
for(l=0;l<=n-1;l++)
{
dum=(a[irow*n+l]);
a[irow*n+l]=a[icol*n+l];
a[icol*n+l]=dum;
}
dum=b[irow];
b[irow]=b[icol];
b[icol]=dum;
}
indxr[i]=irow;
indxc[i]=icol;
if(a[icol*n+icol]==0.0)
{
cout<< "singular matrix.";
}
pivinv=1.0/(a[icol*n+icol]);
a[icol*n+icol]=1.0;
for(l=0;l<=n-1;l++)
{
a[icol*n+l]=a[icol*n+l]*pivinv;
}
b[icol]=b[icol]*pivinv;
for(ll=0;ll<=n-1;ll++)
{
if(ll!=icol)
{
dum=a[ll*n+icol];
a[ll*n+icol]=0.0;
for(l=0;l<=n-1;l++)
{
a[ll*n+l]=a[ll*n+l]-a[icol*n+l]*dum;
}
b[ll]=b[ll]-b[icol]*dum;
}
}
}
for(l=n-1;l<=0;l--)
{
if(indxr[l]!=indxc[l])
{
for(k=0;k<=n-1;k++)
{
dum=a[k*n+indxr[l]];
a[k*n+indxr[l]]=a[k*n+indxc[l]];
a[k*n+indxr[l]]=dum;
}
}
}
}
更多追问追答
追问
这是c?看不懂。。
追答
这个是c++的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2014-03-29
展开全部
sgfjdklkjhdkgjdgjgdjhngfbdgbdfgugiug
追问
啥啊这是
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式