#include<iostream> #include<string> #include<cmath> #include<vector> using namespace std; class matrix{ private: int row; int coloumn; double * x; public: matrix(); matrix(int nrow,int ncol); double * gaussElimination(double **a , double *b,matrix & u); ~matrix(); }; matrix::matrix() { row=0 ; coloumn=0; x=NULL; } matrix::~matrix() {delete x;} matrix::matrix(int nrow,int ncol) { row=nrow; coloumn= ncol; for (int i=0;i<row;i++) {x=new double [row+1];} } double * matrix:: gaussElimination (double ** a,double *b,matrix & u) { int m,n,i,j,k; m=u.row; n=u.coloumn; a=new double * [m+1]; b=new double [m+1]; for (i=1;i<n;i++) { a[i]=new double [n+1]; } // row operations double Sum,ratio; for (k=1;k<=m-1;k++) for (i=k+1;i<=m;i++) { ratio=a[i][k]/a[k][k]; for (j=1;j<=m;j++) a[i][j] -= ratio*a[k][j]; b[i] -= ratio*b[k]; } // backward substitutions for (i=m;i>=1;i--) { Sum=0; x[i]=0; for (j=i;j<=m;j++) Sum += a[i][j]*x[j]; x[i]=(b[i]-Sum)/a[i][i]; } cout<<endl; return x; for (i=0;i<=m;i++) {delete a[i];} delete a,x,b; } int main(){ const int m=3,n=3; //row,col double **amatrix,*bmatrix; amatrix=new double * [m+1]; bmatrix=new double [m+1]; for (int i=0;i<n;i++) { amatrix[i]=new double [n+1]; } //double amatrix[m][n],bmatrix[m]; for (int j=0;j<m;j++) { bmatrix[0]=2;bmatrix[1]=10;bmatrix[2]=4; for (int i=0;i<n;i++) { amatrix[0][0]=10;amatrix[0][1]=2;amatrix[0][2]=3; amatrix[1][0]=2;amatrix[1][1]=1;amatrix[1][2]=2; amatrix[2][0]=3;amatrix[2][1]=50;amatrix[2][2]=2; } } matrix matrix1; matrix(); matrix(m,n); for (int i=0;i<m;i++) {cout<<matrix1.gaussElimination(amatrix,bmatrix,matrix1)<<endl;} for (int i=0;i<=m;i++) {delete amatrix[i];} delete amatrix,bmatrix; }
main
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)