Решатель Гаусса-Зейделя для Python 2.7

Есть ли пакет Python 2.7, содержащий решатель Гаусса-Зиделя для систем с более чем 3 линейными алгебраическими уравнениями, содержащими более 3 неизвестных? Ниже приводится простой пример проблемы, которую я хотел бы решить. Если нет доступных шаблонов или пакетов, можно ли решить эту проблему с помощью Python? Если да, то не могли бы вы посоветовать, как лучше это сделать? Спасибо.

Пример трех линейных алгебраических уравнений с тремя неизвестными (x, y, z):

x - 3y + z = 10

2x + 5y + z = 4

-x + y - 2z = -13


person alkey    schedule 06.04.2014    source источник


Ответы (1)


После небольшого поиска я нашел решение - использовать команду numpy.linalg.solve. Команда использует процедуру LAPACK gesv для решения проблемы; однако я не уверен, какой итеративный метод здесь используется.

Вот код для решения проблемы, если кому-то интересно:

a = np.array([[1,-3,1],[2,5,1],[-1,1,-2]])
b = np.array([10,4,-13])

x = np.linalg.solve(a, b)

print x

print np.allclose(np.dot(a, x), b)      # To check the solution is found
person alkey    schedule 08.04.2014