matlab - matlab中的微分一致性

标签 matlab random handle consistency differentiation

我正在尝试在 matlab 中编写一个程序来检查导数定义的一致性:

(f(x+h)-f(x))/h ~= f'(x)

h足够小时。到目前为止我有这个:

function [errList] = diffConsistency(f,df,x,iMax,h0)
h=h0;
for i=1:iMax
    leftSide = (f(x+h) - f(x)) / h;
    rightSide = df(x);
    errList = abs(leftSide - rightSide);
    h = h*10^(-1);
end

然后我使用f=@(x)sin(x)df=@(x)cosx,我不熟悉使用函数句柄,所以这可能完全错了。 iMax 设置为 10h0 = 1x=rand(10)

有人可以检查一下这是否正确。特别是 diffConsistency 函数内部函数句柄的使用以及 rand 的使用。

我应该以不同的方式定义x吗,左侧右侧是正确的吗?等等

任何反馈都会有所帮助。 提前致谢

最佳答案

您使用了一些模糊结果的特定数据。您输入 10x10 随机数,并输出 10x10 错误矩阵,但这仅适用于最后一个 i,因为每次迭代都会覆盖 errList!

将函数更改为:

function [errList] = diffConsistency(f,df,x,iMax,h0)
h=h0;
for i=1:iMax
    leftSide = (f(x+h) - f(x)) / h;
    rightSide = df(x);
    errList(i) = abs(leftSide - rightSide);
    h = h*10^(-1);
end

如果您将其称为:

err=diffConsistency(@sin,@cos,rand,10,1)

plot(err),您可以清楚地看到误差如何随着每个较小的h而减少。

关于matlab - matlab中的微分一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50116275/

相关文章:

java - 创建具有给定分布的无限迭代器

c++ - 从编译器运行和作为独立 exe 运行时,进程访问权限似乎有所不同

java - JNA Win32 获取JInternalFrame的标题

c++ - 如何关闭 SYSTEM_HANDLE(或另一个进程中打开的文件句柄)

python - 将 MATLAB 矩阵对象转换为 Python NumPy 数组

python - Python 中的复杂集成

java - Matlab java接口(interface): java. io.IOException : The issuer can not be found in the trusted CA list?

python - python 中的 for 循环比 matlab 慢 10 倍

python - 许多独立的伪随机图,每个图对于任何输入 x 都具有相同的任意 y

java - 随机将 2D 数组中的 'a' 移动到指定位置,同时跟踪它通过每个点的时间数