
c++结果为什么输出一个很大的负数
c++高斯主元解方程,请帮忙看一下错哪了,结果是很大的负数。。下面是代码。。#include<math.h>#include<iostream.h>#include<st...
c++高斯主元解方程,请帮忙看一下错哪了,结果是很大的负数。。
下面是代码。。
#include<math.h> #include<iostream.h> #include<stdio.h>void shuruxishu(double hanglieshi[200][200],int n) //输入系数,n是行数{ int i,j; for(i=0;i<n;i++) //输入行 { for(j=0;j<n+1;j++) { scanf("%f",&hanglieshi[i][j]); //输入列 } } return; } void xuanzezhuyuan(double hanglieshi[200][200],int n ) //选择列主元,n是行数,m是列数 { double max=0; int i; max=hanglieshi[0][0]; //max是第一列所有数里的最大数 for(i=1;i<n;i++) { if( fabs(hanglieshi[i][0]) > fabs(max) ) {max=hanglieshi[i][0]; } } } void xiaoyuan(double hanglieshi[200][200], int n) //每列消元,系数行列式化为1{ int j,i; for(j=1;j<n;j++) { for(i=1;i<n;i++) { for(i=0;i<n;i++) { for(j=0;j<n+1;j++) { hanglieshi[i+1][j]=hanglieshi[i+1][j]-hanglieshi[i+1][j]/hanglieshi[i][i]*hanglieshi[i][j]; } } } } for(i=0;i<n;i++) {for(j=0;j<n+1;j++) {hanglieshi[i][j]=hanglieshi[i][j]/hanglieshi[i][i]; }}} void result(double hanglieshi[200][200], int n) {double a[200]; int i,j,e; a[n]=hanglieshi[n][n+1]; for(i=n;i>=0;i--){for(j=n;j>=0;j--) {a[i-1]=hanglieshi[i][n+1]-hanglieshi[i][j]*a[i]; } } for(e=0; e<n; e++) { cout<< "x"<< e+1 << "=" << a[e] << endl; } } void main() { double hanglieshi[200][200]; int n ; cin>>n; shuruxishu(hanglieshi,n); //输入系数 xuanzezhuyuan(hanglieshi,n ); //选择主元 xiaoyuan(hanglieshi, n ); result(hanglieshi,n ); //求解} 展开
下面是代码。。
#include<math.h> #include<iostream.h> #include<stdio.h>void shuruxishu(double hanglieshi[200][200],int n) //输入系数,n是行数{ int i,j; for(i=0;i<n;i++) //输入行 { for(j=0;j<n+1;j++) { scanf("%f",&hanglieshi[i][j]); //输入列 } } return; } void xuanzezhuyuan(double hanglieshi[200][200],int n ) //选择列主元,n是行数,m是列数 { double max=0; int i; max=hanglieshi[0][0]; //max是第一列所有数里的最大数 for(i=1;i<n;i++) { if( fabs(hanglieshi[i][0]) > fabs(max) ) {max=hanglieshi[i][0]; } } } void xiaoyuan(double hanglieshi[200][200], int n) //每列消元,系数行列式化为1{ int j,i; for(j=1;j<n;j++) { for(i=1;i<n;i++) { for(i=0;i<n;i++) { for(j=0;j<n+1;j++) { hanglieshi[i+1][j]=hanglieshi[i+1][j]-hanglieshi[i+1][j]/hanglieshi[i][i]*hanglieshi[i][j]; } } } } for(i=0;i<n;i++) {for(j=0;j<n+1;j++) {hanglieshi[i][j]=hanglieshi[i][j]/hanglieshi[i][i]; }}} void result(double hanglieshi[200][200], int n) {double a[200]; int i,j,e; a[n]=hanglieshi[n][n+1]; for(i=n;i>=0;i--){for(j=n;j>=0;j--) {a[i-1]=hanglieshi[i][n+1]-hanglieshi[i][j]*a[i]; } } for(e=0; e<n; e++) { cout<< "x"<< e+1 << "=" << a[e] << endl; } } void main() { double hanglieshi[200][200]; int n ; cin>>n; shuruxishu(hanglieshi,n); //输入系数 xuanzezhuyuan(hanglieshi,n ); //选择主元 xiaoyuan(hanglieshi, n ); result(hanglieshi,n ); //求解} 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询