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

Обратная матрица - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Порядок вызова конструкторов при множественном наследовании http://www.cyberforum.ru/cpp-beginners/thread684759.html
Здравствуйте, меня интересует вопрос, как изменить последовательность вызова конструкторов базовых классов во время создания объекта класса с множественным наследованием. Я слышал что это можно сделать при помощи списка инициализации конструктора, но на деле у меня конструкторы вызываются в той последовательности, которой они описаны при объявлении класса. Например вот такой метод: class A...
C++ Многопоточность При добавлении больше 10000 элементов в таблицу на форму форма зависает, как это исправить? (использую QT) http://www.cyberforum.ru/cpp-beginners/thread684752.html
C++ простая задача
Помогите создать програму. Заранее спасибо! язык форума русский
Определить расстояние между автомобилями через T часов, если они удаляются друг от друга. C++
Begin36. Скорость первого автомобиля V1 км/ч, второго – V2 км/ч, расстояние между ними S км. Определить расстояние между ними через T часов, если автомобили удаляются друг от друга. Данное расстояние равно сумме начального расстояния и общего пути, проделанного автомобилями; общий путь=время · суммарная скорость.
C++ помогите найти все делители натурального числа N http://www.cyberforum.ru/cpp-beginners/thread684716.html
помогите найти все делители натурального числа N. в С++
C++ Структура Задано множество комплексных чисел в алгебраической форме.Реализовать их сортировку по модулю и поиск по квадранту, а также вычисление произведения всех чисел. пока только описал ввод и вывод комплексных чисел #include <stdio.h> #include <conio.h> #define N 20 typedef struct Complex подробнее

Показать сообщение отдельно
Guzl
 Аватар для Guzl
34 / 34 / 2
Регистрация: 19.10.2010
Сообщений: 70
30.10.2012, 22:36     Обратная матрица
Здравствуйте)Помогите пожалуйста разобраться, у меня программа не правильно считает обратную матрицу
Delphi
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
procedure Obr(n:Integer; var d:Matrix);
var A:Matrix; i,j,h:Integer;
begin
 SetLength(A, n + 1, n + 1);
      for i := 0 to n-1 do
      begin
         for j := 0 to n-1 do
         begin
          A[i,j]:=StrToFloat(sgA.Cells[j, i]);
         end;
         end;
         SetLength(d,n+1,n+1);
          For h:=0 to n-1 do      // обратная матрица;
     begin
     For i:=0 to n-1 do
     For j:=0 to n-1 do
      Begin
    If (i=h) and (j=h) then
    d[i,j]:=1/a[i,j];
    If (i=h) and (j<>h) then
    d[i,j]:=-a[i,j]/a[h,h];
    If (i<>h) and (j=h) then
    d[i,j]:=a[i,h]/a[h,h];
    If (i<>h) and (j<>h) then
    d[i,j]:=a[i,j]-a[h,j]*a[i,h]/a[h,h];
    End;
     For i:=0 to n-1 do
      For j:=0 to n-1 do
    a[i,j]:=d[i,j];
   end;
   SetLength(d,0,0);
   end;
 
Procedure Proverka( n:integer;var c:Matrix);//проверка - умножение прямой матрицы на обратную
var k,j,i:integer;
    z:double; a,d:Matrix;
begin
  SetLength(c,n+1,n+1);
for k:=0 to n-1 do
for j:=0 to n-1 do
  begin
    c[k,j]:=0;
    for i:=0 to n-1 do
      begin
        z:=c[k,j]+a[i,j]*d[k,i];
        c[k,j]:=c[k,j]+z;
      end;
   end;
 
   begin
   for k:=0 to n-1 do
   for j:=0 to n-1 do
   SGPr.Cells[j,k]:=FloatToStr(c[k,j]);
   end;
   SetLength(c,0,0);
 end;
 
var
   A,d,c: Matrix;
   B, X : Vector;i1, j1: integer;
   err : Double; det,det1:Real;
   i, j, n ,p,k: Integer; f:Byte;//признак несуществования обратной матрицы
begin
   n := StrToInt(edt1.Text);
   SetLength(A, n + 1, n + 1);
   SetLength(B, n + 1);
   for i := 0 to n - 1 do
   begin
      for j := 0 to n - 1 do
      begin
         A[i, j] := StrToFloat(sgA.Cells[j, i]);
      end;
      B[i] := StrToFloat(sgB.Cells[0, i]);
   end;
 
   SetLength(X, n + 1);
   Holetsky(n,A,B,X,err);
   Opr(n,p,A,det,f);
 
 
   for i := 0 to n-1 do
      sgRes.Cells[0, i] := FloatToStr(X[i]);
   ShowMessage(Format('Error = %f', [Err]));
 
   SetLength(d,n+1,n+1);
 
 
 
 Obr(n,d);
 for i:= 0 to n - 1 do
  for j:= 0 to n - 1 do
    SG2.Cells[j,i]:= FloatToStr(Round(1000*a[j, i])/1000);
 
 
 
   SetLength(c,n+1,n+1);
   Proverka(n,c);
 
 
 
   SetLength(X, 0);
   SetLength(B, 0);
   SetLength(A, 0, 0);
   SetLength(d,0,0);
   setlength(c,0,0);
end;
и на 45-м шаге выдает ошибку. Заранее благодарна за помощь
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 20:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru