Обсуждение:Метод Гаусса — Жордана
Эта статья тематически связана с вики-проектом «Астрономия», цель которого — создание и улучшение статей по темам, связанным с астрономией. Вы можете её отредактировать, а также присоединиться к проекту, принять участие в его обсуждении и поработать над требуемыми статьями. |
Эта статья была предложена к переименованию 25 мая 2009 года. В результате обсуждения было решено оставить название Метод Гаусса — Жордана без изменений. Для повторного выставления статьи на переименование нужны веские основания, иначе это может быть расценено как игра с правилами (см. пункт 8). |
Вопрос
правитьОт AlexxxMksv очень понятно разжовано, но уменя остался вопрос -как будет выглядеть решение системы из двух уравнений и и 3-х неизвестных. Пример Решим следующую систему уравнений:
у меня получилось
дальше как? единственного решения нет
-Дальше - все. Так его у данной СЛУ и нет. Как я понимаю, метод используется только для квадратных систем. Или переносихь С в левую часть и решаешь при фиксированном С Nikto 22:48, 20 февраля 2009 (UTC)
Ошибка изложения метода
правитьОтличие метода Гаусса от его модификации Гаусса-Жордана состоит в том, что в процессе сразу получается еденичная матрица - никаких верхнетреугольных не образуется (в нули обращаются элементы и над диагональю), соответственно требуется изменить содержимое статьи (алгоритм и пример (это чистый Гаусс)), что собственно я ещё не умею.
Полезно добавить информацию по части программирования о модификации связанной с перестановкой строчек с наибольшыми элементами, а также отсечение получаемых значений "возле нуля". Olv33 21:10, 22 ноября 2009 (UTC)
- Верно, треугольник не нужен. Вот, что у меня получилось. Могут быть ошибки, но на первый взгляд работает нормально:
double[,] Inverse(double[,] m)
{
int n = m.GetLength(0);
if (m.GetLength(1) != n)
throw new ArgumentException("Matrix must be square");
double[,] a = (double[,])m.Clone();
double[,] b = new double[n, n];
for (int i = 0; i < n; i++)
b[i, i] = 1.0;
for (int p = 0; p < n; p++)
{
int maxI = p;
double maxAI = Math.Abs(a[p, p]);
for (int i = p + 1; i < n; i++)
{
double maxAICand = Math.Abs(a[i, p]);
if (maxAICand > maxAI)
{
maxI = i;
maxAI = maxAICand;
}
}
if (maxAI == 0.0)
return null;
if (maxI != p)
{
for (int j = 0; j < n; j++)
{
double temp = a[p, j];
a[p, j] = a[maxI, j];
a[maxI, j] = temp;
temp = b[p, j];
b[p, j] = b[maxI, j];
b[maxI, j] = temp;
}
}
double x = a[p, p];
for (int j = 0; j < n; j++)
{
a[p, j] /= x;
b[p, j] /= x;
}
for (int i = 0; i < n; i++)
{
if (i == p)
continue;
x = a[i, p];
for (int j = 0; j < n; j++)
{
a[i, j] -= a[p, j] * x;
b[i, j] -= b[p, j] * x;
}
}
}
return b;
}
Сообщение об ошибке
правитьНе указаны уравнения(в дано и ответе), пропущены переменные в тексте, из-за чего теперь нельзя понять какие операции происходят с уравнением.
Автор сообщения: Гекк 109.194.193.25 09:13, 22 сентября 2013 (UTC)
- Да, правда - почему-то почти все формулы в статье были в виде картинок, которые из-за отсутствия лицензии были удалены. Теперь этот раздел надо вообще переписать. Поставил пока плашку. Будет время - займусь. MPI3 11:49, 22 сентября 2013 (UTC)
- К обсуждению. Sealle 05:05, 26 сентября 2013 (UTC)
Метод Гаусса-Жордана предназначен для решения не только квадратных систем алгебраических уравнений
правитьВ определении указано, что это метод, который используется для решения квадратных систем линейных алгебраических уравнений.
Ошибка в алгоритме
правитьНаписано:
5. Далее проводят такую же процедуру с матрицей, получающейся из исходной матрицы после вычёркивания первой строки и первого столбца.
- Из этого можно сделать вывод, что вычеркнутые строки и столбцы не участвуют в пп.2-4. На самом деле это не так, участвуют строки и столбцы целиком.
Написано:
8. Повторяют предыдущий шаг для последующих строк. В итоге получают единичную матрицу и решение на месте свободного вектора (с ним необходимо проводить все те же преобразования).
- Что именно повторяют, вычитание из из предпоследней строки последней? Непонятность тут.
Перестановка строк
правитьНекоторые матрицы алгоритм из разделов «Расширенный алгоритм для нахождения обратной матрицы» и «Реализация алгоритма на языке программирования C#» вычисляет некорректно. К примеру, . — Vort (обс.) 05:34, 25 июля 2021 (UTC)