23.09.2014, 19:18 | #1 (permalink) |
Новичок
Регистрация: 23.09.2014
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
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; } |
23.09.2014, 19:18 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Возможно вы не обращали внимания, но на нашем форуме так же есть аналогичные темы Разложение музыки на составляющие Разложение функции Y в ряд S |
25.09.2014, 12:50 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Да в принципе всё правильно, вот только здесь:
Код:
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 = 0; i < n; i++) { U [0][i] = A [0][i]; L [i][0] = A [i][0] / U [0][0]; } |
25.09.2014, 20:17 | #3 (permalink) |
Новичок
Регистрация: 23.09.2014
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Спасибо большое (я не знаю где тут спасибо просто ставить)
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|