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

(一)目的

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

(二)要求

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

二、示例

1、问题

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

2、算法描述

(略)

3、程序中变量说明

    (略)

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

(略)

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

Jacobi迭代法基本原理:

 

 

 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<k:
        for i in range(n):
            sum=0
            for j in range(n):
                if(i!=j):
                  sum=sum+a[i][j]*X[j]
            x[i]=(b[i]-sum)/a[i][i]
        print(X)
        times=times+1
        X=x.copy()  #迭代X
a=np.array([[2.0,-1.0,0.0],[-1.0,3.0,-1.0],[0.0,-1.0,2.0]])
b = np.array([1.0,8.0,-5.0])
Jacobi(a,b,20)
#[2.0,3.0,-1.0](结果)


结果如下:

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次后结果非常接近精确解。

  • 1
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值