栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Gauss

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Gauss

# Gauss-Seidel method with python from wikipedia 
# https://en.wikipedia.org/wiki/Gauss%E2%80%93Seidel_method

import numpy as np

iteration_limit = 1000

# initialize the matrix

A = np.array([[10., -1., 2., 0.],
              [-1., 11., -1., 3.],
              [2., -1., 10., -1.],
              [0., 3., -1., 8.]])

# initialize the RHS vector
b = np.array([6.0, 25.0, -11.0, 15.0])

print("System of equations:")
for i in range(A.shape[0]):
	row = ["{0:3g}*x{1}".format(A[i, j], j+1) for j in range(A.shape[1])]
	print("[{0}] = [{1:3g}]".format("+".join(row), b[i]))

x = np.zeros_like(b)
for it_count in range(1, iteration_limit):
	x_new = np.zeros_like(x)
	print("Iteration {0}:{1}".format(it_count, x))
	for i in range(A.shape[0]):
		s1 = np.dot(A[i, :i], x_new[:i])
		s2 = np.dot(A[i, i+1:], x[i+1:])
		x_new[i] = (b[i] - s1 - s2) / A[i, i]
	if np.allclose(x, x_new, rtol=1e-8):
		break
	x = x_new

print("Solution: {0}".format(x))
error = np.dot(A, x) - b
print("Error: {0}".format(error))

TODO: wavefront parallel method with openmp

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529804.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号