Questions tagged «numerical-analysis»

构造和分析算法以计算连续问题的近似离散解。一个典型的例子是通过差商对导数进行逼近。

17
是否有适用于Python的高质量非线性编程求解器?
我要解决几个具有挑战性的非凸全局优化问题。目前,我使用了MATLAB的Optimization Toolbox(特别是fmincon()使用algorithm = 'sqp'),它非常有效。但是,我的大部分代码是在Python中进行的,我也想在Python中进行优化。是否存在可以与Python绑定竞争的NLP求解器fmincon()?它必须 能够处理非线性等式和不等式约束 不需要用户提供雅可比行列式。 如果不保证全局最优(fmincon()没有),也可以。我正在寻找一种即使在遇到挑战性问题时也可以收敛到局部最优的东西,即使它比慢一些fmincon()。 我尝试了OpenOpt提供的几种求解器,发现它们不如MATLAB的fmincon/sqp。 只是为了强调,我已经有了一个易于处理的公式和一个好的求解器。我的目标仅仅是更改语言,以使工作流程更加简化。 Geoff指出问题的某些特征可能是相关的。他们是: 10-400个决策变量 4-100个多项式相等约束(多项式范围从1到大约8) 有理不等式约束的数量大约等于决策变量数量的两倍 目标函数是决策变量之一 等式约束的雅可比行列是密集的,不等式约束的雅可比行列是密集的。

3
并行ODE方法的最新技术水平是什么?
我目前正在研究ODE集成的并行方法。有很多新旧文献描述了各种各样的方法,但是我没有发现任何有关该主题的最新调查或概述文章。 Burrage着有这本书[1],但是它已经有20多年的历史了,因此没有涵盖许多更现代的想法,例如超现实算法。 [1] K. Burrage,常微分方程的并行和顺序方法,克拉伦登出版社,牛津,1995年


3


1
您如何调试数字代码,此振荡错误的根源是什么?
可以从经验中获得很多见识,我只是想知道以前是否有人看到过类似的东西。该图显示了对流扩散方程的初始条件(绿色),然后是迭代200(蓝色),然后是迭代400(红色)的解。 对流扩散方程的解经几次迭代后就爆炸了。Peclet数,和CFL条件满足时,Ç ≈ 0.0015,所以方程式应该是稳定的。我希望我在数字代码中有一个错误。μ 听,说:0.07μ≈0.07\mu\approx0.07C≈ 0.0015C≈0.0015C\approx 0.0015 背景。离散化是对流项和扩散项的主要区别。我相信这是平流的第一阶和扩散的第二阶。我已经使用有限体积的方法(第一次)实现了这一点,其中通过从单元格平均值进行线性插值找到了单元格面上的系数(速度和扩散系数)值。我在左右表面上应用Robin边界条件,并将边界处的通量设置为零。 您如何调试数字代码?以前有没有人出现过这样的场景,那么在哪里可以找到一个好地方? 更新资料 这是我关于平流扩散方程实施有限体积方法的个人“实验书”样式说明,http://danieljfarrell.github.io/FVM/ Python源代码可在此处获得,http://github.com/danieljfarrell/FVM.git 更新资料 解决方案再简单不过了!我只是在扩散项上犯了一个符号错误。很奇怪,我确定我还没有发布它,所以我不会发现错误!如果有人想分享有关如何调试数字代码的提示,我仍然很感兴趣。我没有方法,这有点碰运气,我一直在努力寻找线索,但是这个过程可能需要数周(有时)。 ××\times

1
使用有限体积法时应如何应用边界条件?
从上一个问题开始,我试图将边界条件应用于该非均匀有限体积网格, 我想将Robin类型的边界条件应用于域的lhs(,这样,x=xL)x=xL)x=x_L) σL=(dux+au)∣∣∣x=xLσL=(dux+au)|x=xL \sigma_L = \left( d u_x + a u \right) \bigg|_{x=x_L} 其中是边界值; a ,d是分别在边界,对流和扩散上定义的系数;Ù X = ∂ ùσLσL\sigma_La,da,da, d,是的衍生物ü在边界评价和ü为我们所求解的变量。ux=∂u∂xux=∂u∂xu_x = \frac{\partial u}{\partial x}uuuuuu 可能的方法 我可以想到两种在上述有限体积网格上实现此边界条件的方法: 鬼细胞方法。 将写为包括虚像元的有限差。σ 大号 = ð Ü 1 - ü 0uxuxu_xσL=du1−u0h−+au(xL)σL=du1−u0h−+au(xL) \sigma_L = d \frac{u_1 - u_0}{h_{-}} + a u(x_L) A.然后对点x 0和x 1使用线性插值法求中间值u (x …

3
科学编程竞赛
我定期参加所谓的“编程竞赛”,在那儿您可以在有限的时间内使用自己的代码和解决问题的技能来解决算法难题。有关这些示例的参考示例,请搜索诸如Google Code Jam或ACM-ICPC之类的比赛。 (如果您知道什么是编程竞赛,则可以跳过以下段落) 在这些竞赛中,您可以在物理站点或在线上进行单独竞赛或团队竞赛,目标是在竞赛结束之前解决尽可能多的问题。每个问题都与解决方案必须满足的某些约束条件有关,例如运行时间,使用的内存等。问题难度的范围可以从“显而易见的解决方法”到“需要大量知识或精通技巧才能破解”。主要目标当然是要玩得开心,但是在某些情况下,成功甚至可能会得到现金奖励,荣誉和机智,甚至与Google等顶尖公司的招聘人员进行面试。 (如果您跳过了上一段,请停止跳过,因为这是我的问题) 通过编程竞赛,我对算法,一般计算机科学以及编码和发展我的问题解决技能的整体意义有了真正的兴趣。我也想在科学计算中这样做。 问题: 是否存在与纯算法类型相同的竞争,但侧重于数值分析,优化等? 我尝试了谷歌搜索,但乍看之下找不到任何信息…… 附录:我得到了建议来检查欧拉计划,但这并不是我真正想要的。我想要的是一个更广阔的舞台,练习更多“肮脏”的数字,例如使用pde的解决方案来创意,解决数字优化问题等。仅作比较,Kaggle是一个您可以在定期举行的各种比赛中练习数据挖掘,机器学习等的网站。我想要类似的东西,但是要用数字方案之类来实现和发挥创意。

1
关于五阶Runge-Kutta方法的稳定性区域的令人困惑的评论
我在论文中碰到一个令人费解的评论 PJ van der Houwen,偏微分方程Runge-Kutta方法的发展,应用。嗯 数学。1996年20:261 范德侯文在第264页的第8ff行中写道: “对于泰勒多项式这意味着假想稳定性间隔为空 ”p = 1 ,2 ,5 ,6 ,9,10 ,⋯p=1个,2,5,6,9,10,⋯p = 1, 2, 5, 6, 9, 10, \cdots 其中,泰勒多项式是指Runge-Kutta方法的稳定性多项式(在x = 0处截断展开),p是阶数(请参阅第263页)。我认为我误会了一些东西,因为据我所知,五阶Runge-Kutta方法没有虚假的稳定区间。据我所知,假想极限约为3.4左右。经验值(x )经验值⁡(X)\exp(x)x = 0X=0x=0 我有什么误会

3
矩阵平方根逆的高效计算
统计中的一个常见问题是计算对称正定矩阵的平方根逆。什么是最有效的计算方式? 我碰上了一些文献(我还没有读),以及一些附带的R代码里面在这里,我将在这里重现为了方便 # function to compute the inverse square root of a matrix fnMatSqrtInverse = function(mA) { ei = eigen(mA) d = ei$values d = (d+abs(d))/2 d2 = 1/sqrt(d) d2[d == 0] = 0 return(ei$vectors %*% diag(d2) %*% t(ei$vectors)) } 我不能完全确定我了解这条线d = (d+abs(d))/2。有没有更有效的方法来计算矩阵平方根逆?R eigen函数调用LAPACK。

2
是否可以不使用Newton-Raphson迭代来求解非线性PDE?
我试图了解一些结果,并希望对解决非线性问题提出一些一般性意见。 Fisher方程(非线性反应扩散PDE), üŤ= düX X+ βu (1 − u )= F(你)üŤ=düXX+βü(1个-ü)=F(ü) u_t = du_{xx} + \beta u (1 - u) = F(u) 以离散的形式 ü′Ĵ= L u + βüĴ(1 − uĴ)= F(你)üĴ′=大号ü+βüĴ(1个-üĴ)=F(ü) u_j^{\prime} = \boldsymbol{L}\boldsymbol{u} + \beta u_j (1 - u_j) = F(\boldsymbol{u}) 其中大号大号\boldsymbol{L}是微分算子,你= (你j − 1,üĴ,üj + 1)ü=(üĴ-1个,üĴ,üĴ+1个)\boldsymbol{u}=(u_{j-1}, u_j, u_{j+1}) …

4
固定数量的RHS评估的最佳ODE方法
在实践中,数值求解运行时IVP X (吨0)= X 0 通常通过评估右手侧(RHS)的持续时间支配 ˚F。因此,让我们假设所有其他操作都是即时的(即没有计算成本)。如果用于解决IVP整体运行时受到限制,那么这是相当于限制性的评估的数目 ˚F一些 Ñ ∈ Ñ。x˙(t)=f(t,x(t)) for t∈[t0,t1]x˙(t)=f(t,x(t)) for t∈[t0,t1] \dot{x}(t) = f(t, x(t)) \quad \text{ for } t \in [t_0, t_1] x(t0)=x0x(t0)=x0 x(t_0) = x_0 ffffffN∈NN∈NN \in \mathbb{N} 我们只对最终值感兴趣。x(t1)x(t1)x(t_1) 我正在寻找理论和实践结果,以帮助我在这种情况下选择最佳的ODE方法。 例如,如果那么我们可以使用两个显式欧拉步长(t 1 - t 0)/ 2或一个宽度t 1 - t 0步长的中点方法求解IVP 。我现在还不清楚哪一个更可取。对于更大的N,当然也可以考虑多步方法,迭代的Runge-Kutta方案等。N=2N=2N = 2(t1−t0)/2(t1−t0)/2(t_1 - …

1
如何避免python函数中的灾难性取消?
我无法在数字上实现函数。它受到以下事实的困扰:在较大的输入值下,结果是很大的数乘以很小的数。我不确定灾难性取消是否是正确的术语,因此请纠正我。出现问题的证据: 对于6的较大输入,如何避免振荡和0.0的赋值? 这是我的功能: import numpy as np def func(x): t = np.exp(-np.pi*x) return 1/t*(1-np.sqrt(1-t**2))

2
冯·诺伊曼稳定性分析的有限差分方法的替代方法
我正在研究耦合的一维多孔弹性方程(比奥模型),给出为: −(λ+2μ)∂2u∂x2+∂p∂x=0−(λ+2μ)∂2u∂x2+∂p∂x=0-(\lambda+ 2\mu) \frac{\partial^2 u}{\partial x^2} + \frac{\partial p}{\partial x} = 0 ∂∂t[γp+∂u∂x]−κη[∂2p∂x2]=q(x,t)∂∂t[γp+∂u∂x]−κη[∂2p∂x2]=q(x,t)\frac{\partial}{\partial t} \left[ \gamma p + \frac{\partial u}{\partial x}\right] -\frac{\kappa}{\eta}\left[\frac{\partial^2 p}{\partial x^2}\right] =q(x,t) 在域并具有边界条件: Ω=(0,1)Ω=(0,1)\Omega=(0,1) p=0,(λ+2μ)∂u∂x=−u0p=0,(λ+2μ)∂u∂x=−u0p=0, (\lambda + 2\mu)\frac{\partial u}{\partial x}=-u_0 at and在。ü = 0 ,∂ px=0x=0x=0X=1u=0,∂p∂x=0u=0,∂p∂x=0u=0, \frac{\partial p}{\partial x} = 0x=1x=1x=1 我使用中心有限差分方案离散了这些方程式: γp吨+ 1我 -p吨我(λ + 2 …

2
许多变量的数值积分
让和是函数在这些变量中。X⃗ = (x1个,X2,… ,xñ)∈ [ 0 ,1 ]ñx→=(x1,x2,…,xn)∈[0,1]n\vec{x} = (x_1, x_2, \dots, x_n) \in [0,1]^nf(x⃗ ):[0,1]n→Cf(x→):[0,1]n→Cf(\vec{x}): [0,1]^n \to \mathbb{C} 此迭代积分是否有递归方案? ∫[0,1]n∏dxif(x⃗ )∫[0,1]n∏dxif(x→)\int_{[0,1]^n} \prod dx_i \;f(\vec{x}) 如果且我将分成100个段,则我们要加点。必须有一个更聪明的方法。[ 0 ,1 ] 10 20n=10n=10n = 10[0,1][0,1][0,1]1020102010^{20} 实际上,我要集成的功能是单一组的Haar度量。 ∫U(n)f(A) dA=1n!∫[0,2π]n∏j&lt;k∣∣eiθj−eiθk∣∣2⋅f(θ1,…,θn) dθ12π ⋯ dθn2π∫U(n)f(A) dA=1n!∫[0,2π]n∏j&lt;k|eiθj−eiθk|2⋅f(θ1,…,θn) dθ12π ⋯ dθn2π\int_{U(n)} f(A) \ dA = \frac{1}{n!} \int_{[0,2\pi]^n} \prod_{j<k} …

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.