حذف غاوس-يوردان
في الجبر الخطي، يعتبر حذف غاوس-يوردان نسخة عن الحذف الغاوسي والذي يضع أصفارا فوق وتحت عنصر المحور عندما يتحرك من أعلى صف في المصفوفة المعطاة إلى الأسفل. أي أنه يعيد المصفوفة إلى الصورة المثلثية.
تعود التسمية إلى كارل فريدريش غاوس وفيلهلم يوردان.
تطبيقات إيجاد المعكوس
يمكن استعمال حذف غاوس-يوردان في المصفوفة المربعة لحساب معكوسها كما يلي.
إذا كانت المصفوفة المربعة الأصلية معطاة بالتعبير:
حينئذ يمكن بالاستعانة بمصفوفة الوحدة الحصول على:
وبتطبيق عمليات الصف الأساسية على المصفوفة حتى تصل صورة الصف المخفض يمكن في النهاية الحصول على النتيجة:
والان بعكس الوسيط, يمكن الحصول على:
c++ code for matrix inverse
#include <cstdlib>
double** gauss(double **matrix, int diminsion)
{
double **inverse;
inverse = (double**) malloc(diminsion * sizeof (double *));
for (int i = 0; i <diminsion; i++)
inverse[i] = (double*) malloc(diminsion * sizeof (double));
for (int i = 0; i <diminsion; i++)
for (int j = 0; j <diminsion; j++)
inverse[i][j] = 0;
for (int i = 0; i <diminsion; i++)
inverse[i][i] = 1;
for (int k = 0; k <diminsion; k++)
{
for (int i = k; i <diminsion; i++)
{
double val = matrix[i][k];
for (int j = k; j <diminsion; j++)
matrix[i][j] /= val;
for (int j = 0; j <diminsion; j++)
inverse[i][j] /= val;
}
for (int i = k + 1; i <diminsion; i++)
{
for (int j = k; j <diminsion; j++)
matrix[i][j] -= matrix[k][j];
for (int j = 0; j <diminsion; j++)
inverse[i][j] -= inverse[k][j];
}
}
for (int i = diminsion - 2; i>= 0; i--)
{
for (int j = diminsion - 1; j> i; j--)
{
for (int k = 0; k <diminsion; k++)//this part can be can canceled (the two lines)
inverse[i][k] -= matrix[i][j] * inverse[j][k]; //
for (int k = 0; k <diminsion; k++)//this part can be can canceled (the two lines)
matrix[i][k] -= matrix[i][j] * matrix[j][k]; //
}
}
return inverse;
}
- بوابة رياضيات
- بوابة جبر
- بوابة خوارزميات
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.