Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Program C++ untuk mencari vektor dan jejak biasa

Program C++ untuk mencari vektor dan jejak biasa

WBOY
WBOYke hadapan
2023-09-09 16:41:091036semak imbas

Program C++ untuk mencari vektor dan jejak biasa

Tatasusunan atau matriks dua dimensi sangat berguna dalam beberapa aplikasi. Matriks mempunyai baris dan lajur dan menyimpan nombor di dalamnya. Dalam C++, kita juga boleh menggunakan tatasusunan berbilang dimensi untuk menentukan matriks dua dimensi. Dalam artikel ini, kita akan melihat cara mengira norma dan surih matriks tertentu menggunakan C++.

Normal ialah punca kuasa dua hasil tambah semua unsur dalam matriks. Surih ialah jumlah unsur yang terdapat dalam pepenjuru utama. Mari kita lihat algoritma dan perwakilan kod C++.

Matriks biasa

$begin{bmatrix} 5 & ​​1 & 8 aksara baris baharu 4 & 3 & 9 aksara baris baharu 2&7&3 tamat{bmatrix},$

Sum of all elements: (5 + 1 + 8 + 4 + 3 + 9 + 2 + 7 + 3) = 42
Normal: (Square root of the sum of all elements) = √42 = 6.48

Dalam contoh di atas, kami mengambil matriks 3 x 3, di sini kami mendapat jumlah semua elemen dan kemudian mengambil punca kuasa duanya. Mari kita lihat algoritma untuk pemahaman yang lebih baik.

Algoritma

  • Baca matriks M sebagai input
  • Pertimbangkan M dengan n baris dan n lajur
  • Jumlah: = 0
  • Untuk saya dari 1 hingga n, lakukan
    • Untuk j dari 1 hingga n, lakukan perkara berikut
      • jumlah := jumlah + M[ i ][ j ]​​i>
    • Tamatkan gelung
  • Tamatkan gelung
  • res := jumlah punca kuasa dua
  • Kembalikan hasil

Contoh

#include <iostream>
#include <cmath>
#define N 5
using namespace std;
float solve( int M[ N ][ N ] ){
   int sum = 0;
   for ( int i = 0; i < N; i++ ) {
      for ( int j = 0; j < N; j++ ) {
         sum = sum + M[ i ][ j ];
      }
   }
   return sqrt( sum );
}
int main(){
   int mat1[ N ][ N ] = {
      {5, 8, 74, 21, 69},
      {48, 2, 98, 6, 63},
      {85, 12, 10, 6, 9},
      {6, 12, 18, 32, 5},
      {8, 45, 74, 69, 1},
   };
   cout << "Normal of the first matrix is: " << solve( mat1 ) << endl;
   int mat2[ N ][ N ] = {
      {6, 8, 35, 21, 87},
      {99, 2, 36, 326, 25},
      {15, 215, 3, 157, 8},
      {96, 115, 17, 5, 3},
      {56, 4, 78, 5, 10},
   };
   cout << "Normal of the second matrix is: " << solve( mat2 ) << endl;
}

Output

Normal of the first matrix is: 28.0357
Normal of the second matrix is: 37.8418

Jejak Matriks

$begin{bmatrix} 5 & ​​1 & 8 aksara baris baharu 4 & 3 & 9 aksara baris baharu 2&7&3 tamat{bmatrix},$

Sum of all elements in main diagonal: (5 + 3 + 3) = 11 which is
the trace of given matrix

Dalam contoh di atas, kami mengambil matriks 3 x 3 dan di sini kami mendapat jumlah semua elemen pada pepenjuru utama. Jumlah ini ialah surih matriks. Mari kita lihat algoritma untuk pemahaman yang lebih baik.

Algoritma

  • Baca matriks M sebagai input
  • Pertimbangkan M dengan n baris dan n lajur
  • Jumlah: = 0
  • Untuk saya dari 1 hingga n, lakukan
    • jumlah := jumlah + M[ i ][ i ]​​i>
  • Tamatkan gelung
  • Kembalikan jumlah

Contoh

#include <iostream>
#include <cmath>
#define N 5
using namespace std;
float solve( int M[ N ][ N ] ){
   int sum = 0;
   for ( int i = 0; i < N; i++ ) {
      sum = sum + M[ i ][ i ];
   }
   return sum;
}
int main(){
   int mat1[ N ][ N ] = {
      {5, 8, 74, 21, 69},
      {48, 2, 98, 6, 63},
      {85, 12, 10, 6, 9},
      {6, 12, 18, 32, 5},
      {8, 45, 74, 69, 1},
   };
   cout << "Trace of the first matrix is: " << solve( mat1 ) << endl;
   int mat2[ N ][ N ] = {
      {6, 8, 35, 21, 87},
      {99, 2, 36, 326, 25},
      {15, 215, 3, 157, 8},
      {96, 115, 17, 5, 3},
      {56, 4, 78, 5, 10},
   };
   cout << "Trace of the second matrix is: " << solve( mat2 ) << endl;
}

Output

Trace of the first matrix is: 50
Trace of the second matrix is: 26

Kesimpulan

Normal dan jejak adalah kedua-dua operasi matriks. Untuk melaksanakan kedua-dua operasi ini, kita memerlukan matriks segi empat sama (kerana matriks surih persegi diperlukan). Normal hanyalah punca kuasa dua hasil tambah semua unsur yang terdapat dalam matriks, dan surih ialah jumlah unsur yang terdapat pada pepenjuru utama matriks. Matriks ini boleh diwakili menggunakan tatasusunan dua dimensi dalam C++. Di sini kami memberikan dua contoh matriks dengan 5 baris dan 5 lajur (25 elemen secara keseluruhan). Mengakses matriks memerlukan pernyataan gelung dengan operasi pengindeksan. Untuk pengiraan biasa kita perlu mengulangi setiap elemen, jadi dua gelung bersarang diperlukan. Kerumitan program ini ialah O(n2). Untuk pengesanan, kerana kita hanya perlu melihat pepenjuru utama, indeks baris dan indeks lajur akan sama. Jadi hanya satu untuk gelung sudah memadai. Boleh dikira dalam masa O(n).

Atas ialah kandungan terperinci Program C++ untuk mencari vektor dan jejak biasa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam