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

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

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

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

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

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

Определение обратной матрицы - 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
Немного конкретики не помешало бы. Например: какую матрицу вы хотите видеть?(размеры). Как вы ее собираетесь заполнять?(Рандомно или в ручную)
1
Михан
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;
 
}
2
Миниатюры
Определение матрицы на ортонормированность   Определение матрицы на ортонормированность  
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;
 
}
вы прям Бог. спасибо большое
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.02.2013, 09:32
Привет! Вот еще темы с ответами:

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

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

Проверка матрицы на ортонормированность - Pascal
Суть такова: Дана квадратная матрица порядка n(n=10). Определить является данная матрица ортонормированной, т.е. такой, в которой...

Определение симметричности матрицы - Delphi
Люди, кто знает как решить! Прошу помощи! Определить является ли заданная матрица симметричной относительно вертикальной оси. При...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
03.02.2013, 09:32
Ответ Создать тему
Опции темы

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