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

Какие есть способы или алгоритмы написания программы для нахождения обратной матрицы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Ошибка в классах http://www.cyberforum.ru/cpp-beginners/thread120456.html
Добрый день! Мне необходимо разбить 1 класс на 2: базовый и производный! Я вроде сделал, но вылезает ошибка, что нехватает фигурной скобки:( И я никак не могу понять в чем дело( Подскажи пожалуйста, что я сделал не так? и как сделать правильно? заранее спасибо:) #include<iostream.h> #include<stddef.h> #include<conio.h> struct Node {
C++ координаты Подскажите как при помощи Си в консоле двигать элементы, например слово какое то вывести в центре? http://www.cyberforum.ru/cpp-beginners/thread120442.html
C++ Struct{...}
Драсьте мне нужна помощь. Написать программу ввода и вывода студентов группы и каждый из них характеризуется фамилией и номером зачётки через struct{...}. Буду очень признателен если будете подписывать коментарии.
C++ Особая шапка в StringGrid
Есть ли какая нибудь возможность в StringGrid е объединить несколько ячеек шапки? т.е. чтобы получилось что то вроде этого:
C++ Примитивный текстовый редактор http://www.cyberforum.ru/cpp-beginners/thread120391.html
прога вроде бы работает так как надо, но! не могу перевести курсор на первый элемент списка... как это сделать, не подскажите? #include <stdafx.h> #include <conio.h> #include <stdio.h> #include <dos.h> #include <stdlib.h>
C++ Работает в Borland Developer Studio 2006 но не работает в Visual Studio 2008, почему? Вводим строку и меняем в ней первый и последний символы. Всё хорошо в Borland Developer Studio, а Visual Studio 2008 пишет, что проэкт устарел + ошибку выдаёт. С VS2008 никогда не работал, поэтому хотелось где собака зарыта. Заранее спасибо ))) #include<iostream.h> #include<stdlib.h> #include<string.h> #include<conio.h> int main () { int u,t = 2; char s, *p = new char ; cout<<"vvedite... подробнее

Показать сообщение отдельно
&Alex&
 Аватар для &Alex&
19 / 19 / 1
Регистрация: 21.03.2010
Сообщений: 221
25.04.2010, 23:31  [ТС]     Какие есть способы или алгоритмы написания программы для нахождения обратной матрицы
Цитата Сообщение от valeriikozlov Посмотреть сообщение
У Вас не получается перевод с С++ на С ? или Вы не можете понять сам метод? Понять сам метод - лучше читать литературу, ее достаточно по этому вопросу. Я считаю что кто бы здесь не пытался Вам объяснить сам метод, лучше уже написанного в литературе он этого не сделает. А если просто помочь перевести, то пишите код и спрашивайте, что не понятно, в этом Вам здесь помогут.
Вот код, но его надо переделать на Си и исправить ошибки:
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
//вот метод гаусса
 #include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#pragma hdrstop
#pragma argsused
//using namespace::std;
const int dim=20;
int InvMatrG(int n, float(*a)[dim], float e,float d)
{int i,j,k;
float y,w;
float b[dim],c[dim];
int z[dim];
d=1;
for(j=0;j<n;j++)
x[j]=j;
for (i=0;i<n;i++)
{k=i;
y=a[i][i];
if (fabs(w)>fabs(y))
{k=j;
y=w;}}
d*=y;
if (fabs(y)<e)
{cout<<"matrica virojdena";
getch();
}
for (j=0;j<n;j++){
         c[j]=a[j][k];
         a[j][k]=a[j][i];
         a[j][i]=-c[j]/y;
         a[i][j]=a[i][j]/y;
         b[j]=a[i][j];}
a[i][j]=1/y;
j=z[i];
z[i]=z[k];
z[k]=j;
for (k=0;k<n;k++)
if(k!=i)
for(j=0;j<n;j++)
if (j!=i)
a[k][i]-=b[j]*c[k];}
for (i=0;i<n;i++){
         k=z[i];
         if (k!=i){
                   for (j=0;j<n;j++)
                   {w=a[i][j];
                   a[i][j]=a[k][j];
                   a[k][j]=w;}
                   j=z[i];
                   z[i]=z[k];
                   d=-d;
         }}}
         int MatrIn (int n,float(*a)[dim]){
                   int i,j;
                   for(i=0;i<n;i++)
                            for (j=0;j<n;j++)
                                      cin>>a[i][j];}
         int MatrOut(intn,float(*a)[dim]){
                   int i,j;
                   for (i=0;i<n;i++)
                            for (j=0;j<n;j++)
                                      cout<<a[i][j]<<" ";}
         void main()
         {int n;
         float matr[dim][dim];
         float d;
         cout<<"\n vvedite razmernost'";
         cin>>n;
         cout<<"\n vvedite elemeti";
         MatrIn(n,(*matr)[n]);
         cout"\n tochnost'";
         cin>>e;
         InvMatrG(n,matr[][n],e,d);
         cout"\n obratnaya matrica";
         MatrOut(n,matr[][n]);
         getch();
         }
 
 //а вот
 
//Нахождение обратной матрицы методом расширенной матрицы
 
#include <vcl.h>
#include <conio.h>
#include <iostream.h>
#include <math.h>
#pragma hdrstop
#pragma argsused
 
const int dim1=20;
const int dim2=40;
float **a,**a1;
int n;
//vvod matrici
int MatrIn()
{int i,j;
for (i=0;i<n;i++)
for (j=0;j<n;j++)
cin>>a[i][j];
}
//obraschenie matrici
int invMatr(float e)
{
         int i,j,k,n1;
         float f,f1;
         float matr[20][40];
         n1=2*n;
         for (int i=0;i<n;i++)
for (j=0;j<n1;j++)
if (j<n)
matr [i][j]=a[i][j];
else 
if (j==n+1)
matr[i][j]=1;
else
matr [i][j]=0;
         for (int i=0;i<n;i++)
         {k=i;
         f1=matr[i][j];
         while (fabs(f1)<e)
         {if (k<n)
         {
                   k++;
                   f1=matr[k][i];
         }
         else
         {
                   cout<<"matrica virojdena";
                   gatch();
         }
         for (j=i;j<n1;j++)
         {
                   f=matr[k][j];
                   matr[k][j]=matr[i][j];
                   matr[i][j]=f/f1;
         }
         for (k=0;k<n;k++)
                   if (k!=i)
                            for (j=n1-1;j>=i;j--)
                                      matr[k][j]=matr[k][j]-matr[i][j]*matr[k][j];
         }
         for (i=0;i<n;i++)
for (j=0;j<n;j++)
a[i][j]=matr[i][j+n];
         }
}
//vivod obratnoy matrici
int MatrOut()
{
         int i,j;
         for (i=0;i<n;i++)
for (j=0;j<n;j++)
cout<<a1[i][j]<<" ";
}
//glavnaya proga
void main()
{
         float e;
         cout<<"vvedite razm matrici";
         cin>>n;
         cout<<"vvedite cherez probel elementi metrici";
         a=new float*[n];
         MatrIn();
         a1=new float*[n];
         for (int i=0;i<n;i++)
                   a1[i]=new float[n];
         cout<<"vvedite tochnost' vichisleniya";
         cin>>e;
         InvMatr(e);
         cout<<"obratnaya matrica";
         MatrOut();
         getch();
}
 
Текущее время: 20:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru