Показать сообщение отдельно
Старый 23.09.2014, 19:18   #1 (permalink)
ChoPaPopa
Новичок
 
Регистрация: 23.09.2014
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
Question LU-разложение

Всем добра, помогите с программой на си
Код:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
using namespace std;
 
int main ()
{
  int n;
  double sum = 0;
 
  cout << "Введите порядок матрицы\n n = ";
  cin >> n;
 
  double A [ n ][ n ];
  double L [ n ][ n ];
  double U [ n ][ n ];
 
  for (int i  = 0; i < n; i++)
  {
    for (int j = 0; j < n; j++)
    {
      cout << "\na[" << i << "][" << j << "] = ";
      cin >> A [i][j];
 
      L [i][j] = 0;
      U [i][j] = 0;
 
      if (i == j)
        U [i][j] = 1;
    }
  }
 
  for (int i = 0; i < n; i++)
  {
    L [i][0] = A [i][0];
    U [0][i] = A [0][i] / L [0][0];
  }
 
  for (int i = 1; i < n; i++)
  {
      for (int j = 1; j < n; j++)
      {
          if (i >= j)
          {
              sum = 0;
              for (int k = 0; k < j; k++)
                  sum += L [i][k] * U [k][j];
 
              L [i][j] = A [i][j] - sum;
          }
          else 
          {
              sum = 0;
              for (int k = 0; k < i; k++)
                  sum += L [i][k] * U [k][j];
 
              U [i][j] = (A [i][j] - sum) / L [i][i];
          }
      }
   }
   cout << "\n\n";
   for (int i = 0; i < n; i++)
   {
     for (int j = 0; j < n; j++)
         printf("%12.6f", U[i][j]);
        printf("\n");
   }
   cout << "\n\n";
   for (int i  = 0; i < n; i++)
   {
     for (int j = 0; j < n; j++)
 
      printf("%12.6f", L[i][j]);
        printf("\n");
   }
 
   return 0;
}
должно быть так, а у меня какая-то чушь получается.
Изображения
  
ChoPaPopa вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070