Jacobi迭代法求n阶线性方程组(python)

(一)目的

通过设计、编制、调试2~3个求n阶线性方程组数值解的程序,加深对其数值计算方法及有关的基础理论知识的理解。

(二)要求

    用编程语言实现用高斯(Gauss)消元法求n阶线性方程组的解、用列主元高斯(Gauss)消元法求n阶线性方程组的解、用库郎(Courant)列主直接分解法求n阶线性方程组的解的程序。

二、示例

1、问题

用高斯(Gauss)消元法求n阶线性方程组的解。

2、算法描述

(略)

3、程序中变量说明

    (略)

4、源程序清单及运行结果

(略)

5、按以上4点要求编写上机实验报告。

Jacobi迭代法基本原理:

Jacobi迭代法求n阶线性方程组(python)_第1张图片

 Jacobi迭代法求n阶线性方程组(python)_第2张图片

 Jacobi迭代法求n阶线性方程组(python)_第3张图片

 python实现:

import numpy as np

def Jacobi(a,b,k):#k迭代次数
    m,n=a.shape
    if(m!=n):
        print("NO answer")
    times=0
    X=np.zeros(n)#初次迭代X[0,0,0]
    x=np.zeros(n)#迭代后更新x
    while times

结果如下:

Jacobi迭代法输出结果:

E:\shuzhifenxishiyan\Jacobi\venv\Scripts\python.exe E:/shuzhifenxishiyan/Jacobi/main.py

[0. 0. 0.]

[ 0.5         2.66666667 -2.5       ]

[ 1.83333333  2.         -1.16666667]

[ 1.5         2.88888889 -1.5       ]

[ 1.94444444  2.66666667 -1.05555556]

[ 1.83333333  2.96296296 -1.16666667]

[ 1.98148148  2.88888889 -1.01851852]

[ 1.94444444  2.98765432 -1.05555556]

[ 1.99382716  2.96296296 -1.00617284]

[ 1.98148148  2.99588477 -1.01851852]

[ 1.99794239  2.98765432 -1.00205761]

[ 1.99382716  2.99862826 -1.00617284]

[ 1.99931413  2.99588477 -1.00068587]

[ 1.99794239  2.99954275 -1.00205761]

[ 1.99977138  2.99862826 -1.00022862]

[ 1.99931413  2.99984758 -1.00068587]

[ 1.99992379  2.99954275 -1.00007621]

[ 1.99977138  2.99994919 -1.00022862]

[ 1.9999746   2.99984758 -1.0000254 ]

[ 1.99992379  2.99998306 -1.00007621]

Process finished with exit code 0

迭代20次后结果非常接近精确解。

你可能感兴趣的:(数值分析,python,算法)