Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 08.10.2018
Сообщений: 4

Решение СЛАУ с использованием метода релаксации

08.10.2018, 10:45. Показов 2614. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Решить СЛАУ с помощью метода релаксации https://www.cyberforum.ru/cgi-bin/latex.cgi?\begin{cases} & \text 3*x1-x2+x3=10 \\  & \text 2*x1-x2+3*x3=3.5 \\  & \text x1-x2-0.5*x3=0.75\end{cases}
Помогите реализовать этот метод..
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
08.10.2018, 10:45
Ответы с готовыми решениями:

Решение слау методом релаксации
Доброго времени суток. В качестве исходных данных имеются слау большой размерности (koeff__100.7z) и решение этой слау (result__100.7z). ...

Разработать алгоритм численного решения СЛАУ методом верхней релаксации
Помогите пожалуйста курсач горит (:ireful: Разработать алгоритм численного решения cистема линейных алгебраических уравнений методом...

Реализация численного метода решения СЛАУ
Помогите разработать ПО для реализации численного метода простой итерации решения СЛАУ.

2
75 / 59 / 31
Регистрация: 20.03.2017
Сообщений: 351
08.10.2018, 10:53
Ivan Dulskiy, здравствуйте, а погуглить никак?
Вот хотя бы: Решение СЛАУ методом верхней релаксации
0
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
08.10.2018, 15:14
Дано:

Решить уравнение:

https://www.cyberforum.ru/cgi-bin/latex.cgi?Ax=b,
где:
https://www.cyberforum.ru/cgi-bin/latex.cgi?A=\left(\begin{matrix}<br />
3 & -1 & 1 \\<br />
2 & -1 & 3 \\<br />
1 & -1 & -0.5<br />
\end{matrix}\right),\, b = \begin{pmatrix}<br />
10 \\<br />
3.5 \\<br />
0.75<br />
\end{pmatrix}.

Решение:

Приведём уравнение к виду:

https://www.cyberforum.ru/cgi-bin/latex.cgi?Bx+c = 0,
где:
https://www.cyberforum.ru/cgi-bin/latex.cgi?B = \begin{pmatrix}<br />
-1 & b_{01} & b_{02} \\<br />
b_{10} & -1 & b_{12} \\<br />
b_{20} & b_{21} & -1<br />
\end{pmatrix},<br />
т.е.
https://www.cyberforum.ru/cgi-bin/latex.cgi?b_{ij} = - \frac{a_{ij}}{a_{ii}},\, c_i = \frac{b_i}{a_{ii}}.
Выберем:

- начальное значение https://www.cyberforum.ru/cgi-bin/latex.cgi?x^{(0)} (например, (0, 0 , 0)),
- параметр метода https://www.cyberforum.ru/cgi-bin/latex.cgi?\omega\, (0 < \omega < 2),
- точность https://www.cyberforum.ru/cgi-bin/latex.cgi?\varepsilon.

Тогда:

https://www.cyberforum.ru/cgi-bin/latex.cgi?x^{(k+1)}_i = (1-\omega)x^{(k)}_i + \omega\left(c_i + \sum_{j < i}{b_{ij}x^{(k+1)}_j} + \sum_{j > i}{b_{ij}x^{(k)}_j}\right)

Повторять до:
https://www.cyberforum.ru/cgi-bin/latex.cgi?|| x^{(k)}-x^{(k+1)}|| < \varepsilon

Реализация:

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
#include <iostream>
 
#define N 3
 
int main()
{
  const double omega = 0.5; // 0.0 < omega < 2.0
  const double eps = 0.000001;
  const int MAX_STEPS = 1000;
  double xk[N] = {0.0, 0.0, 0.0}; // начальная точка
 
  // Исходное СЛАУ
  double A[N][N] = {{3.0, -1.0, 1.0}, {2.0, -1.0, 3.0}, {1.0, -1.0, -0.5}};
  double b[N] = {10.0, 3.5, 0.75};
 
  // Новое СЛАУ
  double B[N][N];
  double c[N];
 
  double xk1[N]; // x^{(k+1)}
 
  int step = 0;
  double norm2;
 
  // Вычисление новой СЛАУ
  for (int i = 0; i < N; ++i) {
    c[i] = b[i] / A[i][i];
    for (int j = 0; j < N; ++j) {
      B[i][j] = -A[i][j] / A[i][i];
    }
  }
 
  do {
    // Следующая точка
    for (int i = 0; i < N; ++i) {
      xk1[i] = (1.0 - omega) * xk[i];
      double s = c[i];
      for (int j = 0; j < i; ++j) {
        s += B[i][j] * xk1[j];
      }
      for (int j = i + 1; j < N; ++j) {
        s += B[i][j] * xk[j];
      }
      xk1[i] += omega * s;
    }
 
    // вычисление нормы разности в квадрате
    norm2 = 0.0;
    for (int i = 0; i < N; ++i) {
      norm2 += (xk[i] - xk1[i]) * (xk[i] - xk1[i]);
    }
 
    // Сохраняем x^{k+1} в x^{k}
    for (int i = 0; i < N; ++i) {
      xk[i] = xk1[i];
    }
 
    // Печатаем информацию о текущем шаге
    ++step;
    std::cout << "step: " << step << std::endl;
    std::cout << "  norm^2: " << norm2 << std::endl;
    std::cout << "  x:";
    for (int i = 0; i < N; ++i) {
      std::cout << " " << xk[i];
    }
    std::cout << std::endl;
    std::cout << "  A*x: ";
    double r[N];
    for (int i = 0; i < N; ++i) {
      r[i] = 0.0;
      for (int j = 0; j < N; ++j) {
        r[i] += A[i][j] * xk[j];
      }
      std::cout << " " << r[i];
    }
    std::cout << std::endl;
  } while ((norm2 >= eps * eps) && (step < MAX_STEPS));
 
  return 0;
}
Замечание:
При omega > 0.5 решение расходиться!!! В чём прикол, пока не понял.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.10.2018, 15:14
Помогаю со студенческими работами здесь

Решить СЛАУ многопоточным вариантом метода Гаусса
Здравствуйте,прошу помощи по условию моего задания: Решить систему линейных уравнений параллельным вариантом метода Гаусса. Количество...

СЛАУ на C++ с использованием ООП
Помогите пожалуйста, у самой ничего не получается. Нужно написать программу по подсчету системы линейных уравнений третьего порядка с...

решение Слау
Написал код для решение Слау методом lu-разложение, но он не работает, выдает ошыбки, которые не могу никак исправить. Прошу помочь. Давно...

Решение слау.
Здравствуйте. Я пишу программу, которая будет решать слау одним из выбранных мною методов. Методы решения мне известны и организовать их в...

Решение СЛАУ
Доброго времени суток . Пишу программу , которая должна решать системы линейных уравнений методом Гаусса(методом ведущего элемента в...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru