计算科学

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



9
压缩浮点数据
是否有专门设计用于压缩浮点科学数据的工具? 如果函数是平滑的,则表示该函数的数字之间显然存在很多相关性,因此数据应压缩得很好。压缩/压缩二进制浮点数据并不能很好地压缩它。我想知道是否有专门开发的用于压缩浮点数据的方法。 要求: 无损压缩或指定保留最小位数的可能性(对于某些应用程序double可能超出我们的需求,而float精度可能不够高)。 经过良好测试的工作工具(即不仅仅是描述理论方法的论文)。 适用于压缩一维数字数据(例如时间序列) 跨平台(必须在Windows上运行) 它必须快 ---最好不慢于gzip。我发现如果我将数字存储为ASCII,则对该文件进行gzip压缩可以加快读取和处理该文件的速度(因为该操作可能受I / O限制)。 我特别想听听实际使用过这种工具的人们的意见。

10
有关选择哪种许可证的软件的建议和经验?
软件开发人员可以根据工作目标选择适当的许可证。 任何人都可以就选择哪种许可证提供一些建议/经验吗? “放弃”所有编码工作作为开源代码的利弊是什么? 如何与希望从研究代码中受益的行业参与者打交道?
26 software 

2
为什么我的迭代线性求解器不收敛?
使用KSP(PETSc)的预先设定的Krylov方法时会出什么问题的线性求解器程序包)中的求解稀疏线性系统(例如通过离散化和线性化偏微分方程获得的线性系统)时,会出现什么问题? 我可以采取什么步骤来确定问题出了什么问题? 为了成功有效地求解线性系统,我可以进行哪些更改?

5
是否有可以从符号公式自动生成数字精度浮点C例程的软件?
给定实变量的实函数,是否有可用的软件能够自动生成数字精确代码,以在配备IEEE 754算法的机器上对所有输入进行函数计算? 例如,如果要评估的实函数为: 该软件将考虑灾难性的取消操作,并可能考虑对某些输入集进行输出表查找,以避免计算精度下降。 或者,是否存在可以生成基于纯表的查找例程以高精度计算给定函数的软件?

3
如何在Mac上安装Fortran编译器?(OS X 10.x,x> = 4)
相关问题:科学计算和HPC中Mac OS的状态 计算科学中的大量软件包都是用Fortran编写的,并且Fortran并没有消失。还需要Fortran编译器来构建其他软件包(一个值得注意的示例是SciPy)。 但是,Mac OS X不包括Fortran编译器。我应该如何在计算机上安装Fortran编译器?
25 software  fortran 

3
BFGS与共轭梯度法
在BFGS和共轭梯度之间进行优化时,应该考虑哪些因素?我试图适合这些变量的函数是指数函数。但是,实际的目标功能除其他外还涉及集成,如果有帮助的话,则成本很高。


6
可视化非常大的链接图
我正在寻找一种可视化非常大的有向链接图的工具。我目前有约200万个节点,边缘约有1000万个。我尝试了几种不同的方法,但是大多数方法甚至要花费数小时才能完成10万个节点图 我尝试过的工作: 我在gephi中度过了一天,但是添加了8万个节点大约需要一个小时,并且该应用程序几乎变得毫无用处。 有什么建议么? 交互式可视化将是一个加号。

4
难振荡积分的数值积分方法
我需要对以下积分进行数值评估: ∫∞0š 我Ñ Ç′(x r )r E(r )----√d[R∫0∞sinc′(xr)rE(r)dr\int_0^\infty \mathrm{sinc}'(xr) r \sqrt{E(r)} dr 其中,和。在这里,是第二种修改的贝塞尔函数。在我的特定情况下,我有,和。X∈[R+λ,κ,ν>0ķλ=0.00313κ=0.00825ν=0.33Ë(r )= r4(λ κ2+ r2------√)- ν- 5 / 2ķ- ν- 5 / 2(λκ2+r2------√)E(r)=r4(λκ2+r2)−ν−5/2K−ν−5/2(λκ2+r2)E(r) = r^4 (\lambda\sqrt{\kappa^2+r^2})^{-\nu-5/2} K_{-\nu-5/2}(\lambda\sqrt{\kappa^2+r^2})X ∈ ř+x∈R+x \in \mathbb{R}_+λ ,κ ,ν> 0λ,κ,ν>0\lambda, \kappa, \nu >0ķKKλ = 0.00313λ=0.00313\lambda = 0.00313κ=0.00825κ=0.00825\kappa = 0.00825ν=0.33ν=0.33\nu = 0.33 我正在使用MATLAB,并且尝试了内置函数integral和quadgk,这给了我很多错误(请参见下文)。我自然也尝试了许多其他事情,例如按部分积分,以及将到积分求和。(ķ + 1 …

2
对于数字积分器,“折衷”是什么意思,SciPy的odeint是否使用它们?
在此评论中,我写道: ...默认的SciPy积分器,我假设它仅使用辛方法。 在这里,我指的是SciPy odeint,它使用“非刚性(Adams)方法”或“刚性(BDF)方法”。根据消息来源: def odeint(func, y0, t, args=(), Dfun=None, col_deriv=0, full_output=0, ml=None, mu=None, rtol=None, atol=None, tcrit=None, h0=0.0, hmax=0.0, hmin=0.0, ixpr=0, mxstep=0, mxhnil=0, mxordn=12, mxords=5, printmessg=0): """ Integrate a system of ordinary differential equations. Solve a system of ordinary differential equations using lsoda from the FORTRAN library odepack. Solves the …

1
对流扩散方程使用诺伊曼边界条件时的物理量守恒
当我应用不同的边界条件时,我不理解对流扩散方程的不同行为。我的动机是模拟在扩散和对流作用下的实际物理量(粒子密度)。除非从边缘流出颗粒密度,否则内部应保持颗粒密度。按照这种逻辑,如果我强制执行Neumann边界条件,则系统的两端,例如(在左侧和右侧),则系统应“封闭”,即如果边界处的通量为零,则没有粒子可以逸出。∂ϕ∂x=0∂ϕ∂x=0\frac{\partial \phi}{\partial x}=0 对于以下所有模拟,我已将Crank-Nicolson离散化应用于对流扩散方程,所有模拟都具有边界条件。但是,对于矩阵的第一行和最后一行(边界条件行),我允许独立于内部值进行更改。这允许端点完全隐式。∂ϕ∂x=0∂ϕ∂x=0\frac{\partial \phi}{\partial x}=0ββ\beta 下面我讨论4种不同的配置,只有一种是我所期望的。最后,我讨论了我的实现。 仅扩散限制 在此,通过将速度设置为零来关闭对流项。 仅扩散,所有点均为ββ\boldsymbol{\beta} = 0.5(Crank-Niscolson) 如脉冲面积减小所见,该量不守恒。 仅扩散,在内点处 = 0.5(Crank-Niscolson),边界处 = 1(完全隐式)βββ\boldsymbol{\beta}ββ\boldsymbol{\beta} 通过在边界上使用完全隐式方程,可以实现我所期望的:没有粒子逸出。您可以通过保留粒子扩散的区域来看到这一点。为什么在边界点选择影响情况的物理性?这是错误还是预期的?ββ\beta 扩散和平流 当包括对流项时,边界处的值似乎不会影响解。但是,对于所有情况,当边界似乎是“开放的”时,即粒子可以逃脱边界。为什么会这样呢?ββ\beta 在所有点上具有 = 0.5(Crank-Niscolson)的对流和扩散ββ\boldsymbol{\beta} 对流和扩散,在内点处 = 0.5(Crank-Niscolson),边界处 = 1(完全隐式)βββ\boldsymbol{\beta}ββ\boldsymbol{\beta} 对流扩散方程的实现 从对流扩散方程开始, ∂ϕ∂t=D∂2ϕ∂x2+v∂ϕ∂x∂ϕ∂t=D∂2ϕ∂x2+v∂ϕ∂x \frac{\partial \phi}{\partial t} = D\frac{\partial^2 \phi}{\partial x^2} + \boldsymbol{v}\frac{\partial \phi}{\partial x} 使用Crank-Nicolson进行写作, ϕn+1j−ϕnjΔt=D[1−β(Δx)2(ϕnj−1−2ϕnj+ϕnj+1)+β(Δx)2(ϕn+1j−1−2ϕn+1j+ϕn+1j+1)]+v[1−β2Δx(ϕnj+1−ϕnj−1)+β2Δx(ϕn+1j+1−ϕn+1j−1)]ϕjn+1−ϕjnΔt=D[1−β(Δx)2(ϕj−1n−2ϕjn+ϕj+1n)+β(Δx)2(ϕj−1n+1−2ϕjn+1+ϕj+1n+1)]+v[1−β2Δx(ϕj+1n−ϕj−1n)+β2Δx(ϕj+1n+1−ϕj−1n+1)] \frac{\phi_{j}^{n+1} - \phi_{j}^{n}}{\Delta t} = …

3
时间维度为何如此特殊?
总的来说,我听过数值分析家说过 “当然,从数学上讲,时间只是另一个维度,但时间仍然很特殊” 如何证明这一点?在什么意义上时间对于计算科学而言特别? 而且,为什么我们经常喜欢对时间维使用有限差分(导致“时间步长”),而对空间维应用有限差分,有限元,频谱方法等呢?一个可能的原因是,我们倾向于在时间维度上具有IVP,而在空间维度上具有BVP。但是我不认为这完全有道理。

3
使用零件积分来导出FEM离散化的弱形式的目的是什么?
当从PDE的强形式转换为FEM形式时,似乎总是应该首先说明变体形式来做到这一点。为此,您可以将强形式与某个(Sobolev)空间中的元素相乘,然后在您的区域中进行积分。这我可以接受。我不明白的是为什么还必须使用格林的公式(一次或多次)。 我主要从事泊松方程的研究,因此,如果我们以均质Dirichlet边界条件为例,即 −∇2uu=f,u∈Ω=0,u∈∂Ω−∇2u=f,u∈Ωu=0,u∈∂Ω \begin{align} -\nabla^2u &= f,\quad u\in\Omega \\ u &= 0, \quad u\in\partial\Omega \end{align} 然后声称形成变分形式的正确方法是 ∫Ωfvdx⃗ =−∫Ω∇2uvdx⃗ =∫Ω∇u⋅∇vdx⃗ −∫∂Ωn⃗ ⋅∇uvds⃗ =∫Ω∇u⋅∇vdx⃗ .∫Ωfvdx→=−∫Ω∇2uvdx→=∫Ω∇u⋅∇vdx→−∫∂Ωn→⋅∇uvds→=∫Ω∇u⋅∇vdx→. \begin{align} \int_\Omega fv\,\mathrm{d}\vec{x} &= -\int_\Omega\nabla^2 uv\,\mathrm{d}\vec{x} \\ &=\int_\Omega\nabla u\cdot\nabla v\,\mathrm{d}\vec{x} - \int_{\partial\Omega}\vec{n}\cdot\nabla u v\,\mathrm{d}\vec{s} \\ &=\int_\Omega\nabla u\cdot\nabla v\,\mathrm{d}\vec{x}. \end{align} 但是,是什么使我无法在第一行上使用表达式,这难道不是一种可以用来获取FEM形式的变体形式吗?它不是对应于双线性和线性形式和吗?这里的问题是,如果我使用线性基函数(形状函数),那么我会遇到麻烦,因为我的刚度矩阵将是空矩阵(不可逆)?但是,如果我使用非线性形状函数怎么办?我仍然需要使用格林公式吗?如果我不必:建议这样做吗?如果没有,那么我是否会有一个变式但不弱的公式?b(u,v)=(∇2u,v)b(u,v)=(∇2u,v)b(u,v)=(\nabla^2 u, v)l(v)=(f,v)l(v)=(f,v)l(v)=(f, v) 现在,假设我有一个带有高阶导数的PDE,这是否意味着有许多可能的变分形式,具体取决于我使用格林公式的方式?它们都导致(不同的)FEM近似吗?

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.