如何利用Matlab的符号数学求复方程的梯度

如何利用Matlab的符号数学求复方程的梯度,matlab,optimization,gradient,symbolic-math,differential-equations,Matlab,Optimization,Gradient,Symbolic Math,Differential Equations,我正在解决一个拥抱优化问题,这需要很多时间才能收敛到一个解决方案。这是因为Matlab使用有限差分法计算目标函数的梯度和非线性约束,并构造Hessian矩阵。但fmincon解算器中有一个选项,允许您提供函数和约束的解析导数 出于这个原因,我想知道如何计算,即函数的梯度,这是在这里给出的数学方面和符号数学工具。我应该注意的是,我仍然想要向量格式的目标梯度。不是通过提取方程5中的Eq1。 假设我们有这些优化变量 现在我们根据优化向量定义这两个变量,即Pd 这是我想从中得到梯度的方程: Eq1=Si

我正在解决一个拥抱优化问题,这需要很多时间才能收敛到一个解决方案。这是因为Matlab使用有限差分法计算目标函数的梯度和非线性约束,并构造Hessian矩阵。但fmincon解算器中有一个选项,允许您提供函数和约束的解析导数

出于这个原因,我想知道如何计算,即函数的梯度,这是在这里给出的数学方面和符号数学工具。我应该注意的是,我仍然想要向量格式的目标梯度。不是通过提取方程5中的Eq1。 假设我们有这些优化变量

现在我们根据优化向量定义这两个变量,即Pd

这是我想从中得到梯度的方程:

Eq1=Sin(Pdn)+Pdn+Pgn.^2

看看这个问题:我觉得很复杂。我需要一些提示@knedlsepit似乎这个问题与你的链接有很大不同。他主要是问优化向量操作,这很有趣@knedlseppWhat是您希望向fmincon提供分析梯度的原因?或者,更确切地说,您获得的当前解决方案有什么不足之处?因为我的优化问题包含405个决策变量和300个约束,如果我将非线性约束向量化,则为8。我检查了Matlab配置文件,发现70%的优化时间是由Matlab的有限差分函数消耗的。当我搜索并询问专家时,他们都同意提供grad和hessian将大大减少计算时间@霍奇勒
Pdn=[pd(1);mo;Pd(2);0;Pd(4)]
Pgn=[pd(2);Pd(1);m1;Pd(4),Pd(1)]
Eq1=Sin(Pdn)+Pdn+Pgn.^2