Умножение квадратных матриц в С++
Матрицы можно умножать, если они согласованы. Две квадратные матрицы согласованы, так как у них одинаковое число строк в первой матрице и число столбцов во второй. Чтобы умножить две матрицы берут первую строку первой матрицы и умножают на первый столбец второй матрицы почленно. А получившиеся произведения складывают и результат ставят на место первого элемента в первой строке в новой (результирующей матрице). Затем эту эе первую строку умножают также на второй столбец во второй матрице. Результат на место второго элемента в первой строке в новой матрице. И так, пока не перемножат первую сроку первой матрицы на все столбцы второй. Затем берут вторую строку первой матрицы и повторяют процедуру со всеми столбцами второй. А результат пишется построчно во вторую строку результирующей матрицы. Также берут третью строку и так далее пока все строки не будут умножены на все столбцы. В результате получится такая же квадратная мтарица как и две исходные, но с новыми значениями элементов. Ниже листинг программы для умножения двух квадратных матриц.
#includeusing namespace std; int main(){ //Размер матриц: const int N=3; //Индексные переменные: int i,j,k; //Первая матрица: double A[N][N]; //Вторая матрица: double B[N][N]; //Третья матрица (результат): double C[N][N]; //Ввод (построчный) элементов первой матрицы: cout<<"Matrix A:\n"; for(i=0; i < N; i++) for(j=0; j < N; j++) cin >> A[i][j]; //Ввод (построчный) элементов первой матрицы: cout << "Matrix B:\n"; for(i=0; i < N; i++) for(j=0; j < N; j++) cin>>B[i][j]; //Вычисление произведения матриц: cout << "Matrix C=AB:\n"; for(i=0; i < N; i++){ for(j=0; j < N; j++){ C[i][j]=0; for(k=0; k < N; k++) C[i][j]+=A[i][k]*B[k][j]; //Вывод значения элемента на экран: cout << C[i][j] << " "; } cout << endl; } return 0; }