C语言解线性方程组.doc
上传人:sy****28 上传时间:2024-09-11 格式:DOC 页数:3 大小:29KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

C语言解线性方程组.doc

C语言解线性方程组.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

//求线性方程组的解,化成除对角线外其余的元素都为0#include<stdio.h>intmain(){inti,j,n,m,r;floata[50][50],k,det=1;A:printf("输入方程组个数m=");scanf("%d",&m);printf("输入未知数个数n=");scanf("%d",&n);if(m==n){printf("输入线性方程组的系数和常数组成的矩阵\n");//输入矩阵for(i=0;i<m;i++){for(j=0;j<n+1;j++)scanf("%f",&a[i][j]);}printf("您输入的矩阵为:\n");for(i=0;i<m;i++){for(j=0;j<n+1;j++)printf("%4.2f\t",a[i][j]);printf("\n");}//用极小数代替矩阵中的0元素for(i=0;i<m;i++){for(j=0;j<n;j++){if(a[i][j]==0.0)a[i][j]=1e-10;}}//求解第一步化为下上角矩阵for(i=1;i<m;i++){for(j=0;j<i;j++){k=-a[i][j]/a[j][j];//printf("%4.2f\t",k);for(r=0;r<n+1;r++){a[i][r]=k*a[j][r]+a[i][r];}}}//求行列式for(i=0;i<m;i++)det*=a[i][i];printf("行列式:det=%4.2f\n",det);if(det!=0){printf("上三角矩阵如下:\n");for(i=0;i<m;i++){for(j=0;j<n+1;j++)printf("%4.2f\t",a[i][j]);printf("\n");}//求解第二步化为上三角矩阵printf("消去右上角元素:\n");for(i=m-2;i>=0;i--){for(j=n-1;j>=i+1;j--){k=-a[i][j]/a[j][j];for(r=0;r<n+1;r++){a[i][r]=k*a[j][r]+a[i][r];}}}for(i=0;i<m;i++){for(j=0;j<n+1;j++){printf("%4.2f\t",a[i][j]);}printf("\n");}//把对角线上的元素化为1floats=1.0;for(i=0;i<m;i++){s=a[i][i];for(j=0;j<=n;j++){a[i][j]=a[i][j]/s;}}//输出结果printf("矩阵最终运算结果:\n");for(i=0;i<m;i++){for(j=0;j<n+1;j++){printf("%4.2f\t",a[i][j]);}printf("\n");}//分析结果printf("解得:\n");for(i=0;i<m;i++){printf("x%d=%4.2f\n",i,a[i][n]);}}else{printf("该矩阵的行列式det=0,没有解。\n");}}else{printf("输入错误,该方程没有准确的解,请重新输入。\n");gotoA;}return0;}