使用有限差分法/Cholesky 分解求矩阵在不同网格点的导数

计算科学 matlab 有限差分 矩阵方程 分化
2021-12-12 05:38:40

我想在 MATLAB 中编写这个问题。如果有人可以向我建议如何处理它,那将是一个巨大的帮助。我需要解决下面突出显示的方程,我需要dT/drho. 为此,我需要解决dRp/drho. 我确实有依赖,rho但我没有明确地依赖它。我有网格点,我知道的值T, P, dP/drho, Rp, Rp^T, Rq and Rq^T(这些都是那些网格点处的矩阵)。我也知道解析P我怎样才能找到dRp/drho我确实想到了有限差分方法。但是,我无法计算dT/drho在网格的端点处,我必须将起点或终点留在网格上(通过考虑后向差异或前向差异方法)在这种情况下我是否必须扩展我的网格?或者是否可以使用“Cholesky 分解”或其他东西在 MATLAB 中对此进行编码?因为下面的文字提到了“独特的下三角解”,这让我想到了 MATLAB 中的“chol”命令。所以,据我所知,有两种方法可以解决这个问题。1. 使用以下方程的解析解。2. 有限差分法找到dT/drho避开所有这些方程。

我想从您那里了解是否可以对这些解析方程进行编码。如果没有,我怎样才能有效地使用有限差分方法?如果您对问题不清楚,请随时提出问题。

在此处输入图像描述在此处输入图像描述

谢谢!

1个回答

这是我找到的答案:解析方程可以作为凸优化问题来求解。即通过将所有项保持在一侧并引入不等式约束。例如,在这个问题中,

dP/drho = (dRp/drho)*Rp' + Rp*(dRp/drho)'

可以写成

((dRp/drho)*Rp' + Rp*(dRp/drho)' -dP/drho) >=0

然后解决优化问题以最小化左侧,使其接近于零。在 MATLAB 中,这可以通过使用 YALMIP 等建模工具箱和 SDPT3 和 Sedumi 等求解器来完成。