Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >大规模开源线性代数求解器(Eigen,LAPACK,Ceres)+JSim数值解算器+Plot Digitizer

大规模开源线性代数求解器(Eigen,LAPACK,Ceres)+JSim数值解算器+Plot Digitizer

作者头像
云深无际
发布于 2021-12-08 12:02:31
发布于 2021-12-08 12:02:31
2K00
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行

看见一个招聘的要求,说有这个的经验最好。就搜索了一下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://eigen.tuxfamily.org/index.php?title=Main_Page

一个C++的计算矩阵的库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <iostream>
#include <Eigen/Dense>

using Eigen::MatrixXd;

int main()
{
  MatrixXd m(2,2);
  m(0,0) = 3;
  m(1,0) = 2.5;
  m(0,1) = -1;
  m(1,1) = m(1,0) + m(0,1);
  std::cout << m << std::endl;
}

没有什么依赖的库,就是标准库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html

这是他的长篇教程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://www.netlib.org/lapack/

LAPACK 是用 Fortran 90 编写的,提供用于求解联立线性方程组、线性方程组的最小二乘解、特征值问题和奇异值问题的例程。还提供了相关的矩阵分解(LU、Cholesky、QR、SVD、Schur、广义 Schur),以及相关计算,例如 Schur 分解的重新排序和估计条件数。处理密集矩阵和带状矩阵,但不处理一般稀疏矩阵。在所有领域,都为单精度和双精度实数和复数矩阵提供了类似的功能。

LAPACK 项目的最初目标是使广泛使用的 EISPACK 和 LINPACK 库在共享内存向量和并行处理器上高效运行。在这些机器上,LINPACK 和 EISPACK 效率低下,因为它们的内存访问模式不考虑机器的多层内存层次结构,从而花费太多时间移动数据而不是进行有用的浮点运算。LAPACK 通过重新组织算法以在最内层循环中使用块矩阵运算(例如矩阵乘法)来解决此问题。这些块操作可以针对每个架构进行优化,以考虑内存层次结构,从而提供一种可移植的方式来在不同的现代机器上实现高效率。我们使用术语“便携式”而不是“便携式”,因为,编写 LAPACK 例程,以便通过调用基本线性代数子程序 (BLAS) 来执行尽可能多的计算。LAPACK 一开始就被设计为利用 Level 3 BLAS——一组 Fortran 子程序的规范,用于执行各种类型的矩阵乘法和具有多个右手边的三角系统的解决方案。由于 3 级 BLAS 操作的粗粒度,它们的使用提高了许多高性能计算机的效率,特别是如果制造商提供了特殊编码的实现。

BLAS 的高效机器特定实现可用于许多现代高性能计算机。有关已知供应商或 ISV 提供的 BLAS 的详细信息,请参阅 BLAS 常见问题解答。或者,用户可以下载 ATLAS 以自动为架构生成优化的 BLAS 库。BLAS 的 Fortran 77 参考实现可从 netlib 获得;但是,不鼓励使用它,因为它的性能不如经过专门调整的实现。

但是吧,太复杂了。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://www.netlib.org/lapack/lug/node3.html

给了一本书的地址,可以看看。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://ceres-solver.org/

Google的计算库,看起来不错,名字叫做谷神星

反正挺多的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/ceres-solver/ceres-solver

开源地址在此。

其实对于我这种数值算法爱好者来说,这些库真是再好不过的学习资源了。

对了,看论文的时候看到一个有趣的东西。是一个Java的数值计算包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.physiome.org/

文章就是这样写的

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.physiome.org/jsim/docs/MML_Matlab.html
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// Example for MML to Matlab translation
import nsrunit; 
unit conversion on;

math mml2matlab {
   realDomain t sec; t.min=0; t.max=1; t.delta=0.01;
   real C(t) mM;
   real k =1 sec^(-1);
   when(t=t.min) C=1;
   C:t = -k*C; 
}

我们写的仿真程序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
options = odeset('RelTol',1e-12,'AbsTol',1e-9);
[t x rInfo] = mytest( linspace(0,1,101),@ode23,options);
clf;
plot(t,x,'k')
title('Exponential Decay')
xlabel('Time, sec')
ylabel('Concentration, mM')
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
http://plotdigitizer.sourceforge.net

Plot Digitizer 是一个 Java 程序,用于数字化功能数据的扫描图。在报告和参考文献中,数据通常以功能 XY 型散点图或折线图的形式呈现。为了使用这些数据,必须以某种方式将其数字化。该程序将允许您获取绘图的扫描图像(GIF、JPEG 或 PNG 格式),只需在每个数据点上单击鼠标即可快速将绘图中的值数字化。然后可以将这些数字保存到文本文件中,并在您需要的任何地方使用。Plot Digitizer 适用于线性和对数轴刻度。除了数字化数据图中的点外,该程序还可用于数字化其他类型的扫描数据(例如缩放绘图或正字照片)。

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

本文分享自 云深之无迹 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【C++】开源:Eigen3线性代数模板库配置使用
项目Gitlab地址:https://gitlab.com/libeigen/eigen
DevFrank
2024/07/24
4510
基准测试理论全面介绍:IOmeter、Stream、Whetstone、Dhrystone、SPEC、TPC、Linpack
计算机硬件的不断的升级带来系统处理性能持续的提高,如何对平台或系统的性能作出正确的判断就是性能测试的主要目标。
johnny666
2024/09/30
3410
精通 NumPy 数值分析:6~10
到目前为止,您应该能够使用 NumPy 编写小型实现。 在整个章节中,我们旨在提供使用其他库的示例,在本章中,我们应退后一步,看看可以与 NumPy 一起用于项目的周围库。
ApacheCN_飞龙
2023/04/23
1.8K0
PYTHON替代MATLAB在线性代数学习中的应用(使用Python辅助MIT 18.06 Linear Algebra学习)
MATLAB一向是理工科学生的必备神器,但随着中美贸易冲突的一再升级,禁售与禁用的阴云也持续笼罩在高等学院的头顶。也许我们都应当考虑更多的途径,来辅助我们的学习和研究工作。 虽然PYTHON和众多模块也属于美国技术的范围,但开源软件的自由度毕竟不是商业软件可比拟的。
俺踏月色而来
2020/08/19
5.5K0
apap图像拼接_20张以上多图拼图软件
项目地址:https://cs.adelaide.edu.au/~tjchin/apap/ 其中MDLT是两张图片的拼接,调试过程基本很简单,不再赘述; 对于BAMDLT多图拼接代码,现将出现的问题及解决办法整理如下:
全栈程序员站长
2022/11/09
6860
Numpy和MatplotlibPython科学计算——Numpy线性代数模块(linalg)随机模块(random)Python的可视化包 – Matplotlib2D图表3D图表图像显示
Python科学计算——Numpy Numpy(Numerical Python extensions)是一个第三方的Python包,用于科学计算。这个库的前身是1995年就开始开发的一个用于数组运算的库。经过了长时间的发展,基本上成了绝大部分Python科学计算的基础包,当然也包括所有提供Python接口的深度学习框架。 基本类型(array) array,也就是数组,是numpy中最基础的数据结构,最关键的属性是维度和元素类型,在numpy中,可以非常方便地创建各种不同类型的多维数组,并且执行一些基本
SeanCheney
2018/04/24
2.7K0
Numpy和MatplotlibPython科学计算——Numpy线性代数模块(linalg)随机模块(random)Python的可视化包 – Matplotlib2D图表3D图表图像显示
CMake 秘籍(二)
尽管 CMake 是跨平台的,在我们的项目中我们努力使源代码能够在不同平台、操作系统和编译器之间移植,但有时源代码并不完全可移植;例如,当使用依赖于供应商的扩展时,我们可能会发现有必要根据平台以略有不同的方式配置和/或构建代码。这对于遗留代码或交叉编译尤其相关,我们将在第十三章,替代生成器和交叉编译中回到这个话题。了解处理器指令集以针对特定目标平台优化性能也是有利的。本章提供了检测此类环境的食谱,并提供了如何实施此类解决方案的建议。
ApacheCN_飞龙
2024/05/16
6390
ceres实现的pnp解算后的位姿优化代码详解
这篇文章作为基础文章也是本文的学习和理解的过程,在将会给出更多的注释和“废话”帮助自己理解。同时有错误的话欢迎各位朋友留言指教。
点云PCL博主
2022/01/27
2.3K0
Eigen库学习教程(全)
说明:本教程主要是对eigen官网文档做了一个简要的翻译,参考了eigen官网以及一些博主的技术贴,在此表示感谢。
全栈程序员站长
2022/11/02
5.2K0
Eigen库学习教程(全)
「首席架构师推荐」数值分析软件列表
原文:https://en.wikipedia.org/wiki/List_of_numerical-analysis_software
架构师研究会
2019/10/09
2.2K0
「首席架构师推荐」数值分析软件列表
eigen使用教程_kafka简单使用
Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。它的License是MPL2。它支持多平台。
全栈程序员站长
2022/11/02
4.3K0
eigen使用教程_kafka简单使用
Eigen 使用教程
MatrixX 开头的为动态矩阵,两个维度都可以变化,本质为 Matrix<Type, Dynamic, Dynamic> 定义的类型
为为为什么
2023/02/21
3.1K0
Python 数学应用(一)
Python 是一种功能强大、灵活且易于学习的编程语言。它是许多专业人士、爱好者和科学家的首选编程语言。Python 的强大之处来自其庞大的软件包生态系统和友好的社区,以及其与编译扩展模块无缝通信的能力。这意味着 Python 非常适合解决各种问题,特别是数学问题。
ApacheCN_飞龙
2024/05/24
1900
Python 数学应用(一)
NumPy 1.26 中文官方指南(三)
这些文档阐明了 NumPy 中的概念、设计决策和技术限制。这是了解 NumPy 基本思想和哲学的好地方。
ApacheCN_飞龙
2024/04/26
3920
python中的scipy模块
scipy包含致力于科学计算中常见问题的各个工具箱。它的不同子模块相应于不同的应用。像插值,积分,优化,图像处理,统计,特殊函数等等。
狼啸风云
2019/08/31
5.5K0
### 0x01 C++ 资源大全
关于 C++ 框架、库和资源的一些汇总列表,内容包括:标准库、Web应用框架、人工智能、数据库、图片处理、机器学习、日志、代码分析等。
上善若水.夏
2018/12/07
1.8K0
精通 Pandas:1~5
在本节中,我们将讨论使数据分析成为当今快速发展的技术环境中日益重要的工作领域的趋势。
ApacheCN_飞龙
2023/04/23
19.2K0
利用Python进行数据分析笔记
本书讲的是利用Python进行数据控制、处理、整理、分析等方面的具体细节和基本要点。我的目标是介绍Python编程和用于数据处理的库和工具环境,掌握这些,可以让你成为一个数据分析专家。虽然本书的标题是“数据分析”,重点却是Python编程、库,以及用于数据分析的工具。这就是数据分析要用到的Python编程。
CtrlX
2023/03/21
5.3K0
利用Python进行数据分析笔记
相关推荐
【C++】开源:Eigen3线性代数模板库配置使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验