计算科学

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

3
FAS-multigrid比线性缺陷校正慢吗?
我已经使用线性缺陷校正(LDC)和全近似方案(FAS)实现了V循环多网格求解器。 我的问题如下:使用LDC,每个循环的残差减少了约0.03倍。FAS的实现也确实以线性因子收敛,但是该因子仅为〜0.58。因此,FAS需要大约20倍的循环次数。 大多数代码是共享的,唯一的区别是LDC使用的向下/向上计算 下:üH:= 0 ,bH:=一世HH(bH-大号HüH)üH:=0,bH:=一世HH(bH-大号HüH)u_H:=0,\quad b_H:=I_h^H(b_h-L_hu_h) 上:üH:=üH+一世HHüHüH:=üH+一世HHüHu_h:=u_h+I_H^hu_H 和FAS使用 下:üH:=一世HHüH,bH:=一世HHbH+大号H一世HHüH-一世HH大号HüHüH:=一世HHüH,bH:=一世HHbH+大号H一世HHüH-一世HH大号HüHu_H:=I_h^Hu_h,\quad b_H:=I_h^Hb_h+L_HI_h^Hu_h-I_h^HL_hu_h 上:üH:=üH+一世HH(üH-一世HHüH)üH:=üH+一世HH(üH-一世HHüH)u_h:=u_h+I_H^h(u_H-I_h^Hu_h) 我的测试设置来自Brigg的“ Multigrid教程,第二版”,第1页。64,有分析解决方案 ù (X ,ÿ)= (X2-X4)(ÿ4-ÿ2)ü(X,ÿ)=(X2-X4)(ÿ4-ÿ2)u(x,y)=(x^2-x^4)(y^4-y^2) \quad与X ,ÿ∈ [ 0 ,1]2X,ÿ∈[0,1个]2x,y\in [0,1]^2 使用典型的线性五点模具作为Laplace-operator L,该方程式为Lv = \ Delta u =:b。最初的猜测是v = 0。大号v = Δ Ù = : b大号v=Δü=:bLv=\Delta u=:b大号大号Lv = 0v=0v=0 使用v = 1的初始猜测将测试设置更改为琐碎的ù (X ,ÿ)= 0ü(X,ÿ)=0u(x,y)=0,会导致几乎相同的收敛因子。v = 1v=1个v=1 …
9 multigrid 

1
如何近似一个大矩阵的条件数?
如果是傅里叶变换(非均匀或均匀),有限差分和对角矩阵的组合,我如何近似大矩阵的条件数?GGGGGGFFFRRRSSS 矩阵很大,不存储在内存中,只能作为函数使用。 特别是,我有以下矩阵: Gμ=SHFHFS+μRHRGμ=SHFHFS+μRHRG_\mu=S^HF^HFS+\mu R^HR 我想研究和条件数之间的关系。μμ\muk(Gμ)k(Gμ)k(G_\mu) 我假设有人需要某种迭代方法?最好会有一些MATLAB代码。

4
参考要求:对PDE和ODE算法的严格分析
我对有关数值PDE和ODE的书籍参考的建议很感兴趣,尤其是针对专业数学家编写的这种方法的严格分析。从列出数百种或数千种不同方法的意义上讲,它不必非常全面,但我会对至少涵盖指导现代技术的大多数关键概念的内容感兴趣。 我认为应该对数字线性代数的教科书进行类比,这对我来说比较熟悉。我在寻找与数值微分方程中的稳定性和截断误差有关的东西,因为Higham的数值算法的准确性和稳定性与数值线性代数中的稳定性和舍入误差有关,并且与Golub讨论ODE和PDE中的现代技术有关Van Van和Van Loan的《矩阵计算》讨论了线性代数技术的大多数主要类型。 实际上,我对数值ODE和PDE知之甚少。我一直在阅读各种在线笔记,并且有Randall LeVeque撰写的《用于常微分方程和有限差分方法的有限差分方法》一书,虽然很清楚,但不够深入。作为我要寻找的水平的一个更具体的示例,我希望椭圆和抛物线方程的任何部分都假定读者完全了解Sobolev空间及其嵌入的理论以及PDE的弱解,并使用结果从该理论中自由地得出有限元等的误差估计。

3
解决稀疏且病态严重的系统
我打算解决Ax = b的问题,其中A是复杂,稀疏,不对称且病态严重(条件号〜1E + 20)的方形或矩形矩阵。我已经能够使用LAPACK中的ZGELSS准确地解决该系统。但是随着我系统中自由度的增加,由于没有利用稀疏性,因此在使用ZGELSS的PC上解决该系统需要花费很长时间。最近,我在同一系统上尝试了SuperLU(使用Harwell-Boeing存储器),但是对于条件编号> 1E + 12,结果不准确(我不确定这是否是旋转的数值问题)。 我更倾向于使用已经开发的求解器。是否有一个强大的求解器可以解决我提到的系统(即利用稀疏性)并且可靠地(根据条件数)求解?

1
具有周期边界条件的线性弹性问题的适定性
对于某些应用,例如稳态传热和在多孔介质中的流动,可以通过在相对的边界面上施加周期性边界条件,在其余边界上施加狄利克雷bc来模拟更大(无限)的区域。对于二维矩形域,可以将周期性条件解释为该域位于圆柱体的表面上。 我很好奇是否可以针对弹性问题说同样的话。我注意到标准线性弹性问题仅限于有限域,并且从未见过规定或实施周期性边界条件的示例。我怀疑由于周期性引起的刚体运动(平移和/或旋转),此问题的解决方案的唯一性可能存在问题。 为简单起见,我们假设二维矩形域上的线性各向同性平面弹性情况。假设我想通过在两个相对边界上使用固定位移(狄利克雷)条件,在其余边界上使用周期性位移条件来对大型(周期性)介质建模。 这个问题是否正当?如果没有,知道我的最终目标是模拟具有重复材料特性的更大(无限)介质,是否可以使用一些策略(例如附加约束)使它处于适当状态?

2
在给定的间隔中找到函数的所有根
我需要在给定的时间间隔中找到标量函数的所有根。该功能可能有间断。该算法可以具有ε的精度(例如,如果算法没有找到比ε更近的两个不同的根,则可以。 是否存在这种算法?你能指出我有关那篇论文吗? 实际上,我有一个使用布伦特算法在给定间隔中找到零的函数,以及一个在给定间隔中找到最小值的函数。使用这两个函数,我建立了自己的算法,但是我想知道是否存在更好的算法。我的算法是这样的: 我从一个间隔[a,b]和一个函数开始f。如果sign(f(a+ε)) ≠ sign(f(b-ε))我知道a和之间至少有一个零b,我发现z = zero(]a,b[)。z通过查看z-εand 的值,我测试是否真的为零(可能是不连续性)z+ε。如果是,我将其添加到找到的零列表中。如果f(a+ε)和f(b-ε)均为正,我搜索m = min(]a, b[)。如果f(m)仍为正,我搜索m = max(]a,b[)是因为a和之间可能存在不连续性b。如果f(a+ε)和f(b-ε)为负,我则相反。 现在,从发现(z或m)的点开始,我将构建一个堆栈,其中包含函数的零,不连续和拐点。第一次迭代后,堆栈现在看起来像[a, z, b]。我再次从时间间隔]a,z[和开始算法]z,b[。当在两个点a和之间b,极值具有与两个区间结束相同的符号,并且两个极点都没有不连续性时,我从堆栈中删除了该区间。没有更多时间间隔时该算法结束。

1
使用Barrodale-Roberts-算法求解最小绝对偏差:过早终止?
请原谅冗长的问题,它只需要一些解释就可以解决实际问题。那些熟悉上述算法的人可能会直接跳到第一个单纯形标签。 为了解决最小绝对偏差问题(又称优化),Barrodale-Roberts算法是一种特殊用途的单纯形法,只需很少的存储和计算工作即可找到合适的最小值。L1L1L_1 我的算法实现以一个简单的示例终止,直到达到适当的最小值为止。但是,可能让我首先以更详细的方式陈述问题: 给定数据,L_1优化会尝试找到最小化 \ sum_ {i = 1} ^ n | y_i-f(x_i)|的c \ in m 。\ quad \ text {with} \ quad f(x):= A_x \ cdot \ phi 其中A_x是n \ times m矩阵,在某种程度上取决于x。这个问题可以说成是线性程序,因此可以使用类单纯形方法解决。(xi,yi)(xi,yi)(x_i,y_i)L1L1L_1c∈mc∈mc\in m∑i=1n|yi−f(xi)|withf(x):=Ax⋅ϕ∑i=1n|yi−f(xi)|withf(x):=Ax⋅ϕ \sum_{i=1}^n |y_i-f(x_i)| \quad\text{with}\quad f(x):=A_x\cdot \phi AxAxA_xn×mn×mn\times mxxx Barrodale和Roberts建议对单形方法进行一种(显然广泛使用的)修改,该方法使用L1L1L_1问题的特殊结构从根本上简化了单形方法。最值得注意的是,这是一种最佳解决方案,它至少对给定数据点的rank(A)rank⁡(A)\mathop{rank}(A)进行插值。具有Jstor访问权限的用户可以在这里找到相应的文章。 Lei和Anderson在2002年提出了一个小的修改方案,该修改方案应增加数值稳定性,从而克服单纯形算法的已知问题。 基本上,该算法假定您从一组必须进行插值的给定点开始,使用给定的过程构建单纯形表,然后使用Barrodale和Roberts的规则来确定要更改的基础变量,从而修改一组近似的数据点。 巴罗代尔和罗伯茨举了一个小例子,我试图重现。它试图通过函数逼近点。使用以下精简单纯形表完成其算法:{(1,1),(2,1),(3,2),(4,3),(5,2)}{(1,1),(2,1),(3,2),(4,3),(5,2)}\{(1,1), (2,1), (3,2), (4,3), (5,2)\}a1+a2xa1+a2xa_1+a_2x Basisb1v2b2u4v5Marginal …

1
求解Ax = b的无矩阵方法的预处理器
我需要解决Ax = b,但是我意识到即使它很稀疏,存储我的问题的矩阵系数也会占用太多内存。所以现在我正在考虑使用无矩阵方法,因为相同的系数在矩阵中出现的时间很多,所以我可以使用自己的私有存储方案(并通过提高缓存效率来实现)。 我正在看petsc,它为此类无矩阵线性运算符提供接口,但是我真正不了解的是,petsc如何计算前置条件?还是我应该提供自己的预处理器?如果是这样,是否有工具或方法可用于从无矩阵线性算子构建预处理器? 有关我的运算符的更多信息:它是不对称的,不是对角线占优势,而是由一些边带控制(但也不是对角线带状)

2
大协方差矩阵的并行计算
我们需要计算大小为的协方差矩阵 10000 × 1000010000×1000010000\times10000 至 100000 × 100000100000×100000100000\times100000。我们可以访问GPU和集群,我们想知道什么是加快这些计算速度的最佳并行方法。

1
大密度低秩分配问题
是否有合理便宜的方法来解决大型,密集,低等级的分配问题 最高π∑一世一个π我,我maxπ∑iAπi,i\max_\pi \sum_i A_{\pi i,i},其中遍历所有permutations.of 1:n?ππ\pi1 :n1:n1:n 这里一个AA是低秩r的n × nn×nn\times n × n矩阵。典型大小为 n = 10000 ~~(可能更大),r = 15。[Rrrn = 10000 n=10000 n=10000~~r = 15r=15r=15

1
超导体建模曲线的数值积分(Python)
我是一位试图对超导体-超导体结的电流-电压特性进行建模的物理学家。 该模型的等式为: 一世(五)=1个Ë[Rn − n∫∞- ∞| Ë|[Ë2-Δ21个]1 / 2| Ë+ e V|[ (E+ e V)2-Δ22]1 / 2[ f(E)− f(E+ e V)]d E一世(V)=1个Ë[Rñ-ñ∫-∞∞|Ë|[Ë2-Δ1个2]1个/2|Ë+ËV|[(Ë+ËV)2-Δ22]1个/2[F(Ë)-F(Ë+ËV)]dË\begin{align} I(V) = \frac{1}{eR_{\mathrm{n-n}}}\int_{-\infty}^{\infty}\frac{|E|}{[E^{2} - \Delta_{1}^{2}]^{1/2}}\frac{|E + eV|}{[(E + eV)^{2} - \Delta_{2}^{2}]^{1/2}}[f(E) - f(E + eV)]\,\mathrm{d}E \end{align} 通过评估给定电压(或代码中)的积分来计算电流值(或代码中)。一世一世IIVVVv 我已经在Python中尝试过了。代码如下所示。 from scipy import integrate from numpy import * import pylab …

2
考虑不同参数目标函数时间成本变化的优化方法
我正在努力改善某些人口统计建模软件的优化过程,以便它可以更好地使人口统计模型适合数据。我们想减少优化时间。 评估我们的目标函数所需的时间变化很大,具体取决于输入值。评估目标函数的时间与输入之间的关系是已知的。我想知道是否有任何优化方法在选择要评估的点时考虑目标函数的相对时间成本。 谢谢! 更新: 按照保罗的要求,以下是此特定目标函数的一些显着特征: 参数数量适中(〜12ish) 我们的问题是非凸的,或者至少在目标函数表面上存在狭窄而平坦的“脊”。现在,我们正在使用来自不同角度的多种优化来处理此问题,但我们希望做得更好。 尽管我们只能计算导数的有限差分近似值,但目标函数相当平滑。 评估成本也是参数值的平滑函数,并且可以预测。粗略地说,对于每个参数,评估的成本在范围的一端较高,而在另一端较低。因此,我们有很多区域要花大量钱来评估参数,但是我们知道它们在哪里。

1
CFD的混合空间方案:混合与转换有何缺点?
除了由于必须在某个区域内计算两个通量而导致的额外计算成本外,在有限体积方法中混合方案的混合两个通量评估是否还有任何弊端?通量评估如下所示: Fi+12=Λi+12Fci+12+(1−Λi+12)Fui+12Fi+12=Λi+12Fi+12c+(1−Λi+12)Fi+12u\mathbf{F}_{i+\frac12} = \Lambda_{i+\frac12} \mathbf{F}^c_{i+\frac12} + (1 - \Lambda_{i+\frac12}) \mathbf{F}^u_{i+\frac12} 根据您的应用,该开关基于压力和/或密度梯度传感器。是一个中心方案(McCormack,紧凑,...),是一个迎风方案,例如使用MUSCL重建的通量差分裂。如果我使用的连续函数混合两个方案,而不是简单地在值为0或1的方案之间进行切换,则在数值,保守属性方面是否存在任何问题?FcFc\mathbf{F}^cFuFu\mathbf{F}^uΛΛ\LambdaΛΛ\Lambda

2
C ++库,用于非线性约束最小化
我目前正在尝试解决在matlab“ fmincon”函数中实现的非线性约束最小化问题。我的期望是,minimum(fun1,x0,uB,lB,fun2)其中x0是初始状态,fun1是需要最小化的函数,uB是上限,lB是下界,fun2是提供非线性相等向量的函数/不平等,如http://www.mathworks.com/help/optim/ug/fmincon.html中所述作为nonlcon函数。这些向量也通过迭代而改变(它们非线性地取决于x_n,解向量的第n次迭代)。在matlab实施中,它们的形式为c(x)<= 0。这是需要从matlab移植到c ++的最后一段代码,在尝试寻找包含该算法的合适c ++库时,我一直在费劲工作。这就是为什么我在这里寻求帮助的原因,如果您能提供您的专业知识,我将不胜感激。 什么我想要做的很好的例子,在这个页面上第一http://www.mathworks.com/help/optim/ug/constrained-nonlinear-optimization-examples.html#f10960?s_tid=doc_12b唯一的区别就是我也需要边界... 提前致谢。 彼得

6
软问题:Python在哪里适合图片?
所以我一直在争论我是否应该去学习Python。与我的教授交谈后,就学术界而言,Matlab似乎是应用数学/计算科学中使用的通用语言。在工业界时,我的教授们(尤其是那些在工业界工作的人)说,学习c ++是最安全的方法。 我想听听你们在学术界和行业中的人,我是否应该打扰Python,或者只是暂时擅长于我所知道的(MATLAB和C ++)。 更新:杰夫提出了一个很好的观点,我可能应该提出更多细节: 去年,我目前是本科生,攻读计算专业的数学。我想去读研究生,继续研究(我从未见过自己喜欢教书)或在实验室工作。两者都是理想的。至于研究领域,可能涉及数值分析或概率论。万一计划A不能奏效,我会愿意在工业界工作,只要为自己为工业做准备不会花太多时间上学。因此,我认为我应该学习行业中通用的语言,作为备份。但这也是为什么我感到矛盾。我无法学习每种语言,也无法为每种可能性做好准备,因为这会花费太多时间。
9 matlab  python  c++ 

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.