计算科学

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

2
高效拉格朗日预处理器
我想解决带有非线性等式约束的非线性问题,并且我正在使用带有惩罚正则项的增广拉格朗日函数,该函数众所周知会破坏我线性化系统的条件数(我是说每次牛顿迭代) 。惩罚期限越大,条件编号越差。有人会知道在特定情况下摆脱这种不良条件的有效方法吗? 更具体地说,我使用经典的增强型拉格朗日法,因为我有很多约束,这些约束通常可能是多余的。因此,将约束直角盲目地合并到原始变量中非常方便。我直接在KKT系统上尝试了其他基于变量消除或有效前置条件的更复杂的方法,但是由于约束冗余,我遇到了一些麻烦。 关于该问题变量被配制成按照我的形式拉格朗日 大号(Û,λ ):= w ^(Û)+ ρ λ Ťu =[ u1个,⋯ ,ūñ]u=[u1,⋯,un]\mathbf u =[u_1,\cdots,u_n]L( u,λ): = W(û)+ ρ λŤc (u)+ ρ2C2(你)L(u,λ):=W(u)+ρλTc(u)+ρ2c2(u)\mathcal L(\mathbf u,\lambda):= \mathcal W(\mathbf u) + \rho \lambda^T \,c(\mathbf u) + \frac{\rho}{2} c^2(\mathbf u) 所以一般在每个牛顿的目标迭代是解决形式的问题 随着(我们的约束的下降麻布) 甲(Û,ρ ):= ∇ 2 ù w ^(Û)+ ρ Ç Ť(ù)ç (Û) …

2
线性约束的绝对值
我有以下优化问题,在约束中我具有绝对价值: 令和为大小均为列向量。我们想解决以下问题: x∈Rnx∈Rn\mathbf{x} \in \mathbb{R}^nf0,f1,…,fmf0,f1,…,fm\mathbf{f}_0, \mathbf{f}_1, \ldots, \mathbf{f}_mnnnmins.t.fT0x|fT1x|≤|fT2x|≤…≤|fTmx|minf0Txs.t.|f1Tx|≤|f2Tx|≤…≤|fmTx|\begin{align} \min &\mathbf{f}_0^T \mathbf{x} \notag \\ \text{s.t.} &|\mathbf{f}_1^T \mathbf{x}| \leq |\mathbf{f}_2^T \mathbf{x}| \leq \ldots \leq |\mathbf{f}_m^T \mathbf{x}| \end{align} 我知道可行的空间不会很凸,因此我可能需要一个MILP来解决问题。我正在寻找所需数量最少的二进制变量以及可以解决该问题的设置。 当不平等的只有一侧具有绝对值时,处理绝对值通常很容易(http://lpsolve.sourceforge.net/5.1/absolute.htm);但是,这种情况似乎更为复杂。 先感谢您。

1
薛定inger方程的数值方法
我们正在比较各种数值方法的性能,这些方法可用于求解氢原子与强激光脉冲(太强而不能使用扰动方法)相互作用时的薛定inger方程。当对径向部分使用离散化方案时,似乎大多数(所有人)将原子放在盒子中,只是将半径切成一定的大值并求解这些基集。与将径向变量映射到有限域,然后离散化该域(在此过程中,丢弃大部分可用的基集)相比,这又如何呢?有人似乎没有理由这样做吗?

3
具有已知边界的多维积分的数值积分
我有一个(二维)不正确的积分 一世= ∫一个w ^(x ,y)F(x ,y)d x d yI=∫AW(x,y)F(x,y)dxdyI=\int_A \frac{W(x,y)}{F(x,y)}\,\mbox{d}x\mbox{d}y 其中积分的域小于X = [ - 1 ,1 ],ÿ = [ - 1 ,1 ]但通过进一步限制˚F (X ,ÿ )> 0。由于F和W平滑且W ≠ 0一个AAX = [ - 1 ,1 ]x=[−1,1]x=[-1,1]ÿ= [ - 1 ,1 ]y=[−1,1]y=[-1,1]F(x ,y)> 0F(x,y)>0F(x,y)>0FFFw ^WWw ^≠ 0W≠0W \ne 0在边界处,后一种关系意味着被积物在边界处可以是奇异的。但是,被积数是有限的。到目前为止,我已经使用嵌套数值积分计算了该积分。这是成功的但很慢。我寻找一种更合适(更快)的方法来解决积分问题,也许是蒙特卡洛方法。但是我需要一个不将点放在非三次域A的边界上并且正确地接受不适当积分的极限的函数。积分转换可以帮助此一般表达吗?请注意,我可以解决为Ÿ作为函数X,甚至计算出我的一些特殊功能,重量w ^ (F(x ,y)F(x,y)F(x,y)ÿyyXxx一世II。w …

2
用Python解决线性约束最小二乘问题
我要解决 s 。Ť 。分X∥ 甲X - b ∥22,∑一世X一世= 1 ,X一世≥ 0 ,∀ 我。minx‖Ax−b‖22,s.t.∑ixi=1,xi≥0,∀i.\begin{alignat}{1} & \min_{x}\|Ax - b\|^2_{2}, \\ \mathrm{s.t.} & \quad\sum_{i}x_{i} = 1, \\ & \quad x_{i} \geq 0, \quad \forall{i}. \end{alignat} 我认为这是一个二次问题,可以使用CVXOPT解决,但我不知道如何解决。


1
查找与计算成本
我有兴趣进行计算以检查是否满足距离标准:即向量和花药向量x j之间的距离应小于某个值r m a x。我的数据根据​​坐标的正交网格进行分区。由于我的临界值小于最近邻坐标的端点之间的距离,因此我想添加一个“ octant”变量来检查设置是否正确:xixi{\bf x}_ixjxj{\bf x}_jrmaxrmaxr_{\rm max} if octant[j] in allowed_list continue 作为“短路” if dist(x[i], x[j]) < r_max 我的问题是:布尔查找和比较相对于浮点运算的计算效率如何?这在现代建筑上值得吗?
12 efficiency 

3
Blaze线性代数库?
SIAM《科学计算》杂志上的“重述表达模板:当前方法的性能分析”一文引用了“ Blaze”线性代数库。我以前从未听说过,而且似乎找不到在线参考。(明显的google搜索正在将上述论文归还给您。) 那么这个图书馆是什么,我在哪里可以了解更多呢?

2
非线性方程组优化与求解系统中基于牛顿的方法
我要求澄清有关minpack的最新问题,并得到以下评论: 任何方程组都等于一个优化问题,这就是为什么在优化中基于牛顿的方法看起来很类似于求解非线性方程组的基于牛顿的方法。 我可能会在共轭梯度法的示例中得到最好的解释,这使我对此评论(以及有关专门的非线性最小二乘法求解器(如minpack)的负面评论)感到困惑。该方法适用于具有对称正定矩阵A的系统A x = b。它也可以用来解决普通最小二乘问题分钟X | | A x − b | | 2对于任意矩阵AAx=bAx=bAx=bAAAminx||Ax−b||2minx⁡||Ax−b||2\operatorname{min}_x||Ax-b||^2AAA,但不建议这样做。为什么不应该这样做的一种解释是,系统的条件数将大大增加。 但是,即使将线性方程组转化为优化问题也被认为是有问题的,为什么对于一般情况却没有那么多问题呢?似乎与使用最先进的优化算法而不是使用稍微老化的非线性最小二乘法求解器有关。但是,与扔掉信息和增加系统条件数有关的问题不是相对独立于实际使用的优化算法吗?

3
关于奇异值分解算法的最新技术水平是什么?
我正在研究仅标头的矩阵库,以在尽可能简单的程序包中提供一定程度的线性代数功能,并且我试图调查当前的最新技术水平:计算a的SVD复矩阵。 我正在进行两阶段分解,即对角化,然后进行奇异值计算。现在,我正在使用Householder方法进行双角化(我相信LAPACK也使用该方法),而且我认为这与当前的方法一样好(除非有人知道算法)为了它..)。 ø( Ñ2)O(N2)\mathcal{O}(N^2) 奇异值的计算在我的清单上是下一个,对于执行此操作的通用算法,我有些不了解。我在这里读到,研究正在朝着一种逆迭代方法的方向发展,该方法可以保证正交性复杂性。我很想听听有关该消息或其他进展。ø( Ñ)O(N)\mathcal{O}(N)

4
制作分子编辑器/可视化器:面向对象的程序,数据结构和分子
我是编程新手,正在尝试解决我的第一个大问题并编写我的第一个大程序。我一直在寻找可以学习的开放源代码示例,但是到目前为止,我只发现了我无法完全理解的语言代码,或者确实找到了相关但仍然相距甚远的语言来学习。我在这里采取一些概念上的步骤时遇到了麻烦。 我想制作一个简单的软件来构建,修改并稍后代表有机小分子。这主要是一种学习练习。用户可以给出一个SMILES字符串或从一组基本的起始分子中进行选择,然后可以以图形方式或通过文本输入语法在该分子上进行构建。但是,我还没有达到那种复杂程度。我什至无法完全理解如何创建类/对象来存储分子。因此,我的问题简明扼要:如何在保留所有信息级别的同时使用类/对象构建分子,以及应使用哪些数据结构作为哪些对象的属性?而且,对象可以作为其他对象的属性吗? 到目前为止,这是我的思路:我正在考虑创建一个“分子”类,然后是一个“原子”类/子类和一个“邦德”子类,也许还有一个“ FunctionalGroup”子类。这似乎是一个不错的起点,但也许我误会了OOP,这很不好。但是后来我的问题真的变得令人困惑(对我来说)。即使我拥有所有这些概念/想法/类,我仍未完全掌握表示分子所需的数据结构。原子列表将是一件好事。该列表可以是Atom对象的列表吗?我还需要一种存储连接性的方法。2D矩阵似乎是个好主意,在矩阵位置,键序为整数。 在这一点上,我开始不知所措。我到目前为止所做的一切都有意义吗?在此之上附加显示/绘图方面可能意味着我需要重写/重做许多这些事情,但是我只是想达到一个这样的程度,即我至少可以将分子与相关数据一起存储,然后访问该数据进行检查/修改。我正在考虑在Python中执行此操作,因此代码/类可能看起来像这样:http : //pastebin.com/uUi1BMzr 也许这确实是StackOverflow的编程问题,但是我认为它足够具体了。即使您仅指出我在概念上犯了错误的地方,也将不胜感激任何帮助。提前致谢。


2
倍频程:计算两个向量矩阵之间的距离
假设我有两个分别代表N,M个2d向量的矩阵Nx2,Mx2。有没有一种简单而又好的方法来计算每个向量对(n,m)之间的距离? 简单但低效的方法当然是: d = zeros(N, M); for i = 1:N, for j = 1:M, d(i,j) = norm(n(i,:) - m(j,:)); endfor; endfor; 我找到的最接近的答案是bsxfun,用法如下: bsxfun(inline("x-y"),[1,2,3,4],[3;4;5;6]) ans = -2 -1 0 1 -3 -2 -1 0 -4 -3 -2 -1 -5 -4 -3 -2

1
从3D中Delaunay镶嵌衍生的图形的枚举
是否有一种算法可以枚举与3D点中的点Delaunay细分相关的图形? 如果是这样,是否存在与任何“ Delaunay图”相对应的几何形状的有效参数化? 我希望系统地枚举指定组成的分子的所有稳定几何形状,而无需任何先验的结合等知识。 编辑:令为具有个顶点的图形集。令是的个点到对应于3D中所述点的Delaunay细分的图的映射。 N D :R 3 N → G N N R 3GNGNG_NNNND:R3N→GND:R3N→GND: \mathbb{R}^{3N} \to G_NNNNR3R3\mathbb{R}^3 如何有效地枚举)?D(R3N)D(R3N)D(\mathbb{R}^{3N}) 此外,给定一个图,如何有效地参数化)?d - 1(克)g∈Gng∈Gng\in G_nD−1(g)D−1(g)D^{-1}(g) 编辑:2D中的示例:对于4点,有2个Delaunay图。 1−╲2|4−╱3 and 1|3−×−2|41−2−3╲|╱4 and 1−2|×|3−4 \begin{matrix} 1 & - & 2 & - & 3 \\ &\diagdown &| & \diagup\\ &&4 \end{matrix}\mbox{ and } \begin{matrix} …

2
自动生成三角形和四面体的积分点和权重
通常人们会参考一本书或一本书来找到单位三角形和四面体的积分点和权重。我正在寻找一种自动计算这些点和权重的方法。以下Mathematica代码示例计算单位线(四/六面体)元素的积分权重和点: unitGaussianQuadraturePoints[points_] := Sort[x /. Solve[Evaluate[LegendreP[points, x] == 0], {x}], ! OrderedQ[N[{#1, #2}]] &]; unitGaussianQuadratureWeights[points_] := Module[{gps, f, int, integr, vars, eqns}, gps = unitGaussianQuadraturePoints[points]; f[0, 0] := 1; f[0., 0] := 1.; f[x_, n_] := x^n; int = Integrate[f[x, #], x] & /@ Range[0, points - 1]; integr = …

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.