小编and*_*cko的帖子

SymPy -- 定义变量域

我正在编写一个程序来计算我的物理实验室的精确微分。我知道我可以设置真实域或正域 ( from sympy import *):

x, y, z = symbol('x y z', positive = True)

我的问题是指定域,例如n>1。是否可以?在我的输出中,我得到了一个类似的表达式,|n^2-1|并且通过设置这个域,n>1我会接受类似的输出n^2-1(没有绝对值“||”)

python sympy

6
推荐指数
1
解决办法
2974
查看次数

低内存消耗的C ++本征求解器

我是C ++编程的新手,但我有一个任务是为尺寸很大的矩阵计算对称矩阵(和Hermitian)的特征值和特征向量(标准本征问题Ax = lx)):Binomial(L,L / 2)其中L大约是18-22岁。现在,我正在具有7.7 GB可用内存的机器上对其进行测试,但最终我将可以访问具有64GB RAM的PC。

我从Lapack ++开始。一开始,我的项目假设仅针对对称实矩阵解决此问题。

这个图书馆很棒。非常快速且占用少量RAM。它具有计算特征向量并将其放置在输入矩阵A中的选项,以节省内存。有用!我以为Lapack ++ eigensolver可以处理Hermitian矩阵,但是由于未知的原因而不能(也许我做错了)。我的项目不断发展,对于埃尔米特矩阵,我也应该能够计算出这个问题。

因此,我尝试将库更改为Armadillo库。它可以正常工作,但是不如Lapack ++取代mat Aall eigenvec,但它当然支持埃尔米特矩阵。

L = 14的一些统计

  • Lapack ++ RAM 126MB时间7.9s本征+本征向量

  • 犰狳 RAM 216MB时间12s本征

  • Armadillo RAM 396MB时间15s本征值+本征向量

让我们做一些计算:double变量大约是8B。我的矩阵的大小为 binomial(14,7)= 3432,因此在理想情况下它应具有3432 ^ 2 * 8/1024 ^ 2 = 89 MB

我的问题是:是否可以修改或强制ArmadilloLapack ++一样做一个不错的技巧?犰狳的用法LAPACKBLAS例程。或者,也许有人可以推荐使用另一个库解决此问题的另一种方法? …

c++ eigenvalue eigenvector lapack++ armadillo

4
推荐指数
1
解决办法
872
查看次数

标签 统计

armadillo ×1

c++ ×1

eigenvalue ×1

eigenvector ×1

lapack++ ×1

python ×1

sympy ×1