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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2013, 17:14   #1
pe3a4ok
 
Регистрация: 04.11.2013
Сообщений: 3
Восклицание Решение СЛАУ методом Гауса ( немного подправить программу)

Всем привет!
Подскажите что сделать) Программа считает все матрицы, кроме тех у, которых на диагонали стоит 0.
Насколько я знаю, нужно сделать обмен строк матрицы...
но как притворить это в жизнь - пока с трудом догадываюсь
помогите пожалуйста!!!
Вот тут весь код на языке C:

Код:
# include <stdio.h>
# include <conio.h>
int main()
{
 int i, j, k, n ;
 float a[20][20], x[20] ;
 double s, p ;
 
 printf("Enter the size of the matrix : ") ;
 scanf("%d", &n) ;
 printf("\nEnter the co-efficients of the matrix :\n\n") ;
 for(i = 0 ; i < n ; i++)
 {
  for(j = 0 ; j < n ; j++)
  {
   printf("a[%d][%d] = ", i + 1, j + 1) ;
   scanf("%f", &a[i][j]) ;
  }
  printf("b[%d] = ", i + 1) ;
  scanf("%f", &a[i][n]) ;
 }
 for(k = 0 ; k < n - 1 ; k++)
 {
  for(i = k + 1 ; i < n ; i++)
  {
   p = a[i][k] / a[k][k] ;
   for(j = k ; j < n + 1 ; j++)
    a[i][j] = a[i][j] - p * a[k][j] ;
  }
 }
 x[n-1] = a[n-1][n] / a[n-1][n-1] ;
 for(i = n - 2 ; i >= 0 ; i--)
 {
  s = 0 ;
  for(j = i + 1 ; j < n ; j++)
  {
   s += (a[i][j] * x[j]) ;
   x[i] = (a[i][n] - s) / a[i][i] ;
  }
 }
 printf("\nThe result is :\n") ;
 for(i = 0 ; i < n ; i++)
  printf("\nx[%d] = %.2f", i + 1, x[i]) ;
 getch() ;
}
Изображения
Тип файла: jpg Снимок.jpg (18.6 Кб, 156 просмотров)
pe3a4ok вне форума Ответить с цитированием
Старый 05.11.2013, 06:18   #2
SaLoKiN
Форумчанин
 
Аватар для SaLoKiN
 
Регистрация: 19.09.2013
Сообщений: 597
По умолчанию

с прямым ходом напутано было у вас...
Код:
# include <stdio.h>

int main()
{
 int i, j, k, n ;
 float a[20][20], x[20] ;
 double s, p ;
 
 printf("Enter the size of the matrix : ") ;
 scanf("%d", &n) ;
 printf("\nEnter the co-efficients of the matrix :\n\n") ;
 for(i = 0 ; i < n ; i++)
 {
  for(j = 0 ; j < n ; j++)
  {
   printf("a[%d][%d] = ", i + 1, j + 1) ;
   scanf("%f", &a[i][j]) ;
  }
  printf("b[%d] = ", i + 1) ;
  scanf("%f", &a[i][n]) ;
 }
 for(k = 0 ; k < n - 1 ; k++)
 {
  for(i = k + 1 ; i < n ; i++)
  {
   p = a[k][k] / a[i][k] ;
   for(j = 0 ; j <= n ; j++)
   a[i][j] = a[i][j] *p - a[k][j] ;
   }
 }
 x[n-1] = a[n-1][n] / a[n-1][n-1] ;
 for(i = n - 2 ; i >= 0 ; i--)
 {
  s = 0 ;
  for(j = i + 1 ; j < n ; j++)
  {
   s += (a[i][j] * x[j]) ;
   x[i] = (a[i][n] - s) / a[i][i] ;
  }
 }
 printf("\nThe result is :\n") ;
 for(i = 0 ; i < n ; i++)
  printf("\nx[%d] = %.2f", i + 1, x[i]) ;
 getch() ;

}
что касается нулей, вот тут есть проверочка на нули.
кста, судя по реализации обратного метода, код был взят отсюда....
Сделал сам, помоги другому!
Что-то работает не так? Дебаггер в помощь!!!

Последний раз редактировалось SaLoKiN; 05.11.2013 в 08:05.
SaLoKiN вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решение СЛАУ методом Гаусса и методом Крамера. R1k1 Помощь студентам 0 24.03.2012 19:17
Решение СЛАУ методом Гауса на Паскале Klik_1602 Помощь студентам 3 04.01.2011 22:00
решение задач методом Гауса (Delphi) rozalija Помощь студентам 1 18.09.2009 23:28
откорректируйте программу по решению СЛАР методом Гауса Ge0rGE Помощь студентам 3 19.05.2009 22:47