|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы |
|
|
C/C++ - [решено] Нахождение обратной матрицы методом Гаусса и рассширенной матрицы
|
|
Новый участник Сообщения: 28 |
Мне срочняк надо прогу нахождения обратной матрицы методом гаусса и при помощи расширенной матрицы я написал но она требует доработки а сдавать в среду
если у кого есть напишите пожалуйста заранее благодарен (иначе сессия продлится до сентября) |
|
|
Отправлено: 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 | |
|