计算科学

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

4
,快速显式解决方案,低条件数
我正在寻找一种3x3线性实数问题的快速(敢于说最佳吗​​?)显式解决方案,,。 Ax=b一个X=b\mathbf{A}\mathbf{x} = \mathbf{b}A∈R3×3,b∈R3A∈R3×3,b∈R3\mathbf{A} \in \mathbf{R}^{3 \times 3}, \mathbf{b} \in \mathbf{R}^{3} 矩阵是通用的,但与单位矩阵接近,条件编号接近1。因为实际上是传感器测量值,精度约为5位,所以我不介意由于数值而损失几位问题。AA\mathbf{A}bb\mathbf{b} 当然,不难得出基于多种方法的显式解决方案,但是如果已经证明某些方法在FLOPS计数方面是最佳的,那将是理想的(毕竟,整个问题可能会适合FP寄存器!)。 (是的,该例程经常被调用。我已经摆脱了低落的果实,这是我的分析列表中的下一个……)

2
自适应有限元法使用哪些新颖的数据结构?
许多自适应FEM库使用更高级的网格数据结构来处理添加/删除节点,边,三角形,四面体等。例如,p4est库使用八叉树数据结构进行自适应网格细化。您很少会在静态网格物体上找到用于计算的八叉树。 自适应有限元法在线性代数方面有什么变化? 我能想到的最直截了当的方法是,每当细化或粗化网格时,就完全重建所有系统矩阵。如果网格自适应操作很少发生,那么最终将在其余计算中分摊这样做的费用。通过这种方法,可以轻松利用现有的稀疏线性代数软件(PETSc,Trilinos等)。 这个钝器方法是最常用的方法,还是在精炼过程中可以重用或修改旧矩阵的库?毕竟,在网格自适应过程中,大多数网格和相应的矩阵都是不变的。



1
三次特征值问题的Jacobi-Davidson方法的实现
我有一个很大的立方特征值问题: (一个0+ λ一个1个+λ2一个2+λ3一个3)x =0。(A0+λA1+λ2A2+λ3A3)x=0.\left(\mathbf{A}_0 + \lambda\mathbf{A}_1 + \lambda^2\mathbf{A}_2 + \lambda^3\mathbf{A}_3\right)\mathbf{x} = 0. 我可以通过转换为线性特征值问题来解决此问题,但这将导致系统大:32323^2 ⎡⎣⎢−A0000I000I⎤⎦⎥⎡⎣⎢xyz⎤⎦⎥=λ⎡⎣⎢A1I0A20IA300⎤⎦⎥⎡⎣⎢xyz⎤⎦⎥,[−A0000I000I][xyz]=λ[A1A2A3I000I0][xyz],\begin{bmatrix} -\mathbf{A}_0 & 0 & 0 \\ 0 & \mathbf{I} & 0 \\ 0 & 0 & \mathbf{I} \end{bmatrix} \begin{bmatrix} \mathbf{x} \\ \mathbf{y} \\ \mathbf{z} \end{bmatrix} = \lambda \begin{bmatrix} \mathbf{A}_1 & \mathbf{A}_2 & \mathbf{A}_3 \\ \mathbf{I} & …

10
是否可以优化此集成代码,使其运行更快?
double trap(double func(double), double b, double a, double N) { double j; double s; double h = (b-a)/(N-1.0); //Width of trapezia double func1 = func(a); double func2; for (s=0,j=a;j<b;j+=h){ func2 = func(j+h); s = s + 0.5*(func1+func2)*h; func1 = func2; } return s; } 上面是我的C ++代码,用于func()极限之间的一维数字积分(使用扩展的梯形规则)[ a ,b ][a,b][a,b] 使用 …

3
SOR比Gauss-Seidel快的问题?
是否有简单的经验法则可以说明是否值得进行SOR而不是Gauss-Seidel?(以及可能的方法如何估计贴切参数)ωω\omega 我的意思是仅查看矩阵,还是矩阵代表的特定问题的知识? 我正在阅读有关以下问题的答案: 是否有用于优化连续超松弛(SOR)方法的试探法? 但这有点太复杂了。我没有看到简单的启发式方法,仅在矩阵上(或它代表的问题)如何估算光谱半径。 我想要简单得多的东西- 仅有几个 SOR收敛更快的矩阵(问题)示例。 我正在针对该国王的矩阵进行SOR实验: 其中是单位矩阵,和 s是来自unifrom分布的随机数,使得。我以为最优与参数。A=I+C+RA=I+C+RA = I + C + R IIICij=cCij=cC_{ij}=c ∀i,j∀i,j \forall i,j[R我ĴRijR_{ij}|[R我Ĵ| &lt;ř|Rij|&lt;r|R_{ij}|<rωω\omegaÇ ,[Rc,rc,r 编辑:我用很小的来确保tha在对角线中很强。(对于尺寸5-10的矩阵,)。我还应该说这些是真实且对称的。c,rc,rc,rAAA|c|&lt;0.1|c|&lt;0.1|c|<0.1r&lt;2|c|r&lt;2|c|r<2|c|AAA 但是,我发现Gauss-Seidel()几乎总是最好的(?)ω=1ω=1\omega=1。这是否意味着之间必须存在更多的关联才能利用SOR?还是我做错了什么? AijAijA_{ij} 我知道,SOR并不是最有效的求解器(与CG,GMRES ...相比),但是它易于实现和并行化以及针对特定问题进行修改。对原型来说肯定不错。

2
算法的计算量
考虑严格凸无约束优化问题令x_ \ text {opt}表示其唯一最小值,并且x_0是x_ \ text {opt}的给定初始近似值。如果 \ begin {equation} \ frac {|| x-x _ {\ text {opt}} || _2} {|| x_0-x_ \,我们将向量x称为\ mathcal {O}的\ epsilon- close解。文字{opt} || _2} \ leq \ epsilon。\ end {equation}O:=minx∈Rnf(x).O:=minx∈Rnf(x).\mathcal{O} := \min_{x \in \mathbb{R}^n} f(x).xoptxoptx_\text{opt}x0x0x_0xopt.xopt.x_\text{opt}.xxxϵ−ϵ−\epsilon-OO\mathcal{O}||x−xopt||2||x0−xopt||2≤ϵ.||x−xopt||2||x0−xopt||2≤ϵ.\begin{equation} \frac{||x - x_{\text{opt}}||_2}{||x_0 - x_\text{opt}||_2} \leq \epsilon. \end{equation} 假设存在两个迭代算法A1A1\mathcal{A}_1和A2A2\mathcal{A}_2以找到具有以下属性的\ mathcal …

2
管理模拟运行的建议?
在comp-sci中,这个问题可能有点偏离主题。如果需要,请提出适合的地方。 问题是关于如何有效管理所有模拟运行。 比方说,例如,模拟需要固定2个参数,这些参数必须在某个建议值范围内定义。 为了找到由两个参数中的一个对产生的更好结果(例如,通过将模拟结果与实验数据进行比较),可以通过为每个参数定义三个值然后进行9次运行来进行灵敏度分析。 以前,我使用sed更改每次运行的输入,并通过在存储此运行的输入和结果的文件夹中写入值和参数名称来标记每次运行。但是我发现,一旦参数数量增加(例如,访问脚本中的文件夹名称以进行绘图),效率将非常低下。 然后我决定使用简单数字作为文件夹名称,并通过其他一些电子表格存储详细信息。到目前为止,这种方式还可以,但是需要一些费力的工作。而且随着运行次数的增加,经常会犯错误,例如进行几天前已经完成的另一次运行。 您对管理这些运行有什么好主意吗?我认为这对于进行蒙特卡洛分析的人来说非常重要? 提前致谢!

2
在非均匀网格(仅一维)有限体积法上求解泊松方程时的奇异误差
最近几天,我一直在尝试调试此错误,我想知道是否有人建议如何进行操作。 我正在求解泊松方程,用于非均匀有限体积网格上的阶跃电荷分布(静电/半导体物理学中的常见问题),其中未知数定义在单元中心,并且通量在单元面上。 0 = (ϕX)X+ ρ (x )0=(ϕx)x+ρ(x) 0 = (\phi_x)_x + \rho(x) 收费资料(来源条款)由 ρ (x )=⎧⎩⎨− 1 ,1 ,0 ,如果 - 1 ≤ X ≤ 0如果 0 ≤ X ≤ 1除此以外ρ(x)={−1,if −1≤x≤01,if 0≤x≤10,otherwise \rho(x)= \begin{cases} -1,& \text{if } -1 \leq x \leq 0\\ 1,& \text{if } 0 \leq x …

3
没有对象定向,我的项目能否生存?
我正在编写一个小的MATLAB程序包,它将解决某些类的数值问题。该算法分为3个阶段,用户每个阶段有5个选择。我已经使用函数和3个开关案例(每个算法阶段一个)实现了整个问题。它工作正常,但我正在考虑使其做更多的事情(超过5个选择和一个阶段),并且还使它成为Python端口(有些人对此很感兴趣)。≈ 20≈20\approx 20 我想知道是否应该转换为OOP框架(我一点也不擅长),还是应该坚持我拥有的程序框架(我擅长)。我已在程序代码中确保没有函数做两件事,并且重叠最少(两个代码段几乎永远不会做同一件事)。 如果您觉得它更适合他们的领域,请将其迁移到SO。
9 matlab 

1
是否有一些关于“计算科学”的好邮件列表?
我想知道是否有一些非常好的计算科学的邮件列表或Google群组,我们可以在其中讨论问题,而不是仅仅问和回答问题。 实际上,我对PDE的并行计算和数值解更感兴趣。但是我不知道该地区的人们在做什么和如何做。我只能阅读他们的论文,以掌握这一领域的路线图。 请给我一些指导信息。谢谢。

4
学习Fortran
我想知道学习Fortran编程的最佳方法是什么? 我一直在寻找书籍,对我来说似乎不错的例子是“ Fortran 95/2003 Explained”和“ Fortran for Scientists and Engineers”。 我不知道你们如何看待这些? 我想知道的另一件事是我应该使用哪个编译器?我在Windows 7计算机(64位)上工作。 我希望你们能在这一方面帮助我! 因此,根据我的编程经验: Matlab和Maple是我对编程世界的第一次介绍。Matlab是一个我实际上非常擅长的程序,我掌握了使用循环以及如何将其组合以创建更高效​​的程序的习惯。Maple处于基础阶段(我知道如何搜索简单积分的解等)。 一年后,我们在Visual Basic中对C ++进行了介绍。实际上,这位教授很快就开始讨论这个问题,两个月后,我们已经在讨论指针和继承。我能够用这种语言编写简单的程序,只有使用类仍然困难,但是我相信这只是实践问题。 一年后,我需要学习Mathematica 8,如今我也真的很不错。 所以我有一点编程经验,但是我不会说这是一个不可思议的数量! 我要学习Fortran的原因主要是因为您无法独自完成理论物理学,您需要测试您的理论,并且因此您需要能够编写可能能够对这些理论进行数字测试的程序。我听说Fortran是一种用于数值数学的语言,所以我认为了解这种语言会很方便。 ps:Fortran95和Fortran 2003有什么区别?
9 fortran 

1
与不对称矩阵相比,求解对称矩阵有任何数值优势吗?
我正在将有限差分方法应用于3个耦合方程组。两个方程式不耦合,但是第三个方程式与另外两个方程式耦合。我注意到,通过将方程式的顺序从更改为,系数矩阵变得对称。(x,y,z)(x,y,z)(x, y, z)(x,z,y)(x,z,y)(x, z, y) 这样做有什么好处吗?例如,就解决方案的稳定性或效率/速度而言。矩阵非常稀疏,如果这很重要,则非零项沿中心对角线。


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.