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

Проверить матрицу на ортоганальность - C++

Восстановить пароль Регистрация
 
leha-demi
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 125
07.04.2011, 21:52     Проверить матрицу на ортоганальность #1
Всем привет=)
Вот такое задание есть: "Проверить матрицу ортоганальная ли она (с помощью функций), то есть скалярные произведения каждого ряда на другой равны о"
Подкиньте идею пож...
Заранее спасибо=)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.04.2011, 21:52     Проверить матрицу на ортоганальность
Посмотрите здесь:

Заполнить матрицу 9x9 случайными числами. Отобразить матрицу симметрично относительно главной диагонали C++
C++ Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки
Получить матрицу из чисел, заполняющих матрицу по линиям, параллельным главной диагонали C++
Вывести матрицу B и из этой матрицы В вычесть единичную матрицу А C++
Сформировать квадратную матрицу; транспонировать матрицу и инвертировать порядок элементов каждой ее строки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
leha-demi
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 125
09.04.2011, 20:22  [ТС]     Проверить матрицу на ортоганальность #2
Аууу, пож. помогите...=(
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
09.04.2011, 20:25     Проверить матрицу на ортоганальность #3
ваши нароботки? хотя бы матрицу сами заполнили
leha-demi
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 125
23.04.2011, 19:52  [ТС]     Проверить матрицу на ортоганальность #4
Вот написал вроде,правильно? У меня вопрос, как проверить если опеределитель равен +1 или -1 то ортогональная, а если нет то не...?Спасибо заранее=)
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
 
void proverka (int **mas)
{int mass[2][2];
 cout << "Vvedite matricu 2*2 -> ";
 for (int i=0;i<2;i++)
 for (int j=0;j<2;j++)
 cin >> mass[i][j];
 {int opr = mass[0,3] - mass [1,2*2-2+1]}
Добавлено через 6 часов 54 минуты
Вот попытался написать, ну не компилируется...Какие ошибки подскажите пож..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int proverka (int **mas, int opr)
{int mass[2][2];
 cout << "Vvedite matricu 2*2 -> ";
 for (int i=0;i<2;i++)
 for (int j=0;j<2;j++)
 cin >> mass[i][j]; // Ввод массива
 {int opr = mass[0,3] - mass [1,2*2-2+1];} // Нахождение определителя
 {if (opr == 1) cout << "Ort";
   else 
       cout << "Ne ort";
 return opr;}}
    
 
void main ()
{int **mass;
 for (int i=0;i<2;i++)
  for (int j=0;j<2;j++)
 {
 mass[i][j]=rand()%100;
 cout << mass[i][j] << " ";}
 proverka (mass);
 int opr;
 cout << opr << " " ;}
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
23.04.2011, 20:05     Проверить матрицу на ортоганальность #5
Цитата Сообщение от leha-demi Посмотреть сообщение
Вот написал вроде,правильно? У меня вопрос, как проверить если опеределитель равен +1 или -1 то ортогональная, а если нет то не...?Спасибо заранее=)
да, но это скорее следствие
определение - то что скалярное произведение столбцов или строк равно нулю
leha-demi
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 125
23.04.2011, 20:44  [ТС]     Проверить матрицу на ортоганальность #6
Спасибо=) А как сделать скалярное произведение строк или столбцов матрицы (функцию)?Извините за наглость=)xД
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2011, 05:12     Проверить матрицу на ортоганальность
Еще ссылки по теме:

Проверить матрицу на выполнения условия C++
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке C++
C++ Непонятно условие задачи: Вывести исходную матрицу, преобразованную матрицу и вектор Х.

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

Или воспользуйтесь поиском по форуму:
Dimaskih
4 / 4 / 0
Регистрация: 01.06.2010
Сообщений: 27
24.04.2011, 05:12     Проверить матрицу на ортоганальность #7
В википедии написано что такое ортогональная матрица-Это матрица которая при умножении на ее транспонированную матрицу даёт единичную матрицу. A*At = E
Что мешает сделать транспонированную матрицу, перемножить их и проверить результат на соответствие единичной матрице?
Или сложнее немного- найти определитель и проверить на равность +(-)1.

Добавлено через 20 минут
Посмотрел Код.
Он ведь на C? тогда понятно почему не компилируется., ошибок миллион. Если задача только для матрицы 2х2 то задача вообще плёвая:
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
include <conio.h>
include <iostream.h>
include <stdio.h>
using namespace std;
int proverka (/*int **mas, int opr*/) 
// вообще непонятно, в прототипе функции два аргумента, в основной функции при вызове один аргумент - Зачем передавать определитель?
{
int mass[2][2];
 cout << "Vvedite matricu 2*2 -> "<<endl;
 for (int i=0;i<2;i++)
 for (int j=0;j<2;j++)
 cin >> mass[i][j]; // Ввод массива
 
int opr = mass[0][0]*mass[1][1] - mass[1][0]*mass[0][1]; // Нахождение определителя
 if ((opr == 1)||(opr==-1)) cout << "Ort";
   else 
           cout << "Ne ort";
return opr;
}
    
 
void main ()
{
/*int **mass;*/// это вообще не понял нафиг нужно, но память не выделена поэтому не работает
 /*for (int i=0;i<2;i++)
  for (int j=0;j<2;j++)
 {
 mass[i][j]=rand()%100;*/
// если в функции задавать матрицу какой тол задавать её в main рандомно и вообще потом передавать в функции если создаешь в ней другой массив?
 //cout << mass[i][j] << " ";}
 int opr = proverka (); // функция возвращает значение а здесь оно ничему не присваивается надо было так int opr = proverka(mass);
 //int opr;
 cout <<endl<< opr << " " ;
}
Yandex
Объявления
24.04.2011, 05:12     Проверить матрицу на ортоганальность
Ответ Создать тему
Опции темы

Текущее время: 02:28. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru