计算科学

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

2
如何在整体稀疏有限元刚度矩阵中有效地实现Dirichlet边界条件
我想知道整体稀疏有限元矩阵中的Dirichlet边界条件实际上是如何有效实现的。例如,假设我们的全局有限元矩阵为: ķ=⎡⎣⎢⎢⎢⎢⎢⎢520− 10241个0001个632− 1037000203⎤⎦⎥⎥⎥⎥⎥⎥和右侧矢量图b =⎡⎣⎢⎢⎢⎢⎢⎢b 1b 2b 3b 4b 5⎤⎦⎥⎥⎥⎥⎥⎥K=[520−102410001632−1037000203]and right-hand side vectorb=[b1b2b3b4b5]K = \begin{bmatrix} 5 & 2 & 0 & -1 & 0 \\ 2 & 4 & 1 & 0 & 0 \\ 0 & 1 & 6 & 3 & 2 \\ -1 & 0 & 3 …

2
在“非完美矩形”网格上的多重网格
多重网格介绍通常使用矩形网格。值的插值就很简单了:只需在粗网格的两个相邻节点之间的边缘上线性插值,即可找到该边缘上的细网格节点的值。 对于FEM应用程序,我有一个“拓扑”为矩形的网格,因此节点连接与矩形网格相同。但是,节点在网格上的排列不是完美的,但可能会移动很短的距离以更好地适应几何形状,同时仍保持与理想矩形网格中的连接。 网格看起来像这样:网格示例。您会看到:连接是“规则矩形”,但节点位置不是。 我可以为这种设置想象几种“合理的”几何插值方案。 普遍的问题是:只要插值是“良好”的,多重网格是否需要一个完美对齐的矩形网格,或者它也可以在上述情况下工作?还是在这种情况下使用代数多重网格更好?(我不喜欢它,因为它不像几何多重网格那样直观。)
9 multigrid 

2
随时间变化的PDE的时空有限元离散化
在FEM文献中,半变量方法通常用于时变PDE的解决方案中。我还没有看到一种完全可变的方法,即FEM将空间和时间离散化,也许允许使用非结构化的时空网格。尽管时间步进方法可能更易于实现,但是否存在时空网格划分不可行的特定原因?我想人们必须定制网格来尊重给定问题的物理特性,但是我不确定。

2
从数字上看,弱收敛的感觉如何?
考虑一下,您在无穷维Hilbert或Banach空间中有问题(例如PDE或此类空间中的优化问题),并且您有一种算法难以收敛到解决方案。如果您离散化问题并将相应的离散化算法应用于问题,则弱收敛是每个坐标的收敛,因此也很强。我的问题是: 这种强收敛与从原始无穷算法的良好旧平原强收敛获得的收敛有什么区别? 或者,更具体: “离散的弱收敛方法”会发生什么样的不良行为? 当我只能证明收敛性较弱时,我自己通常不太高兴,但是到目前为止,即使我将离散化问题扩展到更高维度,我仍然无法观察到方法结果的问题。 请注意,我对“首先离散化而不是优化”与“首先优化而不是离散化”问题不感兴趣,并且我知道如果将算法应用于不与该问题共享所有属性的离散化问题,则会出现问题针对该算法而设计的。 更新:作为一个具体示例,请考虑一个变量存在的优化问题大号2大号2L^2并用(惯性)前后分裂之类的方法求解,或者只知道弱收敛性的其他方法。对于离散化问题,可以使用相同的方法,如果直接离散化算法,则使用正确的离散化可以得到相同的算法。提高离散化精度会出什么问题?大号2大号2L^2

2
机器学习在计算流体动力学中的应用
背景: 对于一门课程,我仅为2d Navier-Stokes建立了一个可行的数值解决方案。这是盖子驱动型腔流动的解决方案。但是,本课程讨论了用于空间离散化和时间离散化的许多模式。我还参加了更多关于NS的符号操作课程。 处理解析/符号方程从PDE到有限差分的一些数值方法包括: 欧拉FTFS,FTCS,BTCS 松懈 中点跳蛙 Lax-Wendroff 麦克科马克 偏移网格(空间扩散允许信息传播) TVD 在我看来,当时这些似乎是“插入名称找到了一个方案并且它确实起作用了”。其中许多来自“大量硅”时代之前。它们都是近似值。在极限中。从理论上讲,导致了PDE。 虽然直接数值模拟(DNS)很有趣,而且雷诺平均Navier-Stokes(RANS)也很有趣,但它们是计算上易于理解并完全表示现象之间连续体的两个“端点”。内部存在多种方法。 我曾让CFD教授在演讲中说,大多数CFD求解器会绘制漂亮的图片,但是在大多数情况下,这些图片并不代表现实,要获得能够解决问题的求解器解决方案可能会非常艰巨且需要大量工作确实代表了现实。 开发的顺序(据我所知,并不详尽)是: 从控制方程开始-> PDE的 确定您的空间和时间离散化->网格和FD规则 适用于包括初始条件和边界条件的领域 求解(矩阵求逆上有很多变化) 执行总体现实检查,以适合已知解决方案等。 根据分析结果建立一些更简单的物理模型 测试,分析和评估 迭代(跳回到步骤6、3或2) 想法: 我最近一直在使用CART模型,倾斜树,随机森林和渐变增强树。它们遵循更多的数学推导规则,而数学则驱动树的形状。他们努力使离散化的表格变得更好。 尽管这些人为创建的数值方法有些奏效,但仍需要大量的“伏都教”以将其结果与要建模的物理现象联系起来。通常,模拟并不能完全替代实际测试和验证。容易使用错误的参数,或者无法解决实际环境中几何形状或应用程序参数的变化。 问题: 是否有任何方法可以让问题的性质定义 适当的离散化,时空差分方案,初始条件或解决方案? 高清晰度解决方案与机器学习技术相结合,是否可以用于形成步长更大但保持收敛性,准确性等的差分方案? 所有这些方案都是可访问的“人类易处理的派生”-它们具有少量要素。是否有一个包含数千个元素的差异化方案能做得更好?它是如何衍生的? 注意:我将在一个单独的问题中继续进行经验初始化和经验推导(相对于分析而言)。 更新: 利用深度学习来加速格子玻尔兹曼流。使特定情况的速度提高约9倍 O. Hennigh(新闻中)。Lat-Net:使用深度神经网络的压缩格子Boltzmann流动模拟。取自:https : //arxiv.org/pdf/1705.09036.pdf 使用代码回购(我认为):https : //github.com/loliverhennigh/Phy-Net 与GPU和相同的硬件相比,它比GPU快大约2个数量级,比GPU快4个数量级,或快大约O(10,000x)。 Guo,X.,Li,W.&Ioiro,F.用于稳定流逼近的卷积神经网络。取自:https : //autodeskresearch.com/publications/convolutional-neural-networks-steady-flow-approximation 大约20年前研究过该主题的其他人: Muller,S.,Milano,M.和Koumoutsakos P.机器学习算法在流建模和优化中的应用 湍流研究中心年度研究摘要1999摘自:https …

1
线条法可以用来离散所有PDE吗?
我发现线法是考虑PDE离散化的一种非常自然的方法。因此,当我提出一组新的方程式时,我总是默认这种思维方式。我从未见过PDE无法解决的问题。 我想知道的是,是否存在不能通过线法表达的离散化方法(或PDE类型)。我希望时间导数在方程式中隐含且无法求解的任何PDE都会是这种情况(尽管我不知道这方面的实际示例)。我正在寻找关于为什么行方法总是适用的理由或反例。

1
嵌套预处理器准则
考虑您要使用预处理Krylov方法求解线性系统的情况,但是应用预处理器本身涉及求解辅助系统,这是通过另一种预处理Krylov方法完成的。 在一种极端情况下,您可以运行内部求解以在外部求解的每个步骤中收敛。 在另一种极端情况下,您根本无法进行内部求解,而只能用内部前置条件替换它。 在中间的某个位置,您可以在固定的迭代次数后或达到一定的公差之后截断内部的Krylov循环。 根据经验,我遇到了第一个极端更好的情况,以及第二个极端更好的情况(就总成本而言)。但是,我找不到明确的理由说明某些情况为什么偏爱一种策略而不是另一种策略。 是否有关于何时使用这些不同策略的指导或理论?

2
边界条件切比雪夫微分
我想知道在进行切比雪夫区分时是否有人有处理边界的经验。 我目前正在尝试实现无滑移边界条件,以解决3D中不可压缩的Navier Stokes方程,以确保边界处的流量为零,是否真的像设置u(:,:,1)和u一样简单(:,:,N)= 0在计算的每个阶段(类似于v和w),如教科书所示。似乎并没有考虑到边界附近的点如何受到边界处零流量的影响,而且这种方法似乎太简单了。 感谢任何能提供帮助的人。

2
如何为钓鱼竿(或绳索)建模?
我希望通过连接短段来建模钓鱼竿(或绳索)。(这些段的长度可以相等(较短),但每个段应分配自己的质量。)一个段将受段之间的扭矩影响下一个。目前,关节可以看作是板簧(与弯曲角度成正比的扭矩(α或α),每个关节分别为k)。 当我将扭矩施加到第一段(“手柄”)时,扭矩将传播到其余段。 问题是,当我将扭矩T1施加到第一段(在时间dt期间)时,我不了解如何计算第一段(质量为m1)和随后的段会发生的运动。 https://www.dropbox.com/s/ze7g6dzrzzd6757/DSC_0113.JPG 我是一位对生物力学感兴趣的(退休的)医生,因此请仅使用基本的物理术语。(我希望将模型移植到生物力学上。我之前已经为模型编写了计算机程序,因此希望我能弄清楚运动方程式就可以管理该部分。)
9 ode  modeling 

2
评估具有许多独立周期且无闭合形式的振荡积分
我知道的大多数关于振荡积分的方法都处理以下形式的积分 ∫F(x )Ë我ω XdX∫F(X)Ë一世ωXdX \int f(x)e^{i\omega x}\,dx 哪里 ωω\omega 大。 如果我有以下形式的整数 ∫F(x )G1个(x )⋯Gñ(x )dX ,∫F(X)G1个(X)⋯Gñ(X)dX, \int f(x)g_1(x)\cdots g_n(x)\,dx, 哪里 GķGķg_k 是振荡函数,其根仅是大约已知的,但是某种渐近形式 Gķ(x )〜Ë一世ωķXGķ(X)〜Ë一世ωķX g_k(x) \sim e^{i\omega_k x} 已知,随着频率 ωķωķ\omega_k 都不同(和 问问\mathbb{Q}-线性独立),那么如何评估此积分? 与情况不同 Ë我ω XË一世ωXe^{i\omega x},多项式积分 ∫X一个∏Gķ(x )∫X一个∏Gķ(X)\int x^a \prod g_k(x) 未知,所以我无法构造一组多项式插值 F(x )F(X)f(x) 并精确地整合插值 我确切的问题是 GķGķg_k是贝塞尔函数 Ĵ0(ωķX )Ĵ0(ωķX)J_0(\omega_k x)和 …

1
Hessenberg矩阵的指数计算算法
我对使用krylov方法计算ODE标记系统的解决方案感兴趣,如[1]所示。这种方法涉及与指数有关的函数(所谓的 -functions)。它实质上包括通过使用Arnoldi迭代构造一个Krylov子空间并将该函数投影到该子空间上来计算矩阵函数的作用。这减少了计算较小的Hessenberg矩阵的指数的问题。φφ\varphi 我知道有几种算法可以计算指数(请参见[2] [3]及其参考)。我想知道是否有一种特殊的算法可以利用矩阵是Hessenberg的事实来计算指数? [1] Sidje,RB(1998)。Expokit:用于计算矩阵指数的软件包。ACM Transactions on Mathematical Software(TOMS),24(1),130-156。 [2] Moler,C.和Van Loan,C.(1978)。十九种计算矩阵指数的可疑方法。SIAM评论,20(4),801-836。 [3] Moler,C.和Van Loan,C.(2003)。25年后的十九种方法来计算矩阵的指数。SIAM评论,45(1),3-49。

2
帮助在线搜索中确定三次插值和二次插值
我正在执行行搜索,作为准牛顿BFGS算法的一部分。在行搜索的第一步中,我使用三次插值法将其移近局部最小化器。 让 F:R → R ,f∈C1个f:R→R,f∈C1f : R \rightarrow R, f \in C^1是感兴趣的功能。我想找到一个X∗x∗x^* 这样 f′(x∗)≈0f′(x∗)≈0f'(x^*) \approx 0。 让 f(xk)f(xk)f(x_k), f′(xk)f′(xk)f'(x_k), f(xk+1)f(xk+1)f(x_{k+1}) 和 f′(xk+1)f′(xk+1)f'(x_{k+1})被知道。还假设0≤xk&lt;x∗&lt;xk+10≤xk&lt;x∗&lt;xk+10\le x_k<x^*<x_{k+1}。我适合三次多项式Q(x)=ax3+bx2+cx+dQ(x)=ax3+bx2+cx+dQ(x)=ax^3+bx^2+cx+d 以便 Q(0)=f(xk)Q(0)=f(xk)Q(0)=f(x_k), Q′(0)=f′(xk)Q′(0)=f′(xk)Q'(0)=f'(x_k), Q(xk+1−xk)=f(xk+1)Q(xk+1−xk)=f(xk+1)Q(x_{k+1}-x_{k})=f(x_{k+1}) 和 Q′(xk+1−xk)=f′(xk+1)Q′(xk+1−xk)=f′(xk+1)Q'(x_{k+1}-x_{k})=f'(x_{k+1})。 我求解二次方程: (1):Q′(x∗−xk)=0(1):Q′(x∗−xk)=0(1): Q'(x^*-x_k) = 0 为了我的追寻 x∗x∗x^* 使用封闭式解决方案。 上面的方法在大多数情况下效果很好,除了 f(x)=O(x2)f(x)=O(x2)f(x)=\mathcal{O}(x^2) 作为封闭式解决方案 (1)(1)(1) 除以 aaa 变得非常接近或完全 000。 我的解决方案是看 aaa 如果它“太小”,只需对二次多项式的极小值采用封闭形式的解 Q2(x)=bx2+cx+dQ2(x)=bx2+cx+dQ_2(x)=bx^2+cx+d …

2
表示没有浮点数的爱森斯坦数
我有一个项目,需要使用二次字段, 具体是表格的数字a + b− 3---√a+b−3a + b \sqrt{-3} 与 a,b∈Qa,b∈Qa,b \in \mathbb{Q}。 例如,这是爱森斯坦整数中的质数: 我不想用鼠尾草。 我想编写自己的数据类型来合并numpy。PARI很有用-但它与Python不兼容。 这些对象的加法非常清楚 (a1+b1−3−−−√)+(a2+b2−3−−−√)=(a1+a2)+(b1+b2)−3−−−√(a1+b1−3)+(a2+b2−3)=(a1+a2)+(b1+b2)−3(a_1 + b_1 \sqrt{-3}) + (a_2 + b_2 \sqrt{-3}) = (a_1 + a_2) + (b_1+b_2) \sqrt{-3} 乘法稍微复杂一点,但我们也可以对其进行硬编码 (a1+b1−3−−−√)×(a2+b2−3−−−√)=(a1a2−3b1b2)+(a1b2+a2b1)−3−−−√(a1+b1−3)×(a2+b2−3)=(a1a2−3b1b2)+(a1b2+a2b1)−3(a_1 + b_1 \sqrt{-3}) \times (a_2 + b_2 \sqrt{-3}) = (a_1 a_2 - 3 b_1 b_2) + …


2
对于非线性编程,为什么SQP比增强拉格朗日更好?
在有关Galahad的技术报告中[1],作者指出,在一般的非线性规划问题的背景下, 在我们看来,从长远来看,毫无疑问,SQP(顺序二次编程)方法会比增强拉格朗日方法更成功。 这种信念的基础是什么?即,是否有任何理论结果表明SQP方法应该比增强拉格朗日方法更快/更可靠? [1] Galahad,Gould,Orban和Toint编写的用于大规模非线性优化的线程安全Fortran 90软件包库

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.