Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Saddiel
7 / 7 / 0
Регистрация: 02.11.2012
Сообщений: 152
#1

Определение матрицы на ортонормированность - C++

02.02.2013, 21:28. Просмотров 819. Ответов 3
Метки нет (Все метки)

Здравствуйте уважаемые форумчане. Подскажите в решении задачки пожалуйста.
Определить, является ли заданная матрица ортонормированной, т.е скалярное произведение каждой пары различных строк (столбцов) нулю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.02.2013, 21:28     Определение матрицы на ортонормированность
Посмотрите здесь:

Определение обратной матрицы - C++
Помогите, задали в универе написать программку в С++ по определении обратной матрицы, циклический алгоритм

Определение ортогональной матрицы (проверить) - C++
проверьте пожалуйста,может что-то не то, определение ортогональной матрицы #include <vcl> #include <iostream> #include <conio> ...

Определение максимальных и минимальных значений матрицы" На С++ - C++
Хто знае як робити будь-ласка допоможіть))ЮУду вдячна))):cry:

Определение количества столбцов матрицы, состоящих из положительных элементов - C++
Доброго времени суток. Совсем недавно начал осваивать язык С и попалась такая задача: В прямоугольной матрице определить количество...

Определение матрицы смежности графа по заданной матрице инцидентности - C++
Доброй ночи :) Изучаю графы, написал фукнцию для конвертации матрицы инцидентности в матрицу смежности, а наоборот не выходит. ...

Определение суммы минимальных элементов по всем строкам прямоугольной матрицы - C++
#include <iostream> #include <conio.h> #include <math.h> #include <time.h> #include <stdlib.h> #include <malloc.h> using...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Михан
8 / 8 / 1
Регистрация: 05.11.2009
Сообщений: 74
03.02.2013, 00:34     Определение матрицы на ортонормированность #2
Немного конкретики не помешало бы. Например: какую матрицу вы хотите видеть?(размеры). Как вы ее собираетесь заполнять?(Рандомно или в ручную)
Михан
8 / 8 / 1
Регистрация: 05.11.2009
Сообщений: 74
03.02.2013, 00:50     Определение матрицы на ортонормированность #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
 
/*
 
* Функция выполняет скалярное перемножение твух строк матрицы
 
* m - колличество столбцов в матрице
 
* i - номер первой перемножаемой строки
 
* j - номер второй перемножаемлй строки
 
* k - интератор столбца
 
* array - проверяемый массив
 
* s - сумма произведений пар элементов
 
* Функция возвращает значение переменной s
 
*/
 
double summa(double array[50][50], int m, int i, int j);
 
/*
 
* Функция выполнят проверку ортонормированности матрицы
 
* n - колличество строк в матрице
 
* i - интератор основной строки
 
* j - интератор второй строки
 
* array - проверяемый массив
 
* s - значение, которое возвращает функция summa,
 
* обозначающее результат перемножения двух строк
 
* Функция возвращает true, если матрица ортонормированна
 
* и false в противоположном случае
 
*/
 
bool proverka (double array[50][50], int n, int m);
 
int main()
 
{
     setlocale(LC_ALL,"Russian");
 
double array[50][50]={0};
 
int n=0,m=0;//максимальное количество строк и столбцов
 
bool otvet=0;//булевская переменная, отображающая результат проверки массива
 
cout << "Введите число строк" << endl;
 
cin >> n;// Вводим колличество строк
 
/*если количество строк больше, чем максимальное количество элементов,
 
выводим сообщение о превышении максимального значения и завершаем работу программы */
 
if (n>50||n<2){
 
cout << "Размер матрицы является несоответствующим" << endl;
 
return 0;}
 
cout << "Введите число столбцов" << endl;
 
cin >> m;// Вводим колличество столбцов
 
/*если количество столбцов больше, чем максимальное количество элементов,
 
выводим сообщение о превышении максимального значения и завершаем работу программы */
 
if (m>50||m<2){
 
cout << "Размер матрицы является несоответствующим" << endl;
 
return 0;}
 
cout << "Введите элементы матрицы" << endl;
 
//Осуществляем ввод элементов массива
 
for(int i=0;i<n;i++)
 
{
 
for(int k=0;k<m;k++)
 
cin >> array[i][k];
 
cout << endl;
 
}
 
otvet=proverka (array, n, m);//Вызывает функцию проверки и возвращаемое значение присваеваем булевской переменной otvet
 
//Выводим сообщение о результате проверки
 
if (otvet==true)
 
cout << "Матрица ортонормирована";//Выводим сообщение об ортонормированности матрицы
 
else cout << "Матрица не ортонормирована";//Выводим сообщение о том, что матрица не ортонормарованна
 
getch();
 
return 0;
 
}
 
bool proverka (double array[50][50], int n, int m)
 
{
 
int i=0, j=0;
 
double s=0;
 
// начало проверяющего цикла где сначала проверяем строки с 0 до n-1
 
for (i=0; i<n; i++){
 
// передаем дополнительной строке значение основной, для проверки скалярного произведения строки саму на себя
 
j=i;
 
s=summa(array, m, i, j);
 
// проверка условия
 
if (s!=1)
 
// если сумма не равна 1 то возвращаем false
 
return false;
 
// перебираем дополнительные строки начиная с i + 1
 
for (j=i+1; j<n; j++){
 
s=summa(array, m, i, j);
 
// проверка условия
 
if (s!=0)
 
// если сумма не равна 0 то возвращаем false
 
return false;}}
 
// после окончания проверки возврашем true
 
return true;
 
}
 
double summa(double array[50][50], int m, int i, int j)
 
{
 
double s=0;
 
for (int k=0; k<m; k++)
 
// суммируем произведение пар элементов
 
s+=array[i][k]*array[j][k];
 
// в конечном итоге возвращаем результат скалярного произведения двух строк
 
return s;
 
}
Миниатюры
Определение матрицы на ортонормированность   Определение матрицы на ортонормированность  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2013, 09:32     Определение матрицы на ортонормированность
Еще ссылки по теме:

Определение номера строки квадратной матрицы, сумма элементов которой максимальна - C++
Написать программу, которая определяет номер строки квадратной матрицы, сумма элементов которой максимальна. В C++ пожалуйста

Представить определение функции, позволяющей переставить местами элементы указанной строки и побочной диагонали квадратной матрицы - C++
Представить определение функции, позволяющей переставить местами элементы указанной строки и побочной диагонали квадратной матрицы....

Преобразование матрицы (удалить из матрицы столбец с наибольшей по модулю суммой элементов) - C++
Всем привет, есть программа для ввода матрицы и вывода на экран. Нужно удалить из матрицы столбец с наибольшей по модулю суммой элементов. ...

Алгоритм обработки матрицы: Нахождение максимального элемента матрицы и его номера. - C++
Алгоритм обработки матрицы: Нахождение максимального элемента матрицы и его номера.

Поменять большие элементы в строке матрицы с маленькими элементами этой же матрицы - C++
Дана мне задача надо заменить большие элементы в строке матрицы с маленькими элементами этой же матрицы. Помогите пацаны

Сформировать одномерный массив из диагональных элементов матрицы. Найти след матрицы - C++
Для заданной квадратной матрицы сформировать одномерный массив из ее диагональных элементов. Найти след матрицы, суммируя элементы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Saddiel
7 / 7 / 0
Регистрация: 02.11.2012
Сообщений: 152
03.02.2013, 09:32  [ТС]     Определение матрицы на ортонормированность #4
Цитата Сообщение от Михан Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include <iostream>
#include <conio.h>
#include <iomanip>
using namespace std;
 
/*
 
* Функция выполняет скалярное перемножение твух строк матрицы
 
* m - колличество столбцов в матрице
 
* i - номер первой перемножаемой строки
 
* j - номер второй перемножаемлй строки
 
* k - интератор столбца
 
* array - проверяемый массив
 
* s - сумма произведений пар элементов
 
* Функция возвращает значение переменной s
 
*/
 
double summa(double array[50][50], int m, int i, int j);
 
/*
 
* Функция выполнят проверку ортонормированности матрицы
 
* n - колличество строк в матрице
 
* i - интератор основной строки
 
* j - интератор второй строки
 
* array - проверяемый массив
 
* s - значение, которое возвращает функция summa,
 
* обозначающее результат перемножения двух строк
 
* Функция возвращает true, если матрица ортонормированна
 
* и false в противоположном случае
 
*/
 
bool proverka (double array[50][50], int n, int m);
 
int main()
 
{
     setlocale(LC_ALL,"Russian");
 
double array[50][50]={0};
 
int n=0,m=0;//максимальное количество строк и столбцов
 
bool otvet=0;//булевская переменная, отображающая результат проверки массива
 
cout << "Введите число строк" << endl;
 
cin >> n;// Вводим колличество строк
 
/*если количество строк больше, чем максимальное количество элементов,
 
выводим сообщение о превышении максимального значения и завершаем работу программы */
 
if (n>50||n<2){
 
cout << "Размер матрицы является несоответствующим" << endl;
 
return 0;}
 
cout << "Введите число столбцов" << endl;
 
cin >> m;// Вводим колличество столбцов
 
/*если количество столбцов больше, чем максимальное количество элементов,
 
выводим сообщение о превышении максимального значения и завершаем работу программы */
 
if (m>50||m<2){
 
cout << "Размер матрицы является несоответствующим" << endl;
 
return 0;}
 
cout << "Введите элементы матрицы" << endl;
 
//Осуществляем ввод элементов массива
 
for(int i=0;i<n;i++)
 
{
 
for(int k=0;k<m;k++)
 
cin >> array[i][k];
 
cout << endl;
 
}
 
otvet=proverka (array, n, m);//Вызывает функцию проверки и возвращаемое значение присваеваем булевской переменной otvet
 
//Выводим сообщение о результате проверки
 
if (otvet==true)
 
cout << "Матрица ортонормирована";//Выводим сообщение об ортонормированности матрицы
 
else cout << "Матрица не ортонормирована";//Выводим сообщение о том, что матрица не ортонормарованна
 
getch();
 
return 0;
 
}
 
bool proverka (double array[50][50], int n, int m)
 
{
 
int i=0, j=0;
 
double s=0;
 
// начало проверяющего цикла где сначала проверяем строки с 0 до n-1
 
for (i=0; i<n; i++){
 
// передаем дополнительной строке значение основной, для проверки скалярного произведения строки саму на себя
 
j=i;
 
s=summa(array, m, i, j);
 
// проверка условия
 
if (s!=1)
 
// если сумма не равна 1 то возвращаем false
 
return false;
 
// перебираем дополнительные строки начиная с i + 1
 
for (j=i+1; j<n; j++){
 
s=summa(array, m, i, j);
 
// проверка условия
 
if (s!=0)
 
// если сумма не равна 0 то возвращаем false
 
return false;}}
 
// после окончания проверки возврашем true
 
return true;
 
}
 
double summa(double array[50][50], int m, int i, int j)
 
{
 
double s=0;
 
for (int k=0; k<m; k++)
 
// суммируем произведение пар элементов
 
s+=array[i][k]*array[j][k];
 
// в конечном итоге возвращаем результат скалярного произведения двух строк
 
return s;
 
}
вы прям Бог. спасибо большое
Yandex
Объявления
03.02.2013, 09:32     Определение матрицы на ортонормированность
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru