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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.10.2012, 16:33   #1
Symple me
Пользователь
 
Аватар для Symple me
 
Регистрация: 09.10.2012
Сообщений: 47
По умолчанию Метод Гаусса

Здравствуйте! У меня есть матрица Am [n][n]. Заполняю с клавиатуры. Скажите, пожалуйста, почему элемент Am[n-1][n-2] в 103 строке всегда равен 0?
for (i=1; i<n+1; i++)
{
int str = i-1;
max_el = Am[i-1][i-1];
//poisk maksimalnogo elementa v stolbce
for (int ch=i-1; ch<n; ch++)
{
double buf = Am[ch][i-1];
if (max_el<0) max_el*=(-1);
if (buf<0) buf*=(-1);
if (max_el<buf)
{
max_el = buf;
//zapomnit' stroku s maksimalnym elementom
str = ch;
}
}
if (max_el == 0)
{
printf ("SLU ne imeet resheniya\n");
getch();
}
//menyaem stroki mestami
//esli maksimalnyi element ne nahoditsya v tekuchei stroke
if (str != (i-1))
{
for (int ch=0; ch<n; ch++)
{
double t = Am[i-1][ch];
Am[i-1][ch] = Am[str][ch];
Am[str][ch] = t;
}
}
//delenie stroki na naibolshyi element
for (int ch = 0; ch<n; ch++)
Am[i-1][ch]/=max_el;
//ustranenie nulei s glavnoi diagonali
if (Am[i-1][i-1]<0)
for (int ch=0; ch<n; ch++)
{
if (Am[i-1][ch]!=0)
Am[i-1][ch]*=(-1);
}

//vychislenie koefficientov
for (int z=0; z<n-i; z++)
koef[z] = Am[i+z][i-1]/Am[i-1][i-1];
//vychitanie strok, umnogennyh na koefficienty
for (int k=i; k<n; k++)
for (int j=i-1; j<n; j++)
Am[k][j] -= koef[k-i]*Am[i-1][j];
printf("\n");
}
//obratnyi hod
for (int i=n-1; i>=0; i--)
{

if (n-i-1 == 0 )
X[0] = (Am[n-1][n-1])/Am[n-1][n-2]; //103 строка
else
{
for (int j=n-1; j>i; j-- )
Am[i][n-1] = Am[i][n-1] - (Am[i][j-1]*X[n-j-1]);
X[n-i-1] = Am[i][n-1]/Am[i][i];
}

}
There are 10 types of people: those who understand binary and those who don't.
Symple me вне форума Ответить с цитированием
Старый 13.10.2012, 20:49   #2
monolit111
Пользователь
 
Регистрация: 14.09.2011
Сообщений: 95
По умолчанию

эээ...а где тут эта строка то?
monolit111 вне форума Ответить с цитированием
Старый 14.10.2012, 10:31   #3
Symple me
Пользователь
 
Аватар для Symple me
 
Регистрация: 09.10.2012
Сообщений: 47
По умолчанию

В последнем условии:
X[0] = (Am[n-1][n-1])/Am[n-1][n-2];
Am[n-1][n-2] где-то зануляется
There are 10 types of people: those who understand binary and those who don't.
Symple me вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод простых операций и метод гаусса зейделя tarasman11 Паскаль, Turbo Pascal, PascalABC.NET 1 23.09.2012 14:46
Метод Гаусса nice1992 Помощь студентам 4 05.02.2012 19:22
Метод Гаусса в С++. marko) Общие вопросы C/C++ 1 22.03.2010 16:49
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08
Метод Гаусса werser Помощь студентам 10 23.05.2009 01:46