计算科学

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

1
间断Galerkin方案中的CFL条件
我已经实施了ADER-间断Galerkin方案,用于解决以下类型的守恒律线性系统 ∂tU+A∂xU+B∂yU=0∂tU+A∂xU+B∂yU=0\partial_t U + A \partial_x U + B \partial_y U=0 并观察到CFL条件非常严格。在参考书目中,时间步长的上限Δt≤hd(2N+1)λmaxΔt≤hd(2N+1)λmax\Delta t \leq \frac{h}{d(2N+1)\lambda_{max}} 可以在哪里找到 hhh 是单元格的大小 ddd 是维数, NNN 是多项式的最大次数。 有什么办法可以避免这个问题?我一直在使用WENO-ADER有限音量方案,而CFL限制则更加宽松。例如,对于5阶方案,使用DG时必须将CFL设置为低于0.04,而CFL = 0.4仍可以在WENO-ADER FV方案中使用。 例如,为什么在计算航空气动(线性欧拉方程)或类似应用(气体动力学,浅水,磁流体动力学)中使用DG方案而不是ADER-FV?尽管时间步长低得多,但是该方案的总体计算成本是否与ADER-FV相似? 欢迎对此提出意见和建议。

3
周围是否有“轻量级”的FEM软件包?
基本上,FEM似乎是一个“已解决”的问题。现有许多强大的框架,例如Trilinos,PETSc,FEniCS,Libmesh或MOOSE。 它们的共同点是:它们非常“重”。首先,安装通常非常麻烦。其次,它们的接口/ API很繁琐-您必须将整个想法转化为相应库的思想。这也意味着很难满足特殊要求或现有代码的互操作性和可扩展性。 其他项目(例如随机示例)Boost,LibIGL,Aztec(线性求解器),Eigen或CGAL证明,绝对有可能编写功能强大的库,这些接口可以通过非常精简的界面无缝集成到C ++或Python代码中,而无需安装超重的框架。 FEM是否有真正轻巧的包装?我不是在寻找简单,自动的求解器-我是在寻找一个提供强大功能,同时保持精益接口,与常见数据结构(例如C ++ STL)互操作性以及轻量级安装(例如仅标题)的库。

2
高阶Zernike多项式的数值稳定性
我正在尝试为某些图像计算更高阶(例如m=0,n=46)的Zernike矩。但是,我遇到了一个关于径向多项式的问题(请参阅Wikipedia)。这是在间隔[0 1]上定义的多项式。请参阅下面的MATLAB代码 function R = radial_polynomial(m,n,RHO) R = 0; for k = 0:((n-m)/2) R = R + (-1).^k.*factorial(n-k) ... ./ ( factorial(k).*factorial((n+m)./2-k) .* factorial((n-m)./2-k) ) ... .*RHO.^(n-2.*k); end end 但是,这显然会遇到的数值问题RHO > 0.9。 我试着将其重构,polyval以为它可能具有一些更好的幕后算法,但这并没有解决任何问题。将其转换为符号计算确实可以创建所需的图形,但即使对于如图所示的简单图形,其速度也令人难以置信。 有没有一种数值稳定的方法来评估这种高阶多项式?


1
计算科学与数据科学有什么区别?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 3年前关闭。 背景:我的博士学位是“计算科学”。我的论文是关于X射线衍射数据的分析和对固态物理学中分子电子密度的整体动力学分析中的热扰动核的分析。外卖?这是非常科学的。 在我看来,计算科学是对科学的追求,“……一种系统的企业,通过计算手段,以可检验的有关宇宙的解释和预测的形式来建立和组织知识”(维基)。 但是,“数据科学”的大多数职位看起来更像是“数据分析”类型的工作。也就是说,繁重的SQL查询使用预先构建的R和Python模型(线性回归等)从结构化和非结构化数据中得出结论。 计算科学是数据科学的超集吗?它们可以互换吗?数据科学真的是一门“科学”吗?计算科学是一门实际的“科学”吗?

1
矩阵平衡算法
我一直在从头开始编写控制系统工具箱,而纯粹是在Python3中编写(无耻插件:)harold。从我过去的研究中,我总是care.m出于技术/无关的原因而抱怨Riccati求解器。 因此,我一直在编写自己的例程集。我找不到解决方法的一件事是获得一种高性能的平衡算法,至少与一样好balance.m。在提到它之前,xGEBALfamily在Scipy中公开,并且基本上可以从Scipy进行如下调用,假设您具有一个float类型的2D数组A: import scipy as sp gebal = sp.linalg.get_lapack_funcs(('gebal'),(A,)) # this picks up DGEBAL Ab, lo, hi, scaling , info = gebal(A, scale=1 , permute=1 , overwrite_a=0 ) 现在,如果我使用以下测试矩阵 array([[ 6. , 0. , 0. , 0. , 0.000002], [ 0. , 8. , 0. , 0. , 0. ], …

1
右侧仅在时的有限元方法的收敛性(泊松方程)
我知道分段线性有限元逼近 uhuhu_h 的 Δu(x)=f(x)in Uu(x)=0on ∂UΔu(x)=f(x)in Uu(x)=0on ∂U \Delta u(x)=f(x)\quad\text{in }U\\ u(x)=0\quad\text{on }\partial U 满足 ∥u−uh∥H10(U)≤Ch∥f∥L2(U)‖u−uh‖H01(U)≤Ch‖f‖L2(U) \|u-u_h\|_{H^1_0(U)}\leq Ch\|f\|_{L^2(U)} 假设足够光滑并且。UUUf∈L2(U)f∈L2(U)f\in L^2(U) 问题:如果,我们是否有以下类似的估计,其中两侧都取了一个导数: f∈H−1(U)∖L2(U)f∈H−1(U)∖L2(U)f\in H^{-1}(U)\setminus L^2(U)∥u−uh∥L2(U)≤Ch∥f∥H−1(U)?‖u−uh‖L2(U)≤Ch‖f‖H−1个(ü)? \|u-u_{h}\|_{L^2(U)}\leq Ch\|f\|_{H^{-1}(U)}\quad? 你能提供参考吗? 思想:由于我们仍有,因此应该有可能在获得收敛。直观地讲,这甚至可以使用分段常数函数。ü ∈H1个0(U)ü∈H01个(ü)u\in H^1_0(U)大号2(U)大号2(ü)L^2(U)

3
向基于梯度的优化器提供近似梯度没有用吗?
如果只能提供数值梯度,使用基于梯度的优化算法是否毫无意义?如果不是,为什么对优化库本身执行有限微分很简单,那么为什么要首先提供一个数值梯度呢? [编辑] 需要澄清的是,我的问题的确比一般的应用更笼统。尽管我的应用领域恰好是各种统计框架下的似然优化。 我与自动区分的问题在于,似乎总是有一个陷阱。要么AD库无法传播到外部库调用(例如BLAS),要么您不得不如此大刀阔斧地改写工作流程,以致于难以处理……尤其是在使用类型敏感语言的情况下。我对AD的了解完全是另外一个问题。但是我想相信! 我想我需要更好地提出我的问题,但是我做的很糟糕。如果可以选择使用无导数优化算法或基于导数的优化算法,但需要注意的是,我只能给它一个数值梯度,平均而言哪一个更好?

1
无法进行线搜索时的自适应梯度下降步长
我有一个客观的功能 EEE 取决于一个值 ϕ(x,t=1.0)ϕ(x,t=1.0)\phi(x, t = 1.0),在哪里 ϕ(x,t)ϕ(x,t)\phi(x, t)是PDE的解决方案。我正在优化EEE在PDE 的初始条件下通过梯度下降:ϕ(x,t=0.0)ϕ(x,t=0.0)\phi(x, t = 0.0)。也就是说,我更新ϕ(x,t=0.0)ϕ(x,t=0.0)\phi(x, t = 0.0)然后必须集成PDE以计算我的残差。这就是说,如果我要对梯度下降步长进行线搜索(称它为αα\alpha),对于的每个潜在值 αα\alpha 我将不得不重新整合PDE。 就我而言,这将是非常昂贵的。自适应梯度下降步长还有另一种选择吗? 我不仅在这里寻找数学原理的方案(尽管如果有的话当然会更好),但对通常比静态步长更好的任何事物都会感到满意。 谢谢!

2
关于非线性有限差分方程,冯·诺依曼的稳定性分析告诉我们什么?
我正在阅读一篇论文[1],他们在其中解决了以下非线性方程 ut+ux+uux−uxxt=0ut+ux+uux−uxxt=0\begin{equation} u_t + u_x + uu_x - u_{xxt} = 0 \end{equation} 使用有限差分法。他们还使用冯·诺依曼的稳定性分析来分析方案的稳定性。但是,正如作者意识到的那样,这仅适用于线性PDE。因此,作者通过“冻结”非线性项来解决此问题,即他们替换了非线性项。uuxuuxuu_x 与 UuxUuxUu_x,在哪里 UUU “被认为代表了 uuu”。 所以我的问题有两个: 1:如何解释此方法,为什么不起作用? 2:我们也可以更换 uuxuuxuu_x 与 uUxuUxuU_x 学期 UxUxU_x “被认为代表了 uxuxu_x“? 参考文献 Eilbeck,JC和GR McGuire。“正则化长波方程的数值研究I:数值方法。” Journal of Computational Physics 19.1(1975):43-57。

3
解决牛顿-拉夫森以外的非线性对流扩散系统的方法?
我正在做一个项目,在该项目中,我有两个通过各自的源条件进行adv-diff耦合的域(一个域增加质量,另一个域减去质量)。为简便起见,我正在对它们进行稳态建模。这些方程式是您的标准对流扩散输运方程式,其源项如下所示: ∂c1∂t=0=F1+Q1(c1,c2)∂c2∂t=0=F2+Q2(c1,c2)∂c1∂t=0=F1+Q1(c1,c2)∂c2∂t=0=F2+Q2(c1,c2) \frac{\partial c_1}{\partial t} = 0 = \mathcal{F}_1 + \mathcal{Q}_1(c_1,c_2) \\ \frac{\partial c_2}{\partial t} = 0 = \mathcal{F}_2 + \mathcal{Q}_2(c_1,c_2) 其中是物种扩散和对流通量,而是物种的源项。FiFi\mathcal{F}_iiiiQiQi\mathcal{Q}_iiii 我已经能够使用牛顿-拉夫森方法为我的问题编写求解器,并且已经使用块质量矩阵将两个域完全耦合,即: Fcoupled=[A100A2][c1,ic2,i]xi−[b1(c1,i,c2,i)b2(c1,i,c2,i)]Fcoupled=[A100A2][c1,ic2,i]⏟xi−[b1(c1,i,c2,i)b2(c1,i,c2,i)] F_{coupled} = \left[\begin{array}{c c} A_1 & 0 \\ 0 & A_2 \\ \end{array}\right]\underbrace{ \left[\begin{array}{c} c_{1,i} \\ c_{2,i} \\ \end{array}\right] }_{x_i} - \left[\begin{array}{c} b_1(c_{1,i}, c_{2,i}) \\ b_2(c_{1,i}, …

2
共轭梯度的最坏情况复杂度是多少?
令对称且为正定。假设将向量乘以需要个工作单位。众所周知,在条件编号为上执行CG算法需要个工作单位。A∈Rn×nA∈Rn×nA\in \mathbb{R}^{n\times n}mmmAAAAAAκκ\kappaO(mκ−−√)O(mκ)\mathcal{O} (m\sqrt{\kappa}) 现在,当然,作为语句,这是一个上限。CG算法总是可以以零步长的终止值进行幸运的初始猜测。OO\mathcal{O} 我们是否知道是否存在RHS和最初的(不幸的)猜测,这将需要步骤?换句话说,CG的最坏情况下的工作复杂度真的是吗?Θ(κ−−√)Θ(κ)\mathcal{\Theta}(\sqrt{\kappa})Θ(mκ−−√)Θ(mκ)\Theta( m \sqrt{\kappa}) 当我尝试确定预处理器的收益(较低的)是否超过其成本(较高的)时,就会出现此问题。现在,我正在处理玩具问题,并希望在用编译语言实现任何东西之前有一个更好的主意。κκ\kappammm

1
从经典MD重新开始MD的方法
我正在运行水的分子动力学模拟以进行测试。如果您问一个运行经典MD的人,那么盒子很小;如果您问一个DFT的人,则盒子很大:我在周期性边界条件下有58个水分子。 为了节省CPU时间,我在运行从头开始MD之前使用经典的力场优化了单元。我通常以300K的系统平衡系统1 ns,然后拍摄最后一个快照并将其用作从头开始MD的输入。我的从头算学博士是基于DFT的常规Born-Oppenheimer博士,具有平面波基集和PAW(伪)电势(VASP是代码)。在经典和从头算起的仿真中,我都使用速度缩放恒温器将温度保持在300K不变。 我正在研究在经典和从头开始之间进行过渡的两种不同方法: 从经典轨迹中获取初始速度和位置,并将其作为初始配置导入,以进行从头计算 将系统冻结到零温度,保持经典位置,将其导入DFT代码,然后快速加热(目前我以0.5 ps的速度进行操作),最高加热至300K 我希望这两种策略都能在短时间(例如10 ps)的平衡期后产生相同的平均能量,尤其是考虑到起始配置完全相同(相同的初始位置),除了提到的温度技巧(初始速度不同) 。不是这种情况。下图显示了将系统冻结然后快速加热的模拟,发现该区域的能量比另一个从传统MD输入的速度低约1 eV的能量。 我的问题是: 是否可以预期; 有没有成功的策略可以优化从经典MD到从头算的过渡; 您能指出我有关此事的相关文献吗? 编辑: 我已经在运行更多的测试,并且-由于目前的数据有限-看来这可能是系统特定的问题。在相同大小的盒子中用甲醇代替水进行的测试表明,两种不同的初始速度方案很快会收敛到相同的平均能量。但是,在甲醇的情况下,经典构型非常接近量子构型,即,t = 0时的能量非常接近收敛后的平均能量。水是一个非常困难的系统,所以也许这个问题或多或少是针对水的。如果未添加任何答案,则在完成所有测试后,我将尝试根据结果发布一个答案。

1
迭代的“求解器”
我无法想象我是第一个考虑以下问题的人,因此我会对参考感到满意(但始终希望获得完整,详细的答案): 假设您有一个对称的正定 Σ∈Rn×nΣ∈Rn×n\Sigma \in \mathbb{R}^{n \times n}。 nnn 被认为是非常大的,所以 ΣΣ\Sigma在内存中是不可能的。但是,您可以评估ΣxΣx\Sigma x,对于任何 x∈Rnx∈Rnx \in \mathbb{R}^{n}。给一些x∈Rnx∈Rnx \in \mathbb{R}^{n},您想找到 xtΣ−1xxtΣ−1xx^t\Sigma^{-1}x。 我想到的第一个解决方案是找到 Σ−1xΣ−1x\Sigma^{-1}x使用(说)共轭梯度。但是,这似乎有点浪费-您寻找标量,并在此过程中找到一个巨大的向量RnRn\mathbb{R}^{n}。提出一种直接计算标量的方法似乎更有意义(即不通过Σ−1xΣ−1x\Sigma^{-1}x)。我正在寻找这种方法。

3
二阶张量场可视化软件
张量可视化软件是否有概述? 我个人的喜好是: 该软件是免费的,有据可查并提供针对不同物理二阶(或更高阶)张量场的可视化技术。 我会感兴趣的一些模块 超流线(特征向量积分法) 测地线作为方向,而不是特征向量 拓扑方法(例如,处理相等的特征值,即退化点,提取有限的Lupynov指数) 张量椭球 基于纹理的可视化(HyperLIC,基于物理的方法) 处理非对称张量场(将张量场分解为对称和反对称的部分,并重新胶合所得的可视化效果,或直接方法) 根据张量场的物理属性,需要使用不同的方法来可视化数据。 我知道有关Mayavi的知识,但是几乎没有关于张量模块的文档,并且该模块仅限于超流线的可视化(单数)。GUI有问题,脚本选项似乎受到限制。 张量场的可视化似乎是非常令人沮丧的选择。

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.