У вас вопросы?
У нас ответы:) SamZan.net

12а Воронин ДИ Перевірив к

Работа добавлена на сайт samzan.net: 2015-07-05

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 20.5.2025

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ

ДОНЕЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ

Кафедра ЕПМ

Звіт

З лабораторної роботи №5

ОБЕРНЕННЯ МАТРИЦЬ

Виконав:ст.гр ЕСЕ-12а

Воронин Д.И.

Перевірив  к.т.н., доцент Шлепньов С.В

Донецк-2013

Мета роботи:  навчитися обчислювати матрицю, зворотну заданій за допомогою ЕОМ.

5.2 Завдання

Виконати обернення довільних квадратних матриць другого, третього і четвертого порядків з контролем результату.

Текст програми

#include <cstdlib>

#include <iostream>

#include <math.h>

using namespace std;

int SLAU(float **matrica_a, int N, float *massiv_b,

float *x)

{

int i,j,k,r;

float c,M,max,s, **a, *b;

a=new float *[N];

for(i=0;i<N;i++)

a[i]=new float [N];

b=new float [N];

for(i=0;i<N;i++)

for(j=0;j<N;j++)

a[i][j]=matrica_a[i][j];

for(i=0;i<N;i++)

b[i]=massiv_b[i];

for(k=0;k<N;k++)

{

max=fabs(a[k][k]);

r=k;

for(i=k+1;i<N;i++)

if (fabs(a[i][k])>max)

{ max=fabs(a[i][k]);

r=i;}

for(j=0;j<N;j++)

{ c=a[k][j];

a[k][j]=a[r][j];

a[r][j]=c; }

c=b[k]; b[k]=b[r]; b[r]=c;

for(i=k+1;i<N;i++)

{ for(M=a[i][k]/a[k][k],j=k;j<N;j++)

a[i][j]-=M*a[k][j];

b[i]-=M*b[k];

}}

if (a[N-1][N-1]==0)

if(b[N-1]==0) return -1;

else return -2;

else

{for(i=N-1;i>=0;i--)

{for(s=0,j=i+1;j<N;j++)

s+=a[i][j]*x[j];

x[i]=(b[i]-s)/a[i][i];

}

return 0;

}}

int INVERSE(float **a, int n, float **y)

{ int i,j,res;

float *b, *x;

b=new float [n];

x=new float [n];

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

if (j==i) b[j]=1; else b[j]=0;

res=SLAU(a,n,b,x);

if (res!=0) break;

else

for(j=0;j<n;j++)

y[j][i]=x[j];

}

delete [] x;

delete [] b;

if (res!=0) return -1;

else return 0;}

int main(int argc, char** argv)

{

int i,j,n,k,result;

float **A,**B,**E;

cout<<"Vvedite razmer matrix:";

cin>>n;

A=new float *[n];

for(i=0;i<n;i++)

A[i]=new float [n];

B=new float *[n];

for(i=0;i<n;i++)

B[i]=new float [n];

cout<<"vvedite matrix A"<<endl;

for(i=0;i<n;i++)

{for(j=0;j<n;j++)

{cin>>A[i][j];}}

result=INVERSE(A,n,B);

if (result==0)

{ cout<<"Inverse matrix"<<endl;

for(i=0;i<n;cout<<endl,i++)

for(j=0;j<n;j++)

cout<<B[i][j]<<"\t";

}

else cout<<"No Inverse matrix"<<endl;

E=new float *[n];

for(i=0;i<n;i++)

E[i]=new float [n];

for(i=0;i<n;i++)

for(j=0;j<n;j++)

for(k=0;k<n;k++)

E[i][j]+=A[i][k]*B[k][j];

cout<<"proverka Inverse"<<endl;

for(i=0;i<n;cout<<endl,i++)

for(j=0;j<n;j++)

cout<<E[i][j]<<"\t";

}

Блок-схеми

Далі на рис.1, рис. 2 та рис.3 буде наведено використані у програмі блок-схеми

Рис 1.1 Блок-схема функції SLAU

Рис 1.2 Блок-схема функ функції SLAU

Рис. 2 Блок-схема функції INVERS

Рис.3 Блок-схема функції main

Результат роботи програми

Висновок

У даній роботі навчитився обчислювати матрицю, зворотню заданій за допомогою ЕОМ.




1. Характеристика Паратова Драма Бесприданница
2. Лекция 1. Введение
3. 2 Судебное разбирательство и судебное решение
4. Тема- Повреждение клетки
5. Приветствую У меня один вопрос не против если я задам
6. Дом детского творчества Октябрьского района туристскокраеведческий клуб Стрела
7. Council of Europ
8. Благодать1 20 декабря 2012 с 18
9. Замер степени использования процессора
10. Курсовая работа- Позиция Японии и России в отношении военной ядерной программы Северной Кореи