Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 27.04.2010
Сообщений: 36
1

ортогональная матрица

23.11.2010, 05:34. Показов 1587. Ответов 9
Метки нет (Все метки)

Помогите пожалуйста составить программу, проверяющую, является ли матрица А ортогональной
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2010, 05:34
Ответы с готовыми решениями:

Дана квадратная матрица А порядка n. Проверить, является ли матрица единичной.
Ребят,помогите решить задачу "Дана квадратная матрица А порядка n. Проверить, является ли матрица...

Матрица:Даны натуральное число n, действительная матрица размера n х 9. Найти среднее арифметическое: каждого из столбцов
Даны натуральное число n, действительная матрица размера n х 9. Найти среднее арифметическое:...

Доказать, что матрица H ортогональная матрица
Помогите решить

Доказать что матрица повороту есть ортогональная
Мне нужно доказать что матрица пороту есть ортогональная. На википедии так и...

9
Модератор
64059 / 47474 / 32728
Регистрация: 18.05.2008
Сообщений: 115,185
23.11.2010, 06:59 2
Немного теории и пример для теста программы.
http://ru.wikipedia.org/wiki/%... 1%86%D0%B0
Pascal
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
uses crt;
const nmax=20;
      t=0.00001;
var a,b,c:array[1..nmax,1..nmax] of real;
    n,i,j,k,k0,k1:byte;
    x,p:integer;
begin
clrscr;
//создаем матрицу
repeat
write('Размер матрицы A до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы матрицы:');
for i:=1 to n do
for j:=1 to n do
 begin
  write('a[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
writeln('Матрица A:');
for i:=1 to n do
 begin
   for j:=1 to n do
   write(a[i,j]:6:2);
   writeln;
 end;
writeln;
//получаем транспонированную
writeln('Транспонированная матрица At:');
for i:=1 to n do
 begin
   for j:=1 to n do
    begin
     b[i,j]:=a[j,i];
     write(b[i,j]:6:2);
    end;
   writeln;
 end;
writeln;
умножаем исходную не транспонированную
for k:=1 to n do
for j:=1 to n do
   begin
     c[k,j]:=0;
     for i:=1 to n do
       begin
         c[k,j]:=c[k,j]+a[k,i]*b[i,j];
       end;
   end;
writeln('Матрица C=A*At:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(c[i,j]:6:2);
  writeln;
 end;
//преверям что получилось, единичная или нет
k1:=0;k0:=0;
for i:=1 to n do
for j:=1 to n do
if((i=j)and(abs(c[i,j])-1<t))then k1:=k1+1//считаем единицы на главной
else if((i<>j)and(abs(c[i,j])<t))then k0:=k0+1;//ноли не на главной
if(k1=n)and(k1+k0=n*n) then write('Матрица А ортогональная')
//еслм на главной все=1, а все остальные=0, единичная, а А-ортогональная
else write('Матрица А не ортогональная');
readln
end.
1
0 / 0 / 0
Регистрация: 27.04.2010
Сообщений: 36
24.11.2010, 14:50  [ТС] 3
t=0.00001; подскажи пожалуйста а это что означает
0
Модератор
64059 / 47474 / 32728
Регистрация: 18.05.2008
Сообщений: 115,185
24.11.2010, 14:52 4
Матрица вещественная и точно сравнить 2 числа не всегда можно, поэтому вводится точность сравнения двух чисел, я взял t=0.00001;, можно и меньше, типа 0,01 или 0,001
0
0 / 0 / 0
Регистрация: 27.04.2010
Сообщений: 36
24.11.2010, 15:34  [ТС] 5
if((i=j)and(abs(c[i,j])-1<t))
в этом месте появляется ошибка integer or real expression expected (ожидается выражение целого или вещественного типа) курсор стоит после t. может можно как-нибудь без t.

Добавлено через 11 секунд
if((i=j)and(abs(c[i,j])-1<t))
в этом месте появляется ошибка integer or real expression expected (ожидается выражение целого или вещественного типа) курсор стоит после t. может можно как-нибудь без t.
0
Модератор
64059 / 47474 / 32728
Регистрация: 18.05.2008
Сообщений: 115,185
24.11.2010, 15:42 6
Не сочиняй, а проверь у себя скобки, у меня все нормально. Не переписывай код, а копируй в текстовый редактор и сохраняй с расширением .pas
1
0 / 0 / 0
Регистрация: 27.04.2010
Сообщений: 36
30.11.2010, 14:07  [ТС] 7
А можно записать таак, чтобы использовались логические операции true и false
0
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 20
05.12.2010, 14:31 8
Помоги пожалуйста написать эту же программу только с использованием функции.
0
Модератор
64059 / 47474 / 32728
Регистрация: 18.05.2008
Сообщений: 115,185
05.12.2010, 14:42 9
Pascal
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
uses crt;
const nmax=20;
      t=0.00001;
type matr=array[1..nmax,1..nmax] of real;
function Ort(c:matr;n:byte):boolean;
var i,j,k1,k0:byte;
begin
//преверям что получилось, единичная или нет
k1:=0;k0:=0;
for i:=1 to n do
for j:=1 to n do
if((i=j)and(abs(c[i,j])-1<t))then k1:=k1+1//считаем единицы на главной
else if((i<>j)and(abs(c[i,j])<t))then k0:=k0+1;//ноли не на главной
Ort:=(k1=n)and(k1+k0=n*n);
end;
 
var a,b,c:matr;
    n,i,j,k,k0,k1:byte;
    x,p:integer;
begin
clrscr;
//создаем матрицу
repeat
write('Размер матрицы A до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите элементы матрицы:');
for i:=1 to n do
for j:=1 to n do
 begin
  write('a[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
writeln('Матрица A:');
for i:=1 to n do
 begin
   for j:=1 to n do
   write(a[i,j]:6:2);
   writeln;
 end;
writeln;
//получаем транспонированную
writeln('Транспонированная матрица At:');
for i:=1 to n do
 begin
   for j:=1 to n do
    begin
     b[i,j]:=a[j,i];
     write(b[i,j]:6:2);
    end;
   writeln;
 end;
writeln;
//умножаем исходную не транспонированную
for k:=1 to n do
for j:=1 to n do
   begin
     c[k,j]:=0;
     for i:=1 to n do
       begin
         c[k,j]:=c[k,j]+a[k,i]*b[i,j];
       end;
   end;
writeln('Матрица C=A*At:');
for i:=1 to n do
 begin
  for j:=1 to n do
  write(c[i,j]:6:2);
  writeln;
 end;
if Ort(c,n) then write('Матрица А ортогональная')
else write('Матрица А не ортогональная');
readln
end.
1
0 / 0 / 0
Регистрация: 24.11.2010
Сообщений: 20
28.12.2010, 04:07 10
Извини, что много спрашиваю, а можно эту программу написать методом ортогонализации
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.12.2010, 04:07

Ортогональная проекция
Вопрос: как построить ортогональную проекцию 3-х мерного объекта на 2-х мерную плоскость? Прочитал...

ортогональная проекция
Найти ортогональную проекцию функции у = x ^ 3 пространства С (0,1) на подпространство Е=L(1,x)....

Ортогональная таблица
Есть таблица БД с композитным возможным ключом из двух полей, двух композитных сущностей, или...

Ортогональная проекция и перпендикуляр
найти ортогональную проекцию и перпендикуляр, опущенный их вектора z=(-1,1,3,1) на пространство...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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