:高斯消元法求解线性方程组:在线性代数中,学习过用高斯消元法求解线性方程组,用类来实现该方法,并在主函数中进行测试;:通常应用高斯消元法的时候,不会直接写出方程组的等式来消去未知数,反而会使用矩阵来计算,将其转化为行阶梯式矩阵,所以程序的算法即线性代数中的矩阵变换为行阶梯式矩阵步骤,所以用一个二维数组存放系数矩阵,一个一维数组存放解值。(数据和函数);//#pragmaonce#include<cmath>#include<iostream>#defineN100usingnamespacestd;classgauss{private:doublea[N][N],b[N];public:gauss(void);voidsetvalue(int);~gauss(void);};//#include""gauss::gauss(void){}voidgauss::setvalue(intn){inti,j,k;doublea[N][N];cout<<"请输入"<<n<<"方程组(未知数系数及等号右边常数):"<<endl;for(i=1;i<=n;i++)for(j=1;j<=n+1;j++)cin>>a[i][j];doubleo,b[N];for(i=1;i<=n;i++)for(j=i+1;j<=n;j++)if(fabs(a[j][i])>1e-7){o=a[i][i]/a[j][i];for(k=i;k<=n+1;k++)a[j][k]=a[j][k]*o-a[i][k];}for(i=n;i>0;i--){b[i]=a[i][n+1]/a[i][i];for(j=i-1;j>0;j--)a[j][n+1]=a[j][n+1]-b[i]*a[j][i];}cout<<"解得:"<<endl;for(inti=1;i<=n;i++)cout<<b[i]<<endl;}gauss::~gauss(void){}////#include<iostream>#include<cmath>#include""usingnamespacestd;voidmain(){intn;cout<<"请输入未知数个数:"<<endl;cin>>n;gaussm;(n);};高斯法的编程实现if(fabs(a[j][i])>1e-7){o=a[i][i]/a[j][i];for(k=i;k<=n+1;k++)a[j][k]=a[j][k]*o-a[i][k];}for(i=n;i>0;i--){b[i]=a[i][n+1]/a[i][i];for(j=i-1;j>0;j--)a[j][n+1]=a[j][n+1]-b[i]*a[j][i];}:编写时需细心if(fabs(a[j][i])>1e-7)这句需要的是绝对值大于0因为要考虑系数为负数的情况,而double型判断大于0是要用一个极小数。:C++编译器自带的四则运算对于数据的范围是有要求,对于位数很高的数据的四则运算就无能为力,例如,12378456179787565453232321218784545121123132121132178767655657与11231548785127851的和。请用设计一个类完成无符号大整数的四则运算,加减法是必须实现的,乘除法选做。提示::大整数超出了存储范围,所以定义为string型,而运算时需要整数型变量,所以数据需要进行转换存入数组中,进行加法时考虑进位,为其设一个数组。进行减法要考虑借位。(数据和函数);//#pragmaonce#include<iostream>#include<string>usingnamespacestd;classjisuan{private:stringstr1,str2;public:jisuan(void);jisuan(string,string);voidsetvalues(string,string);voidyunsuan(string,string);~jisuan(void);};//#include""jisuan::jisuan(void){}jisuan::jisuan(strings,stringt){str1=s;str2=t;}voidjisuan::setv
无符号大整数计算器 来自淘豆网m.daumloan.com转载请标明出处.