C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

行列の基底と次元を見つけるためのC++プログラム


これは、行列の基底と次元を見つけるためのC++プログラムです。

アルゴリズム

Begin
   Function determinant() :
   It calculates determinant of the matrix.
   /*
      Arguments:
      n = number of elements.
      matrix[10][10] = input matrix.
   */
   declare the submatrix submatrix[10][10].
   //Body of the function:
   if (n == 2)
      return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] * matrix[0][1]))
   else
      Make a for loop c = 0 to n-1
         Declare and initialize submati = 0, submatj.
         Make a For loop i = 1 to n-1
         initialize subj = 0
         Make a For loop i = 1 to n-1
            if (j == c)
               continue
            submatrix[submati][submatj] = matrix[i][j].
            Increment subj.
         increment submati.
      Compute d = d + (pow(-1, c) * matrix[0][c] * determinant(n- 1, submatrix)).
End
を計算します。

#include<iostream>
#include<math.h>
using namespace std;
double d = 0;
double determinant(int n, double matrix[10][10]) {
   double submatrix[10][10];
   if (n == 2)
      return ((matrix[0][0] * matrix[1][1]) - (matrix[1][0] *
      matrix[0][1]));
   else {
      for (int c = 0; c < n; c++) {
         int submati = 0,submatj;
         for (int i = 1; i < n; i++) {
            int subj = 0;
            for (int j = 0; j < n; j++) {
               if (j == c)
                  continue;
               submatrix[submati][submatj] = matrix[i][j];
               subj++;
            }
            submati++;
         }
         d = d + (pow(-1, c) * matrix[0][c] * determinant(n -
         1, submatrix));
      }
   }
   return d;
}
int main(int argc, char **argv) {
   cout << "Enter the number of elements:\n";
   int n;
   cin >> n;
   double matrix[10][10];
   cout << "Enter elements one by one:\n";
   for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
         cin >> matrix[j][i];
      }
   }
   d = determinant(n, matrix); //call the function
   if (d != 0)
      cout << "The elements form the basis of R" << n << " as the determinant is non-zero";
   else
      cout << "The elements don't form the basis of R" << n << " as the determinant is zero";
}

出力-1

Enter the number of elements:
3 Enter elements one by one:
7 6 1
2 3 4
5 8 9
The elements form the basis of R3 as the determinant is
non-zero

出力-2

Enter the number of elements:
4 Enter the elements one by one:
7 6 1 4
2 3 5 4
9 8 2 3
2 1 3 0
The elements don't form the basis of R4 as the
determinant is zero

  1. C++で対角行列とスカラー行列をチェックするプログラム

    行列M[r][c]が与えられた場合、「r」は行数を示し、「c」はr=cが正方行列を形成するような列数を示します。与えられた正方行列が対角であるかどうかを確認する必要があります およびスカラー 対角の場合、行列かどうか およびスカラー マトリックスを作成し、結果にyesを出力します。 対角行列 正方行列m[][]は、主対角を除く要素がゼロの場合にのみ対角行列になります。 下の図のように- ここで、赤の要素は主対角線であり、主対角線がゼロであることを除いてゼロ以外の残りの要素であり、対角行列になっています。 。 例 Input: m[3][3] = { {7, 0, 0},  

  2. 商と剰余を見つけるためのC++プログラム

    商と剰余は、配当と除数とともに除算の一部です。 私たちが割る数は配当として知られています。被除数を除算する数は除数として知られています。除算後に得られた結果は商と呼ばれ、残った数が余りです。 dividend = divisor * quotient + remainder 例:15を7で割ると、2が商になり、1が余りになります。ここで、15は被除数、7は除数です。 15 = 7 * 2 + 1 商と剰余を見つけるプログラムは次のとおりです。 例 #include <iostream> using namespace std; int main() {   &nbs