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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2012, 20:07   #1
ISunRiseI
Новичок
Джуниор
 
Регистрация: 25.12.2012
Сообщений: 1
По умолчанию LU - разложение, для решения СЛАУ(проверьте)

Здравствуйте. Проверьте пожалуйста программу, она должна решать СЛАУ методом LU разложения. И ещё 1 просьба, если программа рабочая скиньте пожалуйста .exe файл этой программы.
Код:
 #include <iostream>
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 ];
 
//задаем матрицу A[][] ...
 
  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;
    }
  }
 
//==============================================
 
//находим первый столбец L[][] и первую строку U[][]
 
  for (int i = 0; i < n; i++)
  {
    L [i][0] = A [i][0];
    U [0][i] = A [0][i] / L [0][0];
  }
 
//дальше вычисляем L[][], U[][] по формуле
 
  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++)
       cout << "  " << L [i][j] << "   ";
     cout << "\n\n";
   }
 
   cout << "\n\n";
 
   for (int i  = 0; i < n; i++)
   {
     for (int j = 0; j < n; j++)
       cout << "  " << U [i][j] << "   ";
     cout << "\n\n";
   }
 
   return 0;
}

Последний раз редактировалось ISunRiseI; 25.12.2012 в 20:52.
ISunRiseI вне форума Ответить с цитированием
Старый 19.03.2021, 00:07   #2
Ru5lan
Новичок
Джуниор
 
Регистрация: 19.03.2021
Сообщений: 1
По умолчанию Спасибо за код. Вот его иная сторона (рабочая)

#include <iostream>
#include <iomanip> // для setprecision
#include <Math.h>

#define N 50
using namespace std;

int main()
{
setlocale(LC_ALL, "rus");

double mas[N][N + 1],
L[N][N + 1],
U[N][N + 1],
x[N]; // Корни системы
double sum = 0;
int i, j, k, n;

cout << "Введите число ур-ий системы: "; cin >> n;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
cout << "\na[" << i << "][" << j << "] = ";
cin >> mas[i][j];

L[i][j] = 0;
U[i][j] = 0;

if (i == j)
U[i][j] = 1;
}
}

//находим первый столбец L[][] и первую строку U[][]
for (int i = 0; i < n; i++)
{
L[i][0] = mas[i][0];
U[0][i] = mas[0][i] / L[0][0];
}

//дальше вычисляем L[][], U[][] по формуле
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] = mas[i][j] - sum;
}
else // верхний
{
sum = 0;
for (int k = 0; k < i; k++)
sum += L[i][k] * U[k][j];

U[i][j] = (mas[i][j] - sum) / L[i][i];
}
}
}

cout << "\n\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << " " << L[i][j] << " ";
cout << "\n\n";
}

cout << "\n\n";

for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
cout << " " << U[i][j] << " ";
cout << "\n\n";
}

return 0;
}
Ru5lan вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод простой итерации для решения слау marwell. Помощь студентам 1 24.12.2012 22:05
Метод Ричардсона для решения СЛАУ антон9319 Помощь студентам 0 09.12.2011 20:31
программа для решения СЛАУ методом Гаусса Natalie023 Помощь студентам 5 17.07.2011 13:31
Код в Delphi для решения СЛАУ Marat6233 Помощь студентам 0 14.04.2010 16:54
Метод Гаусса с выбором главного элемента для решения СЛАУ lira_slava Помощь студентам 3 21.05.2009 20:56