Официальный сайт студ.городка НГТУ
Программирование и БД » Обратная матрица 

#1  12.09.09 17:09

Обратная матрица

Нужна программа на Visual C++ для нахождения обратной матрицы.
Или идею как закодить.

Offline

#2  12.09.09 22:31

Re: Обратная матрица

Offline

#3  29.09.09 01:40

Re: Обратная матрица

Вот тебе из какой то моей лабы, если подумаешь сможешь применить

Код::

// Функция Faddeev() для обратной матрицы по методу Фаддеева.
bool Faddeev( double** R, double** A, int n )
{	int i, j, k, m;
	double** B = new double* [n];    
	for( i = 0; i < n; i++) 
		B[i] = new double[n];
	for( i = 0; i < n; i++ )
	{	
		for( j = 0; j < n; j++ ) 
			B[i][j] = 0.0;
		B[i][i] = 1.0;
	}
	double** U = new double* [n];    
	for( i = 0; i < n; i++) 
		U[i] = new double[n];
	double p, s;
	for( k = 1; k <= n; k++ )            // общий цикл вычислений
	{	
		for( i = 0; i < n; i++ )                     // U = A * B
			for( j = 0; j < n; j++ ) 
			{	
				s = 0.0;
				for( m = 0; m < n; m++ ) s += A[i][m] * B[m][j];
				U[i][j] = s;
			}
		s = 0;
		for( i = 0; i < n; i++ ) 
			s += U[i][i];  // след матрицы U
		p = s / k;              // характеристический коэффициент
		if( k == n ) break; // на последней итерации не вычислять
		for( i = 0; i < n; i++ )                    // B = U - pE
			for( j = 0; j < n; j++ )
				i != j ? B[i][j] = U[i][j] : B[i][j] = U[i][j]-p;
	}
	bool z = true;// предположим, что обратная матрица существует
	if( p == 0.0 ) z = false;   // обратная матрица не существует
	for( i = 0; i < n; i++ )                  // обратная матрица
		for( j = 0; j < n; j++ ) R[i][j] = B[i][j] / p;

	for( i = 0; i < n; i++ ) delete [] U[i];  // удалить строки U
	delete [] U;             // удалить указатели строк матрицы U
	for( i = 0; i < n; i++ ) delete [] B[i];  // удалить строки B
	delete [] B;             // удалить указатели строк матрицы B
	return z;
}

Offline

Программирование и БД » Обратная матрица 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.022 сек.
Выполнено 11 запросов.