Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 20:34   #1
Artemm
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 14
По умолчанию Обратная матрица

Люди помогите пожалуйста, вот написал код , а он не пашет.
Код:
#include<stdio.h>
#include<math.h>
#include<conio.h>
float a[10][20],x[10][10],E[10][10],c,d[10][10];
int i,j,k,n,h;
main()
{
m2: printf("\n vvedit n \n");
	scanf("\n %d",&n);
	printf("\n n=%d",n);
	printf("\n vvedit matrizu A \n");
	for (i=0;i<n;i++)
    for (j=0;j<n;j++)
		scanf("\n %f",&a[i][j]);
	for(i=0;i<n;i++)
	{
		a[i][i+n]=1.0;
		printf("\n");
		for(j=0;j<n;j++)
			printf("%f",a[i][j]);
	}
	for(i=0;i<n;i++)
	for (j=0;j<n;j++)
	{
		d[i][j]=a[i][j];
	}
	for(j=0;j<n;j++)
	{
		for(i=j+1;i<n;i++)
		{
			c=a[i][j]/a[i][j];
			for(k=0;k<2*n;k++)
			{
				a[i][k]=(c*a[i][k])-a[j][k];
			}
		}
	}
	c=1;
	for(i=0;i<n;i++)c=c*a[i][j];
	if(c==0)
	{
		printf("\n Det=0");
	}
	for(j=0;j<n;j++)
	{
		for(i=n-1;i>=0;i--)
		{
			x[i][j]=a[i][j+n];
			for(k=n-1;k>i;k--)
			{
				x[i][j]=x[i][j]-(a[i][k]*x[k][j]);
			}
			x[i][j]=x[i][j]/a[i][j];
		}
	}
	printf("\n Obernena matriza= ");
	for(i=0;i<n;i++)
	{
		printf(" \n ");
		for(j=0;j<n;j++)
			printf(" %f", x[i][j]);
	}
	for(i=0;i<n;i++)
		for(j=0;j<n;j++)
		{
			E[i][j]=0;
			for(h=0;h<n;h++)
				E[i][j]=E[i][j]+(d[i][j]*x[i][j]);
		}
		printf("\n E=a*x/n");
		for(i=0;i<n;i++)
		{
			printf("\n");
			for(j=0;j<n;j++)
				printf("%f",E[i][j]);
		}
	goto m2;
	return 0;
	getch ();


    
}

Последний раз редактировалось Sazary; 25.05.2009 в 20:39.
Artemm вне форума
Старый 25.05.2009, 22:41   #2
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Что конкретно за ошибка?. И еще дайте само задание
Levsha100 вне форума
Старый 25.05.2009, 23:07   #3
Artemm
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 14
По умолчанию

Задание таково.
Для заданной матрицы найти оборотную и сделать проверку.

1.6 1.6 1.7 1.8
1.6 2.6 1.3 1.3
1.7 1.5 3.6 1.4
1.8 1.3 1.4 4.6


ошибка в том что оно не правильно считает .
Artemm вне форума
Старый 26.05.2009, 02:24   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Переписал в соответствии с этим алгоритмом:
http://algolib.narod.ru/Math/ObrMatrix.gif
Код:
#include <stdio.h>
#include <conio.h>

int main()
{
float M[100][100],obr[100][100];
int i,j,k,N;
printf("N = ");
scanf("%d",&N);
for(i=0; i<N; i++)
 for(j=0; j<N; j++)
  {
   printf("N[%d][%d] = ",i,j);
   scanf("%f",&M[i][j]);
  }
printf("----------------\n");
printf("Matrix: \n");
for(i=0; i<N; i++)
 {
  for(j=0; j<N; j++)
   printf("%5.1f",M[i][j]);
  printf("\n");
 }

for(k=0; k<N; k++)
{
  for(i=0; i<N; i++)
   for(j=0; j<N; j++)
    {
      if (i==k&&j==k)
       obr[i][j] = 1/M[i][j];
      if(i==k&&j!=k)
       obr[i][j] = -M[i][j]/M[k][k];
      if (i!=k&&j==k)
       obr[i][j] = M[i][k]/M[k][k];
      if(i!=k&&j!=k)
       obr[i][j] = M[i][j] - M[k][j] * M[i][k]/M[k][k];
     }
 for(i=0;i<N;i++)
  for(j=0; j<N;j++) M[i][j]= obr[i][j];
}

printf("\nObr matrix: \n");
for(i=0; i<N; i++)
 {
  for(j=0; j<N; j++)
   printf("%5.1f",M[i][j]);
  printf("\n");
 }

getch ();
return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 26.05.2009 в 02:35.
Sazary вне форума
Старый 26.05.2009, 17:51   #5
Artemm
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 14
По умолчанию

Супер Спасибо , а проверку можно еще сюда прилепить ?
Artemm вне форума
Старый 26.05.2009, 17:53   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от Artemm
а проверку можно еще сюда прилепить ?
Что за проверка?
Это вы уж как-нибудь сами.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 26.05.2009, 17:55   #7
Artemm
Пользователь
 
Регистрация: 25.05.2009
Сообщений: 14
По умолчанию

Ок , спасибо.
Artemm вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Зловредная обратная матрица nxn kJlaCuk Помощь студентам 2 30.11.2010 23:51
Обратная матрица (ПАскаль) ponchikpk Помощь студентам 16 04.10.2010 15:24
Обратная матрица (nxn) Albenous Общие вопросы Delphi 12 27.05.2009 02:17
обратная матрица=) PrincEssa91 Паскаль, Turbo Pascal, PascalABC.NET 0 23.05.2009 15:59