用Gauss—Jordan消去法求解线性方程AX=b的C++程序

求解矩阵方程组,其中,实验要求:编写一个用Gauss-Jordan消去法求解系数矩阵相同而右端向量不同的m个n阶的线性代数方程组的子程序。在主程序中调用所编写的子程序求解... 求解矩阵方程组 ,其中 , 实验要求:编写一个用Gauss-Jordan消去法求解系数矩阵相同而右端向量不同的m个n阶的线性代数方程组的子程序。在主程序中调用所编写的子程序求解,输出解向量 。 展开
 我来答
江西的罗罗
2011-11-23 · TA获得超过167个赞
知道答主
回答量:84
采纳率:0%
帮助的人:74.2万
展开全部
#include<math.h>
#include<process.h>
#include<stdio.h>
#define kk 50 //定义最大方程元数
int n;
void changer(double *p,double *q)
{
int i;
double temp;
for(i=0;i<n;i++)
{
temp=*(p+i);
*(p+i)=*(q+i);
*(q+i)=temp;
}
} //交换行元素的函数
main()
{

int i,j,k,s;
double A[kk][kk],r,l[kk][kk],b[kk],u,temp;
aa: printf("输入的方程元数:\n");
scanf("%d",&n);
printf("请输入方程系数矩阵:\n");
for(i=0;i<n;i++)
for(j=0;j<n;j++)
scanf("%lf",&A[i][j]);
printf("请输入右边向量:\n");
for(i=0;i<n;i++)
scanf("%lf",&b[i]);
for(k=0;k<n-1;k++)
{
s=k;
r=fabs(A[k][k]);
for(i=k;i<n;i++)
if(r<fabs(A[i][k]))
{
r=fabs(A[i][k]);
s=i;
}//获取主元
if(s!=k)
{
changer(*(A+k),*(A+s));//交换行元素
temp=b[k];b[k]=b[s];b[s]=temp; //右边向量的交换
}
for(i=k+1;i<n;i++)
{
l[i][k]=A[i][k]/A[k][k];//计算消去系数
for(j=k;j<n;j++)
A[i][j]=A[i][j]-l[i][k]*A[k][j];
b[i]=b[i]-l[i][k]*b[k];
}//消元过程
}
if(A[k][k]<0.0001)
{
printf("系数矩阵是非奇异矩阵!\n");
printf("所以:方程无唯一解!\n");
printf("请问是否?\n");
printf("退出请输入1\n");
printf("要继续请输入任意非1的整数\n");
int g;
scanf("%d",&g);
if(g!=1)goto aa;
else exit(1);
}//判断系数矩阵的奇异性
for(i=n-1;i>=0;i--)
{
u=0;
for(j=i+1;j<n;j++)
u=u+A[i][j]*b[j];
b[i]=(b[i]-u)/A[i][i];
}
printf("最后得方程的根为:\n");
for(i=0;i<n;i++)
printf("x%d=%lf\n",i+1,b[i]);

system("pause");
return 0;
}
以前弄的,仅供参考
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
厦门鲎试剂生物科技股份有限公司
2023-08-01 广告
BG试验又称为G试验,是一种基于真菌细胞壁成分的血清学试验。BG试验检测的是真菌细胞壁中的葡聚糖成分。操作步骤如下:1. 左键单击【View】2. 左键单击【Residual Diagnostics】3. 左键单击【Series Corre... 点击进入详情页
本回答由厦门鲎试剂生物科技股份有限公司提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式