前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向对象有限元编程|数值计算类

面向对象有限元编程|数值计算类

作者头像
fem178
发布2020-10-30 14:40:56
5590
发布2020-10-30 14:40:56
举报
  • 生成矩阵

python主要依赖第三方库numpy,其中np.array和np.mat有区别,主要体现在:

  1. 生成矩阵所需格式不同

np.mat可以从字符串或列表中生成,而np.array只能从列表中生成。

代码语言:javascript
复制

import numpy as np
a = np.mat("1,2; 3,4")  #字符串生成2x2矩阵
b = np.mat([ [5,6], [7,8] ])   #列表生成2x2矩阵

c = np.array([ [2,6], [5,8] ]) 
  1. 生成的数组运算方式不同

np.array生成矩阵,用np.dot()表示矩阵乘法,星号(*)或np.multiply()表示点乘(对应元素相乘)。

代码语言:javascript
复制

import numpy as np
a = 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()表示点乘(对应元素相乘)。

代码语言:javascript
复制

import numpy as np
a = 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,例如

代码语言:javascript
复制
##方程组Ax=b的解
import numpy as np
A =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等。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-10-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数值分析与有限元编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档