我怎么能使用自动微分工具指定梯度fsolve吗?

12个视图(30天)
你好读者,
我有一个非线性ODE体系。我打算使用一个迭代解算器计算系统的稳态(SS)解决方案。我知道我可以等待ODE解决稳态值但这将需要更长的时间,因为我需要计算几百的党卫军的反应条件。
目前我用 fsolve 找到ODE函数的根。然而,这需要太长时间使用有限差分法估计雅可比矩阵。我的兆瓦实现如下,
classdefmyClass <处理
属性
someProperty = [];
结束
方法
函数响应= steadyStateResponse(自我,输入)
%的一些预处理
选择= optimoptions (“fsolve”,“算法”,“trust-region-dogleg”,“显示”,“关闭”);
(吹捧,x) = fsolve (@ (x) self.myODE (x,输入),xInit,选项);
结束
结束
方法(访问=私人)
函数[dXdt] = myODE(自我,x, inp)
%一些输出
dXdt = [];%的n x 1;n是方程
结束
结束
结束
我现在面临的问题是,对于每一次迭代 fsolve 必须使用有限差分计算雅可比矩阵。不可能得到一个雅可比矩阵的解析表达式,所以我想用广告来计算雅可比矩阵每一点。我发现 dlgradient 在matlab的实现广告。然而,它的工作原理 dlarray。一些功能我用不支持dlarray。万博1manbetx
我怎么能做这项工作吗?任何帮助都是感激。
非常感谢。

答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!