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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 2.7.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. тренировочного процесса.html
2. вступление про то что Слава двора Короля Артура была бесконечна как Адриатическая впадина что тысячи рыцар
3. Племена Закавказья в период гегемонии Урарту
4. Квалификация простого убийства
5. Здесь рано сложились догосударственные формы которые привели к развитию городов ремесла и земледелия
6. .Общие вопросы уголовной ответственности за детоубийство
7. тема органов власти
8. Электроника Электропроводность полупроводников
9. Методики исследования агрессивности
10. Курсовая работа на тему- Ассимиляция в немецком и русском языках