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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.07.2010, 22:45   #1
Bernarditto
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 11
По умолчанию Вопрос_по Гауссу

Скажите пожалуйста, сойдет ли такой код для прямого и обратного кода?

Прямой ход

for(k=0;k<N-1;k++)
for(i=0;i<N;i++)
if(i>k)
{
for(j=0;j<N;j++)
matrix[i][j]-=matrix[k][j]*(matrix[i][k])/(matrix[k][k]);
freemembers[i][0]-=freemembers[k][0]*(matrix[i][k]/matrix[k][k]);
}

Обратный ход

for(k=0;k<N-1;k++)
for(i=0;i<N;i++)
if(i>k)
{
for(j=0;j<N;j++)
matrix[N-i-1][j]-=matrix[N-k-1][j]*(matrix[N-i-1][N-k-1]/matrix[N-k-1][N-k-1]);
freemembers[N-i-1][0]-=freemembers[N-k-1][0]*(matrix[N-i-1][N-k-1]/matrix[N-k-1][N-k-1]);
}
N - размерность

cout<<endl;
for(i=0;i<N;i++)
cout<<freemembers[i][0]<<" ";

но свободные члены не изменяются совсем, какие задал, такие и остались. Матрица же превращается в диагональную(все ост. элементы=0), но с теми же числами что и были в диагонали.
Bernarditto вне форума Ответить с цитированием
Старый 13.07.2010, 22:57   #2
Bernarditto
Пользователь
 
Регистрация: 15.06.2010
Сообщений: 11
По умолчанию

Ага, забыл написать еще: все массивы объявлены в динамической памяти.
Сначала объявил в мэин указатель на массив указателей в динамической памяти, потом каждый из этих указателей объявил как указатель на массив данных в динамической памяти(получается двумерный массив), но уже в функции. указатель передаются в форме Gauss(**freemembers,**matrix,**x,N) (x - это массив неизвестных, который так же создается как фримемберс, но данные не очищаются в функции, а в мейне).
Bernarditto вне форума Ответить с цитированием
Ответ


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