使用符号数学工具箱获取准确的衍生品

7视图(30天)
嗨,所有
我编码模型,需要广泛的偏微分法(第一、二阶导数)。我决定尝试使用符号数学工具箱的偏导数。我用以下方法:
1)使用diff()函数来确定衍生品
2)使用潜艇()的值来确定在某一点的导数
3)使用双()符号值转换为数值,可用于后续计算
为了验证舍入错误或内部取消不减少我的衍生品的准确性与步骤1得到3,我检查结果对数字衍生品(公式数值第一和第二偏导数w.r.t. x和y提供 https://en.wikipedia.org/wiki/Finite_difference 在标题“多元有限的差异”。h = k = 0.00001)。
我发现%区别的一些“分析”衍生品获得使用符号数学工具箱(步骤1 - 3)和检查(数字衍生品)有时不满意(高达0.0076%,比如果这种差异至少2数量级较小)。
如何增加数值之间的协议和“分析”衍生品?
我已经尝试使用数字(300)增加使用的精密计算。我也使用vpa(…, 300),以防止在分化截断误差。
它是徒劳的试图让数值和匹配的“分析”衍生品在更大程度上?
提前谢谢。
亚历克斯

接受的答案

Andreas Apostolatos
Andreas Apostolatos 2021年3月30日
你好,
符号表达式的评价代表分析衍生品在MATLAB只能由舍入错误可能发生在评估。vpa的功能可以为您提供更高精度的舍入错误相应的评估。因此,只有舍入错误扮演一个角色在评估MATLAB的符号表达式。
相反,当计算导数数值,例如,使用有限差分法,那么解决方案精度主要取决于离散化参数,在你的情况中“h”和“k”,和这些结果原则上应该减少到一个更好的近似相应的导数。当然,进入舍入错误在这种情况下,和这两个(离散化和舍入误差)是更重要的完全取决于水平的两个错误。
已经说过,我希望,你可以得到一个更好的协议分析和离散表达式之间的超过0.0076%的导数,如果你想减少步骤大小“h”和“k”,如果你衍生品的价值并不高,舍入误差在0.0076%的水平都是很重要的。然而,肯定会有一个时候大小减少一步,舍入误差的计算比离散误差,但我希望这发生在一个错误水平远低于0.0076%,前提是导数的实际价值不是很高。
我希望这有助于理解。
亲切的问候,
安德烈亚斯
11日评论
亚历山大Schulze-Hulbe
亚历山大Schulze-Hulbe 2021年4月8日
你好安德烈亚斯
这是链接。
//www.tianjin-qmedu.com/matlabcentral/answers/796617-symbolic-math-toolbox-obtaining-real-values-from-an-expression-of-the-form-log-1-x?s_tid=srchtitle
亲切的问候亚历克斯

登录置评。

更多的答案(0)

社区寻宝

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

开始狩猎!