【发布时间】:2011-06-20 14:46:26
【问题描述】:
我正在尝试在二维矩阵 (x, y) 上的 matlab 中实现 Runge-Kutta 的四阶积分方法。该矩阵在每个点都包含一个高度值(浮点数)。这个想法是在矩阵中放置一个粒子并观察它的路径,因为它被方向向量 u 和 v “推动”。
我已经简单地使用 matlab 中内置的“梯度”函数实现了欧拉的积分方法。但是,对于 RK4 积分,我需要在可变点取 4 个斜率,而不是梯度给出的预定斜率。
我认为 Matlab 梯度函数本身没有这些参数(根据我对 Matlab 文档的理解)。我应该采取什么样的方法?
如果我要编写自己的梯度函数来计算任意点的斜率,我不太确定如何编写它,因为它不是一个直接的函数。对这种方法有什么建议吗?
谢谢。
【问题讨论】:
-
你能告诉我们它的样子吗?如果它是多个变量的函数,您总能找到雅可比行列式。如果是常数矩阵,梯度明显为0。
-
好吧,我猜这就是我感到困惑的地方。它是一个常数矩阵,所以我想知道如何计算一个“导数”。根据mathworks.com/help/techdoc/ref/gradient.htmldx和dy是指向矩阵值递增方向的向量集合。
-
Aaron,矩阵被解释为平面上的函数 f(x,y)。梯度的分量是 (df/dx) 和 (df/dy)。导数是空间,而不是时间。
标签: matlab gradient runge-kutta