计算科学

科学家使用计算机解决科学问题的问答

2
矩形稠密矩阵的零空间
给定的致密基质A∈Rm×n,m>>n;max(m)≈100000A∈Rm×n,m>>n;max(m)≈100000A \in R^{m \times n}, m >> n; max(m) \approx 100000 什么是找到一定误差内的零空间基础的最佳方式ϵϵ\epsilon? 基于这个基础上我可以说以一定的cols是线性相关的内ϵϵ\epsilon?换句话说,以零空间为基础计算,为了获得非奇异矩阵,必须删除哪些列AAA? 参考被赞赏。

5
在非常大的稀疏矩阵上应用PCA
我正在使用R进行文本分类任务,并获得了文档项矩阵,其大小为22490 x 120,000(只有400万个非零条目,少于1%的条目)。现在,我想通过使用PCA(主成分分析)来减少尺寸。不幸的是,R无法处理这个庞大的矩阵,因此我将这个稀疏矩阵存储在“矩阵市场格式”的文件中,希望使用其他技术来进行PCA。 因此,任何人都可以给我一些有用的库(无论使用哪种编程语言)的提示,这些库可以轻松地使用此大规模矩阵进行PCA,或者由我自己进行长期的PCA,换句话说,首先要计算协方差矩阵,然后然后计算协方差矩阵的特征值和特征向量。 我想要的是计算所有PC(120,000),并仅选择占90%方差的前N个PC。显然,在这种情况下,我必须给先验阈值以将一些非常小的方差值设置为0(在协方差矩阵中),否则,协方差矩阵将不会稀疏,其大小将为120,000 x 120,000,即一台机器无法处理。同样,载荷(特征向量)将非常大,应以稀疏格式存储。 非常感谢您的帮助! 注意:我使用的机器具有24GB RAM和8个CPU内核。

3
查找哪些三角形点在
假设我有一个由非重叠三角形组成的2D网格,以及一组点。确定每个点位于哪个三角形的最佳方法是什么? { p 我} 中号我= 1 ⊂ ∪ Ñ ķ = 1 Ť ķ{ Tķ}ñk = 1{Ťķ}ķ=1个ñ\{T_k\}_{k=1}^N{ p一世}中号我= 1⋐ ∪ñk = 1Ťķ{p一世}一世=1个中号⊂∪ķ=1个ñŤķ\{p_i\}_{i=1}^M \subset \cup_{k=1}^N T_K 例如,下面的图像中,我们有,,,所以我想的函数该返回列表。p 2 ∈ Ť 4 p 3 ∈ Ť 2 ˚F ˚F (p 1,p 2,p 3)= [ 2 ,4 ,2 ]p1个∈ Ť2p1个∈Ť2p_1 \in T_2p2∈ Ť4p2∈Ť4p_2 …


4
用Callgrind分析CFD代码
我正在使用Valgrind + Callgrind对我编写的求解器进行分析。如Valgrind用户手册所述,我已经使用编译器的调试选项编译了代码: “没有调试信息,最好的Valgrind工具将能够做的就是猜测特定代码段属于哪个功能,这将使错误消息和性能分析输出几乎无用。使用-g,您将获得直接指向相关的源代码行。” Valgrind手册 使用调试选项进行编译时,代码的运行速度要慢得多。即使使用调试标志进行编译,即使在很小的情况下,CFD代码也会变得非常缓慢。Valgrind使其速度降低40倍(请参见手册1)。 您使用什么工具进行代码性能分析(性能分析,而不是基准测试)? 您允许代码运行多长时间(统计数据:多少个时间步长)? 大小有多大(如果大小写适合高速缓存,则求解器的速度要快几个数量级,但是我会错过与内存相关的过程)?
16 hpc 

3
我应该如何学习创建和编程HPC系统?
我所从事的领域不一定能完成大量的HPC工作,当它遇到时,通常是其他领域的研究人员探索其方法等的新应用的结果。首先,这意味着它永远不会真正地在学习过程中被引入,也不会在讲习班,研讨会等类似场合中得到长大,有可能不需要它就可以从事整个职业。 但是,与此同时,我所做的许多工作都可以从更好地利用我可用的HPC资源中受益-主要是采用很好的并行蒙特卡洛模拟的形式。 我的问题是找到资源来学习如何使用群集,MPI等。并且在我不太了解的情况下将好与坏分开。 对于有关在这些类型的系统上进行编程的书籍,或者有关设置和运行自己的非常适度的HPC设置的书籍,有何建议?
16 hpc  education 

4
为什么Householder反射不能对角化矩阵?
在实践中计算QR因式分解时,人们使用Householder反射将矩阵的下部归零。我知道,要计算对称矩阵的特征值,您对Householder反射所做的最大努力就是将其变为三对角形式。有什么明显的方法可以看出为什么不能以这种方式完全对角线化吗?我只想简单地解释一下,但无法给出清晰的介绍。

5
对于实现高阶收敛的多物理场PDE,是否有运营商拆分方法?
给定一个演化PDE üŤ= A u + B uüŤ=一种ü+乙üu_t = Au + Bu 其中是(可能是非线性的)不求通的微分算子,一种常见的数值方法是在求解之间交替A ,B一种,乙A,B üŤ= A uüŤ=一种üu_t = Au 和 üŤ= 乙ü 。üŤ=乙ü。u_t = Bu. 最简单的实现方法称为Godunov拆分,精度为一阶。另一种众所周知的方法称为Strang分裂,是二阶精确的。是否存在高阶算子拆分方法(或替代的多物理场离散化方法)?

1
什么时候应该在双曲PDE的集成中使用隐式方法?
用于求解PDE(或ODE)的数值方法分为两大类:显式方法和隐式方法。隐式方法允许较大的稳定时间步长,但每个步骤需要更多的工作。对于双曲线PDE,普遍的看法是,隐式方法通常不会奏效,因为使用比CFL条件允许的时间步长大的时间步长会导致非常不准确的结果。但是,在某些情况下会使用隐式方法。对于给定的应用程序,应该如何选择使用显式方法还是隐式方法?


3
幂级数映射的用途
我来自加速器物理领域,特别涉及圆形存储环用于同步加速器光源。在磁场的引导下,高能电子在环周围循环。电子循环数十亿次,人们希望预测其稳定性。您可以根据相空间(位置,动量空间)描述电子在环中某一点的运动。绕环每转一圈,粒子将返回到新的位置和动量,这在相空间中定义了一个映射,称为“单转映射”。我们可以假设原点有一个固定点,因此可以按幂级数对其进行扩展。因此,人们想知道迭代幂级数映射的稳定性。对此有很多难题,而且这个话题有很长的历史。已经实现了许多库,以实现所谓的截断幂级数代数。(请参见例如Y. Yan撰写的有关zlib的论文。正规物理方法是更多有关物理学的背景和一种分析方法,例如Bazzani等。等 这里)。现在的问题是如何使用这样的库,以及如何解决稳定性问题。束动力学中使用的主要方法是正常形式分析,我认为这种方法没有成功。我不知道如果某种谱方法已经在其他领域被开发(也许沿着类似的线这?)。有人可以想到另一个领域,在该领域中分析以原点为固定点的迭代幂级数映射的长期稳定性,以便我们可以共享知识或获得一些新想法吗?我知道的一个例子是菲什曼和“加速器模式”在原子物理学中的工作。还有其他吗?还有哪些其他系统可以建模为踢旋的转子或Henon映射?

1
BDF vs隐式Runge Kutta时间步进
有什么理由为什么要在BDF时间步长上选择高阶隐式Runge Kutta(IMRK)?对于我而言,BDF似乎容易得多,因为阶段IMRK需要每个时间步q线性求解。BDF和IMRK的稳定性似乎是有争议的。我找不到任何比较/对比隐式时间步进器的资源。qqqqqq 如果有帮助,最终目标是为我选择对流扩散PDE的高阶隐式时间步进器。

1
FFT泊松求解器的收敛速度
FFT毒物求解器的理论收敛速度是多少? 我正在求解泊松方程: 其中 在域具有周期边界条件。该电荷密度是净中性的。解决方案如下: 其中。在倒易空间 其中是倒易空间矢量。我对Hartree能源感兴趣: Ñ∇2VH(x,y,z)=−4πn(x,y,z)∇2VH(x,y,z)=−4πn(x,y,z)\nabla^2 V_H(x, y, z) = -4\pi n(x, y, z)[0,2]×[0,2]×[0,2]Vħ(X)=∫Ñ( y)n(x,y,z)=3π((X -1)2+(y− 1)2+(z− 1)2− 1 )n(X,ÿ,ž)=3π((X-1个)2+(ÿ-1个)2+(ž-1个)2-1个)n(x, y, z) = {3\over\pi} ((x-1)^2 + (y-1)^2 + (z-1)^2 - 1)[ 0 ,2 ] × [ 0 ,2 ] × [ 0 ,2 ][0,2]×[0,2]×[0,2][0, 2] \times [0, 2] \times …

2
用于评估超几何函数的有效,准确的算法是什么?
我很好奇,知道有什么好的数值算法可以用来评估广义超几何函数(或级数),定义为 pFq(a1,…,ap;b1,…,bq;z)=∑k=0∞(a1)ķ⋯ (ap)ķ(b1个)ķ⋯ (bq)ķžķķ !pFq(一种1个,…,一种p;b1个,…,bq;ž)=∑ķ=0∞(一种1个)ķ⋯(一种p)ķ(b1个)ķ⋯(bq)ķžķķ!{}_pF_q(a_1,\ldots,a_p;b_1,\ldots,b_q;z) = \sum_{k=0}^{\infty} \frac{(a_1)_k\cdots(a_p)_k}{(b_1)_k\cdots(b_q)_k}\frac{z^k}{k!} 通常,该系列不一定会很快收敛(或根本不会收敛),因此,逐项汇总术语似乎并不理想。有一些更好的替代方法吗?具体来说,我正在寻找能够提供4或5位精度并具有合理数量的计算的东西。 我通常看到的最常见的情况是和p = 2 ,q = 1,但是在我正在研究的特定项目中,我需要p = 1 ,q = 2。显然,针对任何p和q的通用算法都是理想的,但是我将尽我所能。p = 1 , q= 1p=1个,q=1个p=1,q=1p = 2 , q= 1p=2,q=1个p=2,q=1p = 1 , q= 2p=1个,q=2p=1,q=2pppqqq

2
(如何)编写运行速度更快的模拟?
我已经开始使用python作为编程语言来执行CFD中的所有作业。我在编程方面经验很少。我来自机械工程领域,正在从事航空航天工程的高等教育。 有时,CFD的计算方面比处理方程式或进行数学运算更乏味。 有哪些一般准则可以使我们的程序运行更快?做并行处理的技巧是什么?如何编写运行速度更快的代码? 我在哪里可以得到回答上述问题的资源(对于像我这样的外行人来说很容易理解)?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.