当前位置:   article > 正文

Jacobi迭代法求n阶线性方程组(python)_n阶方程式求解程序

n阶方程式求解程序

(一)目的

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

(二)要求

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

二、示例

1、问题

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

2、算法描述

(略)

3、程序中变量说明

    (略)

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

(略)

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

Jacobi迭代法基本原理:

 

 

 python实现:

  1. import numpy as np
  2. def Jacobi(a,b,k):#k迭代次数
  3. m,n=a.shape
  4. if(m!=n):
  5. print("NO answer")
  6. times=0
  7. X=np.zeros(n)#初次迭代X[0,0,0]
  8. x=np.zeros(n)#迭代后更新x
  9. while times<k:
  10. for i in range(n):
  11. sum=0
  12. for j in range(n):
  13. if(i!=j):
  14. sum=sum+a[i][j]*X[j]
  15. x[i]=(b[i]-sum)/a[i][i]
  16. print(X)
  17. times=times+1
  18. X=x.copy() #迭代X
  19. a=np.array([[2.0,-1.0,0.0],[-1.0,3.0,-1.0],[0.0,-1.0,2.0]])
  20. b = np.array([1.0,8.0,-5.0])
  21. Jacobi(a,b,20)
  22. #[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次后结果非常接近精确解。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/78132
推荐阅读
相关标签
  

闽ICP备14008679号