Практична робота №2
Тема:Розв‘язування задачі для обчислення матриць засобами мови програмування С++ та засобами Microsoft Excel.
Мета: Навчитися знаходити розв’язок задач з матрицями в Microsoft Excel та на мові програмування С++.
Завдання:
де
.
.
Скласти алгоритм програми для обчислення матриць згідно завдання свого варіанту.
Написати програму мовою С++ для обчислення матриць згідно завдання свого варіанту.
Розв‘язати цю ж задачу засобами Microsoft Excel.
Порівняти отримані результати. Зробити висновки.
Оформити результати роботи у редакторі Microsoft Word.
Теоретичні відомості
Обчислення матриць в Microsoft Excel
Табличний процесор MS Excel містить великий набір математичних функцій які використовуються для різноманітних обчислень. Розглянемо декілька функцій для роботи з матрицями:
МУМНОЖ - добуток матриць;
ТРАНСП - транспонування матриці;
МОПРЕД - обчислення визначника матриці;
МОБР- обчислення оберненої матриці.
Розглянемо функцію множення матриць МУМНОЖ. Ця функція повертає добуток матриць (матриця зберігається в масивах). Результатом є масив з таким же числом рядків, як в масиві 1 і з таким же числом стовпців, як масив
Синтаксис: МУМНОЖ(масив1;масив2), де масив 1, масив 2 – масиви, що перемножуються.
Зауваження:
- кількість стовпців аргументу масиву 1 повинна бути такою ж, як кількість рядків аргументу масиву 2, і обидва масиви повинні містити тільки числа;
- масив 1 і масив 2 можуть бути задані як інтервали, масиви констант або посилання;
- якщо, хоча б одна комірка в аргументах порожня або містить текст, або якщо число стовпців в аргументі масиву 1 відрізняється від числа рядків в аргументі масиву 2, то функція МУМНОЖ повертає значення помилки #ЗНАЧ!.
Вигляд розв’язання задачі у Microsoft Excel
Для
початку я внесла деякі значення для
матриці А та В:
А тоді проводила такі операції над ними:
Множення матриці на число (5А)=5*A2:
Вирішення різниці між матрицями , що проводиться таким чином =F2-A8:
Остаточне вирішеня задачі =МУМНОЖ(F8:I11;F8:I11):
Рішення задачі засобами мови програмування С++
Оголошуємо матриці А та В і деякі змінні:
#include <iostream>
#include <math.h>
using namespace std;
void main()
{int i, j, n = 4;
int a[4][4] = { { 1, 0, 5, 2 }, { 5, 3, 1, 3 }, { 7, 4, 6, 1 }, { 6, 2, 2, 7 } };
int b[4][4] = { { 10, 16, 20, 20 }, { 16, 17, 15, 10 }, { 17, 10, 31, 11 }, { 12, 30, 16, 18 } };
Множимо матрицю A на число 5:
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
a[i][j] *= 5;
}
}
Обчислюємо різницю B-5A:
int f[4][4] = { 0 };
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
f[i][j] = b[i][j] - a[i][j];
}
}
Знаходимо значення (B-5A)^2:
int g[4][4] = { 0 };
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
for (int k = 0; k < n; k++)
{
g[i][j] += f[i][k] * f[k][j];
}
}
}
Виводимо результати наших обрахунків на екран:
Виводимо марицю А:
cout << " Matrix A" << endl << endl;
for (i = 0; i<n; i++)
{
for (j = 0; j < n; j++)
{
cout << a[i][j] << "\t";
}
cout << endl;
}
cout << endl;
Виводимо марицю В:
cout << " Matrix B" << endl << endl;
for (i = 0; i<n; i++)
{
for (j = 0; j < n; j++)
{
cout << b[i][j] << "\t";
}
cout << endl;
}
cout << endl;
cout << endl;
Виводимо матрицю 5*А:
cout << "5*A" << endl<<endl;
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
{
cout << a[i][j] << "\t";
}
cout << endl;
}
cout << endl;
Виводимо результат різниці двох матриць В-5*А:
cout << "B-5A" << endl << endl;
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
{
cout << f[i][j] << "\t";
}
cout << endl;
}
cout << endl;
Виводимо результат вирішення задачі:
cout << "(B-5A)^2" << endl << endl;
for (i = 0; i<n; i++)
{
for (j = 0; j<n; j++)
{
cout << g[i][j] << "\t";
}
cout << endl;
}
}
