高斯--塞德尔迭代法求方程组的解(Python实现)
生活随笔
收集整理的这篇文章主要介绍了
高斯--塞德尔迭代法求方程组的解(Python实现)
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
数值分析题目
求方程组
{5x1+2x2+x3=−12−x1+4x2+2x3=202x1+−3x2+10x3=2\left\{ \begin{array}{c} 5x_1+2x_2 + x_3 = -12 \\ -x_1 + 4x_2+2x_3 = 20 \\ 2x_1+-3x_2+10x_3=2 \end{array} \right. ⎩⎨⎧5x1+2x2+x3=−12−x1+4x2+2x3=202x1+−3x2+10x3=2
上面方程当然是非常容易求解的,但是方程规模变大的时候(比如系数矩阵是100w* 100w的时候,这时候,用这个写就会比较简单了。。)
可以对比着之前的雅各比迭代法对比一下效果
雅克比迭代法求方程组的解(Python实现)
代码
# @Time : 2018/5/22 17:23 # @Author : Sean # @Site : # @File : 1.py # @Software: PyCharmimport numpy as npA = np.array([[5.0, 2, 1], [-1, 4, 2], [2, -3, 10]]) B = np.array([-12.0, 20, 3]) x0 = np.array([1.0, 1, 1]) x = np.array([0.0, 0, 0]) times = 0while True:for i in range(3):temp = 0tempx = x0.copy()for j in range(3):if i != j:temp += x0[j] * A[i][j]x[i] = (B[i] - temp) / A[i][i]x0[i] = x[i].copy()calTemp = max(abs(x - tempx))times += 1if calTemp < 1e-4:breakelse:x0 = x.copy()print(times) print(x)总结
以上是生活随笔为你收集整理的高斯--塞德尔迭代法求方程组的解(Python实现)的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 雅克比迭代法求方程组的解(Python实
- 下一篇: 拉格朗日插值--等距节点Python实现