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

Обратный ход метода Гаусса

27.11.2022, 19:02. Показов 3265. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, имеется код приведения матрицы к верхне-треугольной форме
Вводные данные: СЛАУ И столбец b элементов.Сделаем матрицу из слау, и при объеденении матрицы и b el получаем матрицу

{el,el,el | b} // любой el=элемент матрицы //b=элемент б столбца.
{el,el, el | b}
{el, el,el | b}




пример: {1,el,el | b} //пример измененной (через функцию ниже) матрицы
{0,1, el | b}
{0, 0,1 | b}

код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import numpy as np
matrix = np.array([[3.8, 6.7, -1.2, 5.2],
                   [6.4, 1.3, -2.7, 3.8],
                   [2.4, -4.5, 3.5, -0.6]])
 
def gaussFunc(matrix):
    for nrow, row in enumerate(matrix):
        # nrow равен номеру строки
        # row содержит саму строку матрицы
        divider = row[nrow] # диагональный элемент
        # делим на диагональный элемент.
        row /= divider
        # теперь надо вычесть приведённую строку из всех нижележащих строчек
        for lower_row in matrix[nrow+1:]:
            factor = lower_row[nrow] # элемент строки в колонке nrow
            lower_row -= factor*row # вычитаем, чтобы получить ноль в колонке nrow
    # все строки матрицы изменились, в принципе, можно и не возвращать
    return matrix
В чем вопрос. По методу гаусса есть прямой ход(реализованный в функции gaussFunc) и есть обратный ход(не могу реализовать).
Как мне выразить иксы слау обратным ходом?
Как реализовать обратный ход в целом?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2022, 19:02
Ответы с готовыми решениями:

Прямой ход метода Гаусса
Нигде не нашёл, как взаимодействовать с элементами двумерного массива также как в паскале : for k := 1 to n do { прямой ход Гаусса } ...

Реализация метода Гаусса, прямым ходом
Всем привет. Составляю алгоритм метода Гаусса на питоне: import numpy as np import math wide_arr = np.array(, , ]) ...

Реализация метода Гаусса прямым ходом
Всем привет. Составляю алгоритм метода Гаусса на питоне: import numpy as np import math wide_arr = np.array(, #Расширенная...

6
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
27.11.2022, 20:00
Как вариант:
Python
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
import numpy as np
matrix = np.array([[3.8, 6.7, -1.2, 5.2],
                   [6.4, 1.3, -2.7, 3.8],
                   [2.4, -4.5, 3.5, -0.6]])
 
def gauss(matrix):
    for nrow, row in enumerate(matrix):
        # nrow равен номеру строки
        # row содержит саму строку матрицы
        divider = row[nrow] # диагональный элемент
        # делим на диагональный элемент.
        row /= divider
        # теперь надо вычесть приведённую строку из всех нижележащих строчек
        for lower_row in matrix[nrow+1:]:
            factor = lower_row[nrow] # элемент строки в колонке nrow
            lower_row -= factor*row # вычитаем, чтобы получить ноль в колонке nrow
    # все строки матрицы изменились, в принципе, можно и не возвращать
    return matrix
def gauss_reverse(matrix):
    n_row=matrix.shape[0]
    x=[None]*n_row
    for i in range(n_row-1, -1,-1):
        x[i]=matrix[i,-1]-np.dot(matrix[i, i+1:n_row], x[i+1:])
    return(np.array(x))
x=gauss_reverse(gauss(matrix))
print(x)
0
0 / 0 / 0
Регистрация: 25.03.2022
Сообщений: 36
27.11.2022, 20:08  [ТС]
Извините, я тоже подумал об этом, но забыл уточнить в задании.
У вас используется метод Жордана-Гаусса. Он работает правильно. Но мне нужно именно выражение х и y снизу вверх
Пробую загрузить фото примера, как должно работать
Миниатюры
Обратный ход метода Гаусса  
0
0 / 0 / 0
Регистрация: 25.03.2022
Сообщений: 36
27.11.2022, 20:10  [ТС]
Полный алгоритм решения нужным методом
Миниатюры
Обратный ход метода Гаусса  
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
27.11.2022, 20:22
Sakaido, так у меня в коде так и работает.. сначала находится нижнее значение (z), затем следующее (y), и наконец, первое (x)
поставьте print(x[i]) после 23 строки.
0
0 / 0 / 0
Регистрация: 25.03.2022
Сообщений: 36
27.11.2022, 20:25  [ТС]
Ой, простите. Я дурачок просто. А не могли бы вы описать комментарии для своего кода, чтобы я мог разобраться? Желательно для каждой строчки. Спасибо заранее
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,759
27.11.2022, 20:33
Лучший ответ Сообщение было отмечено Sakaido как решение

Решение

Python
1
2
3
4
5
6
def gauss_reverse(matrix):
    n_row=matrix.shape[0] # число строк в матрице
    x=[None]*n_row # инициализируем вектор решений None
    for i in range(n_row-1, -1,-1): # обратный отсчет i=3,2,1,0..
        x[i]=matrix[i,-1]-np.dot(matrix[i, i+1:n_row], x[i+1:]) #от последнего столбца вычитаются  значения уже известных x, умноженных на соответствующие элементы треугольной матрицы (см. свою схему)
    return(np.array(x))
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2022, 20:33
Помогаю со студенческими работами здесь

Не работает обратный ход метода Гаусса
Здраствуйте, не могу понять в чем проблема прямой ход метода Гаусса работает, а обратный нет #include <iostream> #include...

С++, OpenMP и обратный ход метода гаусса
Дана нижнетреугольная матрица А, найти обратную матрицу ей из определения А*Б=Е (Где Б обратная матрица, Е - единичная) Размера N*N ...

Как реализовать обратный ход метода Гаусса?
В общем, мой код преобразует матрицу в вид: 1 0 3 4 5 6 0 1 3 4 5 6 0 0 1 4 5 6 0 0 0 1 5 6 0 0 0 0 1 6 То есть получает...

Обратный ход метода Гаусса для одномерного массива
Доброго времени суток. Есть функция для двумерного массива: double x; for (int i = N-1; i >= 0; i--) { ...

Обратный ход Гаусса
Задача на обратный ход Гаусса, я не успеваю досдать все лабы к сему, а меня попросили добавить ввод на главную диагональ в задаче и...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru