Questions tagged «numerics»

4
数值误差的科学标准
在我的研究领域中,实验误差的规范被普遍接受,未能提供实验误差的出版物受到了强烈批评。同时,我经常发现提供的数值计算结果没有考虑任何数值误差,尽管(或者可能是因为)经常有可疑的数值方法正在起作用。我说的是由离散化和数值计算的有限精度等导致的误差。当然,这些误差估计值并不总是很容易获得,例如在流体动力学方程的情况下,但是我似乎常常是由于懒惰而导致的,我相信数值误差估计的规范应该与实验结果一样是标准的。因此,我的问题是:

1
Logum中的灾难性取消
我正在尝试在相对精度较低的双精度浮点中实现以下功能: logsum(x,y)=log(exp(x)+exp(y))logsum(x,y)=log⁡(exp⁡(x)+exp⁡(y))\mathrm{logsum}(x,y) = \log(\exp(x) + \exp(y)) 这在统计应用程序中被广泛使用以添加在对数空间中表示的概率或概率密度。当然,或都很容易溢出或下溢,这很不好,因为日志空间最初是用来避免下溢的。这是典型的解决方案:exp(x)exp⁡(x)\exp(x)exp(y)exp⁡(y)\exp(y) logsum(x,y)=x+log1p(exp(y−x))logsum(x,y)=x+log1p(exp⁡(y−x))\mathrm{logsum}(x,y) = x + \mathrm{log1p}(\exp(y - x)) Cancellation from y−xy−xy-x does happen, but is mitigated by expexp\exp. Worse by far is when xxx and log1p(exp(y−x))log1p(exp⁡(y−x))\mathrm{log1p}(\exp(y - x)) are close. Here's a relative error plot: The plot is cut off at 10−1410−1410^{-14} to emphasize …

1
如何在共享内存模式(如OpenMP)中运行MPI-3.0
我正在并行化代码以数字方式求解5维人口平衡模型。当前,我在FORTRAN中有一个很好的MPICH2并行化代码,但是随着我们增加参数值,数组变得太大而无法在分布式内存模式下运行。 我可以访问具有15个节点的群集,其中每个节点具有两个8个核心CPU和128GB RAM。我想在共享内存模式下以MPI-3.0编写运行程序,以便每个进程都不会生成每个数组的自己的副本。 在集群上运行任何东西之前,必须在运行Ubuntu的桌面上对其进行测试。它实质上是集群的一个刀片,因为它具有两个8个核心CPU和128 GB的RAM。我将在上面编写和测试我的代码,因此请针对在Ubuntu计算机上运行程序调整您的响应。 我已经读到有一种方法可以在共享内存模式(如OpenMP)而不是其默认的分布式内存模式下运行MPI-3.0。 问题: 我将如何更改我的代码?我是否需要添加对其他MPI函数的调用MPI_WIN_ALLOCATE? 如何编译我的代码以在共享内存模式下运行MPI-3.0?如果跨越多个节点,情况会有所不同吗? 请提供示例编译脚本。我也只有GNU编译器。我使用的群集不支持Intel编译器。

1
当具有自治性时,常微分方程数值近似系统是否存在捷径?
解决ODE的现有算法处理函数,其中。但是在许多物理系统中,微分方程是自治的,因此,,而忽略。通过这种简化的假设,可以在现有的数值方法中看到哪些改进?例如,如果,则问题变为,我们转向一类完全不同的算法来集成一维积分。对于,最大可能的改进是减小的维数ÿ∈[RÑdÿdÿdŤ= f(y, t )dydt=f(y,t)\frac{dy}{dt} = f(y, t)ÿ∈ [Rñy∈Rny \in \mathbb R^nÝ∈[RÑ吨Ñ=1吨=∫dÿdÿdŤ= f(y)dydt=f(y)\frac{dy}{dt} = f(y)ÿ∈ [Rñy∈Rny \in \mathbb R^nŤttn = 1n=1n=1 n>1yt = ∫dÿF(y)t=∫dyf(y)t = \int \frac{dy}{f(y)}n > 1n>1n>1ÿyy通过1中,由于随时间变化的情况下,可以通过追加模拟到,改变的结构域从到。y y R n R n + 1Ťttÿyyÿyy[RñRn\mathbb R^n[Rn + 1Rn+1\mathbb R^{n+1}
10 ode  numerics 

1
寻找特征值重新排序算法的基准问题
可以使用正交模拟变换将每个实矩阵简化为实Schur形式。此处,矩阵为准三角形形式,在主对角线上具有1 x 1或2 x 2块。每1由1块对应于一个真实特征值和每个2×2块对应于一对复共轭本征值的。一个一个AŤ= UŤ一个üŤ=üŤ一个üT = U^T A UüüUŤŤT一个一个A一个一个A 特征值重排序问题包括找到正交相似度变换,使得用户对的特征值的选择沿着S = V T T V的左上角的对角线出现。VVV一个一个A小号= VŤŤV小号=VŤŤVS = V^T T V 在LAPACK中,相关的例程双精度例程称为DTRSEN。Daniel Kressner写了一个被封锁的版本,名称为BDTRSEN。ScaLAPACK例程是PDTRSEN。 我正在寻找能够解决特征值重排序问题的真正优势的应用程序和算法。 我们可以轻松地生成准三角形式的测试矩阵,但是在确定用户特征值选择的实际分布形状时遇到了麻烦。 在我看来,具有Ritz加速度的子空间迭代是测试重新排序算法改进的理想算法。它需要(稀疏)矩阵向量乘法,高QR算法和重排序算法。 但是,对于我来说很难发现现实生活中的问题,因为很明显,一组特定的特征对在物理上是有趣的。 我们可以使用共享内存机器对维度为40,000的密集矩阵进行特征值重新排序。当用户选择所有特征值的约50%时,可获得最佳性能。

2
用于随机计算函数的方程求解的数值方法
有许多众所周知的数值方法可以求解类型为 例如二等分法,牛顿法等。F(x )= 0 ,X ∈ řñ,f(x)=0,x∈Rn, f(x) = 0, \quad x \in \mathbb{R}^n, 在我的应用程序中,是用随机方法计算的(结果是平均值)。F(x )f(x)f(x) 有什么数值方程求解方法可以很好地处理这种情况?也欢迎链接到任何类似情况的讨论。 我可以计算的精度很大程度上取决于,并且我很容易碰到一堵墙,在不显着增加计算时间的情况下无法提高精度。因此,我不能忽略的结果不精确的事实。这也将影响实际中可以找到的精度。F(x )f(x)f(x)XxxFffXxx

4
定点和任意精度计算的相关性
我看到很少有非浮点计算库/程序包。鉴于浮点表示形式的各种不准确性,提出了一个问题,为什么至少在某些领域中,这种提高的准确性可能值得使用定点运算的复杂性。 使用定点特征值求解器是否有重大困难?他们将有多慢/快,不准确/准确? 相关:这个和这个

3
混沌数值模型的回归检验
当我们有一个代表真实物理系统并表现出混乱的数值模型(例如,流体动力学模型,气候模型)时,我们如何知道该模型的运行状况如何?我们不能直接比较两组模型的输出,因为即使是初始条件的微小变化也会极大地改变单个模拟的输出。我们不能将模型输出直接与观测值进行比较,因为我们永远无法足够详细地了解观测值的初始条件,而数值逼近总会引起微小差异,并会在系统中传播。 这个问题在某种程度上受到David Ketcheson 关于单元测试科学代码的问题的启发:我对如何实现此类模型的回归测试特别感兴趣。如果较小的初始条件变化会导致主要的输出变化(这仍然可能是现实的充分表示),那么我们如何才能将这些变化与因修改参数或实施新的数值例程而引起的变化区分开来?
10 testing  numerics 

5
整合到log-log空间
我正在使用的函数通常在对数-对数空间中更平滑,更好地表现---所以我可以在其中执行内插/外推等,并且效果很好。 有没有办法在对数-对数空间中集成这些数值函数? 即我希望使用某种简单的梯形规则来执行累积积分(例如在python中,使用scipy.integrate.cumtrapz),以找到一些 stF(r)F(r)F(r) F(r)=∫r0y(x)dxF(r)=∫0ry(x)dxF(r) = \int_0^r y(x) \, dx 但是我希望使用值和,而不是和(如果可能)。log(y)log(y)log(y)log(x)log(x)log(x)yyyxxx


2
机器学习在计算流体动力学中的应用
背景: 对于一门课程,我仅为2d Navier-Stokes建立了一个可行的数值解决方案。这是盖子驱动型腔流动的解决方案。但是,本课程讨论了用于空间离散化和时间离散化的许多模式。我还参加了更多关于NS的符号操作课程。 处理解析/符号方程从PDE到有限差分的一些数值方法包括: 欧拉FTFS,FTCS,BTCS 松懈 中点跳蛙 Lax-Wendroff 麦克科马克 偏移网格(空间扩散允许信息传播) TVD 在我看来,当时这些似乎是“插入名称找到了一个方案并且它确实起作用了”。其中许多来自“大量硅”时代之前。它们都是近似值。在极限中。从理论上讲,导致了PDE。 虽然直接数值模拟(DNS)很有趣,而且雷诺平均Navier-Stokes(RANS)也很有趣,但它们是计算上易于理解并完全表示现象之间连续体的两个“端点”。内部存在多种方法。 我曾让CFD教授在演讲中说,大多数CFD求解器会绘制漂亮的图片,但是在大多数情况下,这些图片并不代表现实,要获得能够解决问题的求解器解决方案可能会非常艰巨且需要大量工作确实代表了现实。 开发的顺序(据我所知,并不详尽)是: 从控制方程开始-> PDE的 确定您的空间和时间离散化->网格和FD规则 适用于包括初始条件和边界条件的领域 求解(矩阵求逆上有很多变化) 执行总体现实检查,以适合已知解决方案等。 根据分析结果建立一些更简单的物理模型 测试,分析和评估 迭代(跳回到步骤6、3或2) 想法: 我最近一直在使用CART模型,倾斜树,随机森林和渐变增强树。它们遵循更多的数学推导规则,而数学则驱动树的形状。他们努力使离散化的表格变得更好。 尽管这些人为创建的数值方法有些奏效,但仍需要大量的“伏都教”以将其结果与要建模的物理现象联系起来。通常,模拟并不能完全替代实际测试和验证。容易使用错误的参数,或者无法解决实际环境中几何形状或应用程序参数的变化。 问题: 是否有任何方法可以让问题的性质定义 适当的离散化,时空差分方案,初始条件或解决方案? 高清晰度解决方案与机器学习技术相结合,是否可以用于形成步长更大但保持收敛性,准确性等的差分方案? 所有这些方案都是可访问的“人类易处理的派生”-它们具有少量要素。是否有一个包含数千个元素的差异化方案能做得更好?它是如何衍生的? 注意:我将在一个单独的问题中继续进行经验初始化和经验推导(相对于分析而言)。 更新: 利用深度学习来加速格子玻尔兹曼流。使特定情况的速度提高约9倍 O. Hennigh(新闻中)。Lat-Net:使用深度神经网络的压缩格子Boltzmann流动模拟。取自:https : //arxiv.org/pdf/1705.09036.pdf 使用代码回购(我认为):https : //github.com/loliverhennigh/Phy-Net 与GPU和相同的硬件相比,它比GPU快大约2个数量级,比GPU快4个数量级,或快大约O(10,000x)。 Guo,X.,Li,W.&Ioiro,F.用于稳定流逼近的卷积神经网络。取自:https : //autodeskresearch.com/publications/convolutional-neural-networks-steady-flow-approximation 大约20年前研究过该主题的其他人: Muller,S.,Milano,M.和Koumoutsakos P.机器学习算法在流建模和优化中的应用 湍流研究中心年度研究摘要1999摘自:https …

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.