Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для D.Y.

Новый участник


Сообщения: 28
Благодарности: 5

Профиль | Отправить 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