计算科学

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

4
如何将边界条件与Galerkin方法结合在一起?
我一直在网上阅读一些有关Galerkin方法来解决PDE的资源,但是我不清楚。以下是我对我所了解的内容的描述。 请考虑以下边值问题(BVP): L [ u (x ,y)] = 0上(x ,y)∈ Ω ,小号[ u ] = 0上(x ,y)∈ ∂&ΩL[u(x,y)]=0on(x,y)∈Ω,S[u]=0on(x,y)∈∂ΩL[u(x,y)]=0 \quad \text{on}\quad (x,y)\in\Omega, \qquad S[u]=0 \quad \text{on} \quad (x,y)\in\partial\Omega 其中是二阶线性微分算子,是BVP的域,是该域的边界,而是一阶线性微分算子。将为以下形式的近似值:Ω ⊂ - [R 2∂&Ω 小号ù (X ,ÿ )大号LLΩ ⊂ ř2Ω⊂R2\Omega\subset\mathbb{R}^2∂Ω∂Ω\partial\Omega小号SSù (X ,ÿ)u(x,y)u(x,y) u(x,y)≈∑i=1Naigi(x,y)u(x,y)≈∑i=1Naigi(x,y)u(x,y)\approx \sum_{i=1}^N a_i g_i(x,y) 其中是我们将用来近似一组函数。替代BVP:gigig_iuuu ∑iaiL[gi(x,y)]=R(a1,...,aN,x,y)∑iaiL[gi(x,y)]=R(a1,...,aN,x,y)\sum_i a_i L[g_i(x,y)]=R(a_1,...,a_N,x,y) 由于我们的近似值不精确,因此残差不完全为零。在Galerkin-Ritz-Raleigh方法中,通过要求我们将相对于逼近函数集最小化。因此[R ⟨ …

2
多对多广义分配问题的算法
我似乎找不到关于可用于解决多对多广义分配问题(GAP)的算法的文献,即不仅可以将更多任务分配给一个代理,而且可以将多个代理分配给多个代理的模型。分配给一项任务(Pentico在一篇论文中讨论了一对一和一对多AP)。我几乎不了解分配问题,但是在研究过程中遇到了这样的问题,并且想了解更多有关如何解决它们的知识。这样的多对多GAP是否有可能被冠以另一个名称,或者是否有其他原因可以找到很少的文献? Pentico,D. 作业问题:黄金周年调查。欧洲运筹学杂志(2007); 176(2):774-793。

3
为什么非凸性是优化中的问题?
当我开始阅读一般关于非凸优化的文章时,我感到非常惊讶,并且看到如下语句: 许多重要的实际问题都是非凸性的,大多数非凸性问题很难(如果不是不可能)在合理的时间内准确解决。(来源) 要么 通常,很难找到局部最小值,许多算法可能会陷入困境。(来源) 我每天都在进行某种非凸优化-即放松分子几何。我从来没有考虑过棘手,缓慢并且容易卡住。在这种情况下,我们显然具有多维非凸曲面(> 1000自由度)。我们主要使用源自最陡下降和动态淬火的一阶技术,例如FIRE,它们以几百步的速度收敛到局部最小值(小于自由度数)。我希望,除了随机噪声外,它还必须像地狱般坚固。(全局优化是另一回事) 我莫名其妙地无法想象势能表面会是什么样子,从而使这些优化方法陷入困境或缓慢收敛。例如,这种螺旋结构是非常病理性的PES(但不是由于非凸性所致),但这并不是一个大问题。您能举例说明病理性非凸PES吗​​? 因此,我不想与上面的引号争论。相反,我感觉到我在这里缺少一些东西。也许是上下文。

3
科学Python中有限差分法的建议
对于我正在研究的项目(在双曲PDE中),我希望通过查看一些数字来大致了解行为。但是,我不是一个很好的程序员。 您是否可以推荐一些资源来学习如何在Scientific Python中有效地编码有限差分方案(也欢迎其他学习曲线较小的语言)? 为了让您了解此建议的受众群体(我): 我是经过培训的纯数学家,并且对有限差分方案的理论知识有些熟悉 我需要帮助的是如何使计算机计算出我想要的计算量,特别是以一种方式,我不会重复别人已经付出的太多努力(以免在需要时重新发明轮子)包已可用)。(我想避免的另一件事是,在建立了适合该目的的数据结构时,手动编写一些愚蠢的代码。) 我有一些编码经验;但是我没有使用Python的知识(因此我不介意是否有足够的资源来学习其他语言(例如,例如Octave))。 书籍,文档以及示例代码的集合都将是有用的。

10
快速,轻量级的C ++张量库,可用于尺寸无关的代码
我正在寻找一个支持维度无关代码的C ++张量库。具体来说,我需要沿每个维度(最多3个)执行操作,例如,计算加权和。尺寸是模板参数(因此是编译时常数)。另一个限制是该库应该相对轻量级,因此本征/ Boost样式要比Trilinos / PETSc轻。 有什么建议么? 注意:我查看了Eigen,并认为它几乎完全符合轮廓,如果它不限于2D张量。如果我对此感到误解,请纠正我。
20 c++  libraries  tensor 

4
查找黑盒函数不连续性的最佳方法是什么?
有人建议,对于这个问题,这可能比我之前问过的 Mathematics Stack Exchange更好。 假设有一个黑匣子函数,可以在指定间隔任何位置(便宜地)对其进行评估并且没有噪音(例如,浮点粒度除外)。找到此功能不连续性的最佳方法是什么?我不知道可能有多少间断点,也可能没有间断点。[a,b][a,b][a,b] 我可以想到一些简单的方法(统一采样,在样本之间存在较大差异的地方进行细化,...),但是也许有更好的方法? 该函数是“合理的”,因为可以假设它最多具有有限的不连续性,对于高阶导数也是如此,我不介意是否遗漏了小的病理不连续性...(该应用程序是对一维函数的自动绘制) 。 - 感谢所有答复,特别是佩德罗。Pachón,Platte和Trefethen中描述的方法似乎是对我最好的方法,所以我现在去实现它

9
形状功能的基本说明
与我以前在本科课程中所做的相比,我刚刚开始以更加结构化的基础学习FEM。我这样做是因为,尽管事实上我可以在商业(和其他非商业)软件中使用“ FEM”,但我还是想真正了解支持该方法的地下技术。这就是为什么我至少要为有经验的技术用户提出这样的基本问题。 现在,我正在阅读Zienkwicz出版的一本颇受欢迎(我认为)且对工程师友好的书,名为“有限元方法-基础”。我从第一页开始就读过这本书,但是我仍然无法按照Zienkwicz解释它的方式来理解形状函数的概念。 从我所读到的内容中,我知道的是一个“刚度”矩阵,该矩阵将未知数与结果相关联( in:),其成分来自“节点之间的关系”,如果“关系”改变(即如果我们将其更改为高阶插值),则刚度矩阵也会改变,因为节点之间的关系也会改变。AAAAk=bAk=bAk=b 但是在这本书中,这个定义对我来说是很模糊的,因为在某种程度上它说您可以任意选择函数作为身份矩阵: 我发现的唯一解释是在此Blog中,但对我来说仍然不清楚。因此,有人可以简单地向我解释什么是Shape函数,以及如何将其“放入”刚度矩阵?

3
并行I / O选项,尤其是并行HDF5
我有一个可以并行化的应用程序,但其性能在很大程度上受到I / O的限制。该应用程序读取存储在文件中的单个输入数组,该文件的大小通常为2-5 GB(但我希望这个数字将来会增长)。典型的计算将相同的操作应用于该数组的每一行或每一列。对于CPU繁重的操作,我可以很好地扩展到大约100个处理器,但是对于较慢的操作,I / O和相关的通信(NFS访问)占主导地位,并且我不能有效地使用几个以上的处理器。 在这种情况下,什么是有效且可移植的(理想情况下是高效的)选项?并行HDF5似乎很有希望。有没有人有现实生活中的经验? MPI-I / O是否值得研究?它可以在给定的文件布局下有效地工作,还是必须调整所有内容?

2
在Python中定义自定义概率密度函数
有没有一种方法,可以使用一些已建立的Python程序包(例如SciPy)来定义我自己的概率密度函数(没有任何先验数据,只需),然后我就可以用它进行计算(例如获得连续随机变量的方差)?当然,我可以使用SymPy或Sage创建一个符号函数并执行操作,但是我想知道是否可以代替使用我自己已经完成的软件包而不是自己完成所有这些工作。f(x)=ax+bf(x)=ax+bf(x) = a x + b

6
分析C ++函数中的数值错误
假设我有一个函数,将多个浮点值(单或双)作为输入,进行一些计算,然后生成输出浮点值(也为单或双)。我主要使用MSVC 2008,但还计划使用MinGW / GCC。我在用C ++编程。 以编程方式测量结果中有多少错误的典型方法是什么?假设我需要使用任意精度库:如果我不关心速度,那么最好的此类库是什么?

1
使用Chebyshev多项式的谱方法的难度
我在尝试理解一篇论文时遇到了一些困难。本文使用频谱方法来求解来自耦合ODE系统的特征值。我现在只写一个方程式,因为它足以解决我的问题的症结所在。 等式是 V[r]=e−(ν[r]+λ[r])ϵ[r]+p[r]∗[(ϵ[r]+p[r])(eν[r]+λ[r])rW[r]]′V[r]=e−(ν[r]+λ[r])ϵ[r]+p[r]∗[(ϵ[r]+p[r])(eν[r]+λ[r])rW[r]]′V[r] = \frac{e^{-(\nu[r] +\lambda[r])}}{\epsilon[r] + p[r]} *\biggr[ (\epsilon[r] + p[r])( e^{\nu[r] +\lambda[r]})r W[r] \biggr]' 我进行导数并得到 (等式1) V=[ϵ′+p′ϵ+p+r(ν′+λ′)+1]W+rW′V=[ϵ′+p′ϵ+p+r(ν′+λ′)+1]W+rW′V = \biggr[ \frac{\epsilon' +p'}{\epsilon + p} + r(\nu'+\lambda') +1 \biggr] W + r W' 现在根据该论文,我应该能够将系统的平衡量)扩展为以下形式的Chebyshev多项式(ϵ,p,ν,λ(ϵ,p,ν,λ(\epsilon ,p ,\nu ,\lambda ,其中Ti[y]是多项式。我知道如何让b我使用的代码,我在数学写道。也ÿ=2([R/[R )-1,和的域- [R是(0,- [R )。B[r]=Σ∞i=0biTi[y]−12b0B[r]=Σi=0∞biTi[y]−12b0B[r] = \Sigma_{i=0}^{\infty}b_i T_i[y] - \frac{1}{2} b_0 Ti[y]Ti[y]T_i[y]bibib_iy=2(r/R)−1y=2(r/R)−1y = …

6
如何开始使用CFO的OpenFOAM
我正在使用OpenFOAM解决CFD中的基本内部流程。入门的最佳方法是什么,有人跳入我的行列可能会给我带来一个很好的在线参考资料,以解决任何问题吗?我听说到现在为止它还是一个小众市场,而且很多求解器函数的文档都还不够完善。显然,软件包本身随附的文档只是一个开始,但是是否有第三方参考(如OpenFOAM Wiki)?

6
如果需要专有库,进行可重复研究的最佳方法是什么?
可重复进行的计算研究旨在使计算论文中生成结果所需的代码可供其他研究人员使用,以便他们可以运行此代码以在该论文中复制结果。我想提出我的研究可重复的,但我快到有点障碍的:一对夫妇的论文,我就利用工作的内部自动分化包(称为DAEPACK一种专有库)(CHEMKIN- II;许可条款不清楚)。 用开源版本替换这些软件组件将非常耗时。已经存在CHEMKIN-II的开源替代品,名为Cantera,但Cantera使用C ++,而CHEMKIN-II使用Fortran77。这将需要大量的精力来修改足够的Cantera代码,以便可以自动处理它。 C ++的差异化工具。 鉴于我需要这些专有软件包,假设研究人员可能无法使用CHEMKIN-II,那么使我的研究尽可能可重复的最佳方法是什么?由于DAEPACK是一个源到源的翻译器,因此我不必分发DAEPACK。我也许可以包含其输出,该输出将是计算派生的Fortran源文件。 更一般而言,如果您在工作中需要专有软件,并且专有软件不广泛使用(例如,MATLAB,Mathematica等不是),那么如何使您的工作可再现?

3
众所周知,一些优化问题等同于时间步长吗?
给定所需的状态和正则化参数,请考虑以下问题:找到状态和控件以最小化功能 受约束 \ begin {equation} Ay = u。\ end {equation} 在这里,为简单起见,我们可以考虑y,y_0,u \ in \ mathbb R ^ n和A \ in \ mathbb R ^ {n \ times n}。y0y0y_0β∈Rβ∈R\beta \in \mathbb Ryyyuuu12∥y−y0∥2+β2∥u∥212‖y−y0‖2+β2‖u‖2\begin{equation} \frac{1}{2} \| y - y_0 \|^2 + \frac{\beta}{2} \| u \|^2 \end{equation}Ay=u.Ay=u.\begin{equation} Ay = u. \end{equation}y,y0,u∈Rny,y0,u∈Rn y, y_0, u …

4
带导数的数字正交
大多数求积分的数值方法都将被积数视为黑盒函数。如果我们有更多信息怎么办?特别是,如果了解被积物的前几个导数,我们可以从中得到什么好处?还有哪些其他信息可能有价值? 特别是对于导数:基本正交(矩形/梯形/辛普森规则)的误差估计密切相关。也许有一种方法可以预先选择采样分辨率,而不是依靠动态适应性? 我对单变量和多维情况都感兴趣。

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.