资讯详情

【线代&NumPy】第二章 - 线性方程课后练习 | Gauss-Jordan | .zero .ones .full .eye | 简述并提供代码

一个用python科学计算包括:1。强大的N维数组对象Array;2.成熟的(广播)函数库;3.用于整合C/C 和Fortran代码工具包;4.实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更方便。

NumPy(Numeric Python)矩阵数据类型、矢量处理、精密操作库等高级数值编程工具。产生严格的数字处理。它主要用于许多大型金融公司,以及核心科学计算组织,如:Lawrence Livermore,NASA用它来处理一些最初使用的事情C ,Fortran或Matlab等所做的任务。

NumPy 的前身为 Numeric ,最早由 Jim Hugunin 2005年与其他合作伙伴共同开发 年,Travis Oliphant 在 Numeric 另一个具有相同性质的程序库 Numarray 加入其他扩展开发的特点 NumPy。NumPy 许多合作伙伴共同维护和开发源代码。

高斯消元法(或翻译:高斯消去法)是线性代数规划中的算法,可用于解决线性方程组。但其算法非常复杂,不常用于加减消元法、找出矩阵秩、找出可逆方阵的逆矩阵。但是,如果有100万个等式,算法将非常省时。一些大的方程组通常用迭代法和花式消元来解决。当用于矩阵时,高斯消元法会产生行梯阵式。高斯消元法可用于计算机解决数千个等式和未知数。还有一些方法专门用来解决一些具有特殊排列系数的方程组。

?? 例1:Gauss-Jordan

import numpy as np  # 打印 matrix A def pprint(msg, A):     print("---", msg, "---")     (n,m) = A.shape     for i in range(0, n):         line = ""         for j in range(0, m):             line  = "{0:.2f}".format(A[i,j])   "\t"             if j == n-1:                 line  = "| "         print(line)     print("")      # Gauss-Jordan 消元法 def gauss(A):     (n,m) = A.shape     for i in range(0, min(n,m)):         # i在第二列中选择绝对值最大的行         maxEl = abs(A[i,i])         maxRow = i         for k in range(i 1, n):             if abs(A[k,i]) > maxEl:                 maxEl = abs(A[k,i])                 maxRow = k         # i 与 maxRow的交换         for k in range(i, m):             tmp = A[maxRow,k]             A[maxRow,k] = A[i,k]             A[i,k] = tmp         # 1         piv = A[i,i]         for k in range(i, m):             A[i,k] = A[i,k]/piv         # 将当前第i列的第i行以外的所有设置为0         for k in range(0, n):             if k != i:                 c = A[k,i]/A[i,i]                 for j in range(i, m):                     if i == j:                         A[k,j] = 0                     else:                         A[k,j] = A[k,j] - c * A[i,j]         pprint(str(i 1) "次", A) # 打印过程      # 转换 Ax=b 的解     x = np.zeros(m-1)     for i in range(0,m-1):         x[i] = A[i,m-1]     return x  # 给定联合线性方程,添加矩阵  # (eg.) A = np.array([[2., 2., 4., 18.], [1., 3., 2., 13.], [3., 1., 3., 14.]]) pprint("A:", A) x = gauss(A) # 利用 Gauss-Jordan 消元法 # 打印 (n,m) = A.shape line = "解:\t" for i in range(0, m-1):     line  = "{0:.2f}".format(x[i])   "\t" print(line)  

?? 运行结果:

?? 例2:

import numpy as np  a = np.zeros((2, 3)) print("a =", a)  b = np.ones((2, 2)) print("b =", b)  c = np.full((3, 2), 3) print("c =", c)  d = np.eye(2) print("d =", d)

?? 运行结果:


Introduction to Linear Algebra, International 4 th Edition by Gilbert Strang, Wellesley Cambridge Press.

百度百科[EB/OL]. []. https://baike.baidu.com/.

本篇完。

标签: 球阵式集成电路

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台