0 / 0 / 0
Регистрация: 13.01.2019
Сообщений: 50
1

Написать программу решения системы линейных алгебраических уравнений

22.07.2019, 08:36. Показов 8717. Ответов 4
Метки нет (Все метки)

Всем привет!
Прошу помочь разобраться.
Нужно: Написать программу решения системы линейных алгебраических уравнений одним из следующих методов:
а) методом Гаусса;
б) методом ортогонализации;
в) методом Халецкого;
г) методом простой итерации;
д) методом Зейделя.

Входные данные:
- порядок системы n;
- матрица системы A;
- правая часть системы b;
- точность (для итерационных методов).

Выходные данные:
- промежуточные векторы и матрицы;
- решение системы;
- невязка.
Изображения
 
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.07.2019, 08:36
Ответы с готовыми решениями:

Численные методы решения линейных алгебраических уравнений
Тема -ЧИСЛЕННЫЕ МЕТОДЫ РЕШЕНИЯ ЛИНЕЙНЫХ АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ Как написать в программе СИ++ ...

Решение системы линейных алгебраических уравнений
Добрый вечер!!! Помогите, пожалуйста, написать программу для решения системы уравнений...

Плохо обусловленные системы линейных алгебраических уравнений
Добрый вечер! Ребят, может сталкивался кто с такими методами решения плохо обусловленных систем...

Решение СЛАУ - Системы линейных алгебраических уравнений
Задачу почти закончил писать, матрицу приводит к ступенчатому виду, только не могу понять как...

4
191 / 90 / 33
Регистрация: 04.11.2013
Сообщений: 474
Записей в блоге: 4
22.07.2019, 15:27 2
Лучший ответ Сообщение было отмечено ilna как решение

Решение

Модифицированный метод Гаусса
habr.com/ru/sandbox/35982/

Добавлено через 52 минуты
То, что получилось у меня
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include <stdio.h>
 
void create_vector(double** a, int n) { *a = new double[n]; }
void create_matrix(double*** a, int n, int m) { int i; *a = new double*[n]; for(i=0;i<n;i++) (*a)[i] = new double[m]; }
void print_matrix(double** a, int n, int m) { int i,j; for(i = 0; i < n; i++) { for(j = 0; j < m; j++) printf("%f ", a[i][j]); printf("\n"); }  }
void print_vector(double* a, int n) { int i; for(i = 0; i < n; i++) printf("%f ", a[i]); printf("\n"); }
 
void mul(double** a1, double** a2, double** r, int n, int m)
{
 int i, j, k; 
 double sum;
 for(i = 0; i < n; i++) // строка первой матрицы 
  for(j = 0; j < m; j++) // столбец второй матрицы
  { 
   sum = 0.0; 
   for(k = 0; k < m; k++) // столбец первой матрицы   
    sum += a1[i][k] * a2[k][j];      
   r[i][j] = sum;      
  }  
}
 
 
int main()
{
int i,j,k,n(3),m(3);
double sum;
double **a;
double **l;
double **u;
double **r;
double *b;
double *y;
double *x;
 
create_matrix(&a,3,3);
create_matrix(&l,3,3);
create_matrix(&u,3,3);
create_matrix(&r,3,3);
create_vector(&b,3);
create_vector(&y,3);
create_vector(&x,3);
 
a[0][0] = 2; a[0][1] = -0.24; a[0][2] = 1;
a[1][0] = 3; a[1][1] = 5; a[1][2] = -2;
a[2][0] = 1; a[2][1] = -4; a[2][2] = 10;
 
b[0] = -3; b[1] = 1; b[2] = 0;
 
printf("a\n"); print_matrix(a, 3, 3); printf("\n");
printf("b\n"); print_vector(b,3); printf("\n");
 
// habr.com/ru/sandbox/35982/
for(i=0;i<3;i++)
 for(j=0;j<3;j++)
  u[i][j] = a[i][j];
 
 
for(i=0;i<3;i++)
 for(j=i;j<3;j++)
  l[j][i] = a[i][i];
 
for(k = 1; k < 3; k++)
{
 for(i = k-1; i < 3; i++)
  for(j = i; j < 3; j++)
   l[j][i] = u[j][i]/u[i][i];
 
 for(i = k;i < 3; i++)
  for(j = k-1;j < 3; j++)
   u[i][j] = u[i][j] - l[i][k-1]*u[k-1][j];
   
}
 
printf("u\n"); print_matrix(u, 3, 3); printf("\n");
printf("l\n"); print_matrix(l, 3, 3); printf("\n");
mul(l,u,r,3,3);
printf("r\n"); print_matrix(r, 3, 3); printf("\n");
 
y[0] = b[0] / l[0][0];
y[1] = (b[1] - l[1][0]*y[0]) / l[1][1];
y[2] = (b[2] - l[2][0]*y[0] - l[2][1]*y[1]) / l[2][2];
 
printf("y\n"); print_vector(y,3); printf("\n");
 
x[2] = y[2] / u[2][2]  ;
x[1] = (y[1] - u[1][2]*x[2]) / u[1][1];
x[0] = (y[0] - u[0][2]*x[2] - u[0][1]*x[1]) / u[0][0];
 
printf("x\n"); print_vector(x,3); printf("\n");
 
printf("%f\n", a[0][0]*x[0]+a[0][1]*x[1]+a[0][2]*x[2]);
printf("%f\n", a[1][0]*x[0]+a[1][1]*x[1]+a[1][2]*x[2]);
printf("%f\n", a[2][0]*x[0]+a[2][1]*x[1]+a[2][2]*x[2]);
 
return 0;
}
1
0 / 0 / 0
Регистрация: 13.01.2019
Сообщений: 50
23.07.2019, 14:04  [ТС] 3
Добрый день!

Спасибо большое!

Подскажите, какой метод использован?
0
191 / 90 / 33
Регистрация: 04.11.2013
Сообщений: 474
Записей в блоге: 4
24.07.2019, 05:43 4
Метод LU-разложение (модифицированный метод Гаусса).

Вы сдали задачу?
0
5 / 5 / 1
Регистрация: 10.07.2017
Сообщений: 56
04.07.2022, 08:38 5
Цитата Сообщение от Alexandr_1982 Посмотреть сообщение
Метод LU-разложение (модифицированный метод Гаусса).
Вы сдали задачу?
А не подскажете, для 4х4 системы?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
y[0] = b[0] / l[0][0];
    y[1] = (b[1] - l[1][0] * y[0]) / l[1][1];
    y[2] = (b[2] - l[2][0] * y[0] - l[2][1] * y[1]) / l[2][2];
    y[3] = (b[3] - l[3][0] * y[0] - l[3][1] * y[1]) / l[3][3];
 
    printf("y\n"); print_vector(y, 4); printf("\n");
 
//Вот тут завис...
    x[2] = y[2] / u[2][2]; 
    x[1] = (y[1] - u[1][2] * x[2]) / u[1][1];
    x[0] = (y[0] - u[0][2] * x[2] - u[0][1] * x[1]) / u[0][0];
 
    printf("x\n"); print_vector(x, 4); printf("\n");
 
    printf("%f\n", a[0][0] * x[0] + a[0][1] * x[1] + a[0][2] * x[2] + a[0][3] * x[3]);
    printf("%f\n", a[1][0] * x[0] + a[1][1] * x[1] + a[1][2] * x[2] + a[1][3] * x[3]);
    printf("%f\n", a[2][0] * x[0] + a[2][1] * x[1] + a[2][2] * x[2] + a[2][3] * x[3]);
    printf("%f\n", a[3][0] * x[0] + a[3][1] * x[1] + a[3][2] * x[2] + a[3][3] * x[3]);
 
    std::cout << "Press any key." << "\n";
    std::cin.get();
    return 0;
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.07.2022, 08:38
Помогаю со студенческими работами здесь

Решение системы линейных алгебраических уравнений методом Гаусса
Решить систему n линейных алгебраических уравнений методом Гаусса. Использовать указатели.

Решение системы линейных алгебраических уравнений, метод простой итерации
Решить систему линейных алгебраических уравнений. Коэффициенты и свободные члены линейного...

Написать программу для решения системы двух уравнений
не знаю как написать программу вводимы и выводимые данные сопровождать краткими поясняющими...

Написать программу для решения системы нелинейных уравнений
Не могу сделать прогу на С++. Кто сделает - огромное спасибо. sin(9x)+cos(7y)-5z*z=10,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru