|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы |
|
C/C++ - [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы
|
Новый участник Сообщения: 28 |
Профиль | Отправить PM | Цитировать Мне срочняк надо прогу нахождения обратной матрицы методом гаусса и при помощи расширенной матрицы я написал но она требует доработки а сдавать в среду
если у кого есть напишите пожалуйста заранее благодарен (иначе сессия продлится до сентября) |
|
Отправлено: 01:29, 22-06-2008 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Цитата D.Y.:
Математика процесса определитель матрицы методом Гаусса Обратная матрица методом Гаусса |
|
Отправлено: 13:16, 22-06-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать D.Y.,
Цитата D.Y.:
Метод Гаусса, ещё смотри тут (не всё конечно, но про Гаусса есть.) |
|
------- Отправлено: 13:20, 22-06-2008 | #3 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать //вот метод гаусса #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(); } |
Последний раз редактировалось Drongo, 05-02-2009 в 16:44. Причина: Правильные теги. Отправлено: 13:22, 22-06-2008 | #4 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать D.Y., Выдели код и оформи тегом [code], на панельке инструментов, над полем ввода есть изображение решётки - # Отредактируй своё сообщение, Через ссылку Редактировать выдели весть текст и щёлкни по ней или вручную пропиши сначала перед кодом [code] потом в конце [/code] Теги
Ты хоть этот код сам писал? Мне кажется не сам. Что именно не получается там? Где искать ошибку? Я вот только что загрузил в комплятор, 10 ошибок и 3 предупреждения |
|
------- Отправлено: 13:29, 22-06-2008 | #5 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать использовал книгу "решение инженерных задач при помощи С++"
у меня не находило библиотеку "vcl.h" когда я ее комментировал выбивало ошибки на счет директив препроцессора "argsused" & "hdrstop" я их тоже комментировал но выбило ошибку что функции ввода и вывода должны возвращать значения |
Отправлено: 13:56, 22-06-2008 | #6 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 13:57, 22-06-2008 | #7 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать У меня Visual Studio 2008 вот что выдает
Курсач.cpp .\Курсач.cpp(7) : fatal error C1083: Cannot open include file: 'vcl.h': No such file or directory Build log was saved at "file://c:\Documents and Settings\Женя\Мои документы\Visual Studio 2008\Projects\Курсач\Курсач\Debug\BuildLog.htm" Курсач - 1 error(s), 0 warning(s) ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== |
Отправлено: 14:05, 22-06-2008 | #8 |
Будем жить, Маэстро... Сообщения: 6694
|
Профиль | Сайт | Отправить PM | Цитировать D.Y., А у меня Borland C++ Builder 6.0
D.Y., В этой функции подразумевается возвращение результата, но она ничего не возвращает! Та же функция, что и выше. В общем, я точно уверен, что вы не писали эту программу, там такие ошибки... Что вряд ли бы вы не заметили. В общем, что смог и знаю, подправил, в остальном я не компетентен. |
------- Последний раз редактировалось Drongo, 22-06-2008 в 14:36. Отправлено: 14:17, 22-06-2008 | #9 |
Новый участник Сообщения: 28
|
Профиль | Отправить PM | Цитировать Спасибо и за это!
|
Отправлено: 14:51, 22-06-2008 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - [решено] Получить адрес битовой матрицы Tcanvas | hackroute | Программирование и базы данных | 1 | 09-11-2009 22:50 | |
C/C++ - Нахождение чётных элементов в столбцах матрицы | ShadowMas | Программирование и базы данных | 9 | 04-04-2009 10:21 | |
C/C++ | Матрицы | Kuron | Программирование и базы данных | 2 | 21-01-2007 10:09 | |
c++.NET выравнивание матрицы | bezumes | Программирование и базы данных | 4 | 22-04-2006 01:20 | |
Формирование матрицы | Sergey Po | Программирование и базы данных | 3 | 28-04-2004 04:47 |
|