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

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

Войти
Регистрация
Восстановить пароль
 
leha-demi
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 125
#1

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

07.04.2011, 21:52. Просмотров 698. Ответов 6
Метки нет (Все метки)

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

Проверить матрицу на выполнения условия - C++
Проверить матрицу на выполнения условия AT = -A Помогите, пожалуйста. Не знаю как сделать

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

Проверить, можно ли получить вторую матрицу из первой применением конечного числа - C++
Для двух заданных матриц A(n, n) и B(n, n) проверить, можно ли получить вторую из первой применением конечного числа (не более четырех)...

Получить матрицу из чисел, заполняющих матрицу по линиям, параллельным главной диагонали - C++
Получить матрицу A=(aij), i,j=1..n, n<=100, элементами которой является ряд натуральных чисел, заполняющих матрицу по линиям параллельным...

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

Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке - C++
Заполнить матрицу случайными числами. Вернуть матрицу на 90o по часовой стрелке.

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
leha-demi
0 / 0 / 0
Регистрация: 06.11.2010
Сообщений: 125
09.04.2011, 20:22  [ТС] #2
Аууу, пож. помогите...=(
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 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
бжни
2447 / 1652 / 84
Регистрация: 14.05.2009
Сообщений: 7,162
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Д
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 << " " ;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2011, 05:12
Привет! Вот еще темы с ответами:

Заполнить матрицу случайными числами. Развернуть матрицу на 90(градусов) против часовой стрелки - C++
Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой стрелки

Сформировать квадратную матрицу; транспонировать матрицу и инвертировать порядок элементов каждой ее строки - C++
Заданы два одномерных массива одинаковой длины: R и S.Сформировать квадратную матрицу A, каждый элемент которой, что находится в i-той...

Заполнить матрицу 9x9 случайными числами. Отобразить матрицу симметрично относительно главной диагонали - C++
Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали

Отсортировать матрицу и снова сделать из нее начальную матрицу - C++
значит условие таково: с клавиатуры вводится ряд чисел, его нужно занести в матрицу 6х6, потом отсортировать матрицу и снова сделать из нее...


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

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

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