面向对象有限元编程|数值计算类
生成矩阵python主要依赖第三方库numpy,其中np.array和np.mat有区别,主要体现在:生成矩阵所需格式不同np.mat可以从字符串或列表中生成,而np.array只能从列表中生成。import numpy as npa = np.mat("1,2; 3,4") #字符串生成2x2矩阵b = np.mat([ [5,6], [7,8] ]) #列表生成2x2矩阵c = np.array([ [2,6], [5,8] ]) 生成的数组运算方式不同np.array生成矩阵,用np.dot()表示矩阵乘法,星号(*)或np.multiply()表示点乘(对应元素相乘)。import numpy as npa = np.array([ [1, 1], [1, 1] ])b = np.array([ [2, 2], [2, 2] ])c = np.dot(a, b) #矩阵乘法d = np.multiply(a, b) #对应元素相乘e = a*b #对应元素相乘 np.mat生成矩阵,星号(*)和np.dot()表示矩阵乘法,np.multiply()表示点乘(对应元素相乘)。import numpy as npa = np.mat([[1, 1], [1, 1]])b = np.mat([[2, 2], [2, 2]])c = a*b #矩阵乘法d =np.dot(a, b) #矩阵乘法e = np.multiply(a, b) #对应元素相乘 矩阵索引用a[0][0]访问矩阵a中第一行第一列元素,注意索引值从0开始。解方程组用np.linalg.solve(A, b)解方程组Ax=b,例如##方程组Ax=b的解import numpy as npA =np.array( [ [6, -1.5, 1], [-1.5, 1.875, -1.5], [1, -1.5, 2] ])b = np.array( [ 30, -10, 0 ] )x = np.linalg.solve(A, b)print("Solution", x) C++的数值计算类可以用第三方数值计算库,比如Eigen, BLAS等。来源:数值分析与有限元编程