- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
这应该很简单。我有一个函数 f(x)
,我想在 MATLAB 中为给定的 x
计算 f'(x)
。
我所有的搜索都得出了符号数学,这不是我需要的,我需要数值微分。
例如如果我定义:fx = inline('x.^2')
我想找到 say f'(3)
,即 6
,我不想找到 2x
最佳答案
如果已知您的函数是二次可微的,请使用
f'(x) = (f(x + h) - f(x - h)) / 2h
这是 h 中的二阶精度。如果只有一次可微,使用
f'(x) = (f(x + h) - f(x)) / h (*)
这是 h 中的一阶。
这是理论。实际上,事情非常棘手。我将采用第二个公式(一阶),因为分析更简单。做第二个订单作为练习。
首先要注意的是,您必须确保 (x + h) - x = h,否则会出现巨大错误。事实上,f(x + h) 和 f(x) 彼此接近(比如 2.0456 和 2.0467),当你减去它们时,你会失去很多有效数字(这里是 0.0011,少了 3 个有效数字比 x)。因此,h 上的任何错误都可能对结果产生巨大影响。
因此,第一步,确定一个候选 h(稍后我将向您展示如何选择它),然后将 h' = (x + h) - x 作为 h 用于计算。如果您使用的是 C 之类的语言,则必须注意将 h 或 x 定义为可变的,以免该计算被优化掉。
接下来是h的选择。 (*) 中的误差有两部分:截断误差和舍入误差。截断错误是因为公式不准确:
(f(x + h) - f(x)) / h = f'(x) + e1(h)
其中 e1(h) = h/2 * sup_{x in [0,h]} |f''(x)|
。
舍入误差来自 f(x + h) 和 f(x) 彼此接近的事实。可以粗略估计为
e2(h) ~ epsilon_f |f(x) / h|
其中 epsilon_f
是计算 f(x)(或接近的 f(x + h))的相对精度。这必须根据您的问题进行评估。对于简单的函数,epsilon_f
可以作为机器 epsilon。对于更复杂的,它可能比它差几个数量级。
所以你需要 h
来最小化 e1(h) + e2(h)
。将所有内容整合在一起并优化 h
产量
h ~ sqrt(2 * epsilon_f * f / f'')
必须根据您的函数进行估算。你可以粗略估计一下。如有疑问,请取 h ~ sqrt(epsilon),其中 epsilon = 机器精度。对于 h 的最佳选择,已知导数的相对精度为 sqrt(epsilon_f),即。一半的有效数字是正确的。
简而言之:a h 太小 => 舍入误差,a h 太大 => 截断误差。
对于二阶公式,同样的计算结果
h ~ (6 * epsilon_f / f''')^(1/3)
导数的分数精度为 (epsilon_f)^(2/3)(假设 double ,通常比一阶公式好一个或两个有效数字)。
如果这太不精确,请随时询问更多方法,有很多技巧可以获得更好的准确性。理查森外推法是平滑函数的良好开端。但是这些方法通常会计算 f 很多次,如果您的函数很复杂,这可能是您想要的,也可能不是您想要的。
如果您打算在不同点多次使用数值导数,那么构建切比雪夫近似值会变得很有趣。
关于math - 如何评估matlab中函数的导数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4658656/
在 Matlab 中,您可以选择创建新的“示例”脚本文件以及脚本、函数、类等。创建它们时,它们会获得一个脚本图标。 它们与其他标准脚本文件的处理方式有何不同? 是否有关于这些示例脚本类型的预期用途的文
我正在运行一个不是我自己编写的大 m 文件,它依赖于某些子函数。我想知道是否在所有嵌套函数的任何地方都使用了特定函数(在我的例子中是函数 eig.m(计算特征值))。有没有快速的方法来做到这一点? 亲
Matlab中有一个函数叫 copulafit .我怎样才能看到这个函数背后的代码?许多 Python 的 numpy 和 scipy 函数在 Github 上很容易开源,但由于某种原因我在 Gith
我定义了一个抽象基类measurementHandler < handle它定义了所有继承类的接口(interface)。这个类的两个子类是a < measurementHandler和 b < me
假设有一个矩阵 A = 1 3 2 4 4 2 5 8 6 1 4 9 例如,我有一个 Vector 包含该矩阵每一列的“类”
我有一个在后台运行的 Matlab 脚本。随着计算的进行,它会不断弹出进度栏窗口。这很烦人。 问题是我没有自己写 Matlab 脚本,这是一段很长很复杂的代码,我不想搞砸。那么如何在不修改 Matla
有没有办法从一个 matlab 程序中检测计算机上正在运行多少个 matlab 进程? 我想要恰好有 n 个 matlab 进程在运行。如果我的数量太少,我想创建它们,如果数量太多,我想杀死一些。您当
我正在测试我们在 Matlab 中开发的一个独立应用程序,当时我注意到它的内存使用量(根据 Windows 任务管理器)达到了 16gb 以上的数倍峰值。我决定在编译版本后面的脚本上使用 profil
我面临着一个相当棘手的问题。在 Matlab 中,命令 S = char(1044) 将俄语字母 д 放入变量 S。但是 disp(S) 返回空白符号,尽管内容实际上是正确的: >> S = char
我在这行 MATLAB 代码中遇到内存不足错误: result = (A(1:xmax,1:ymax,1:zmax) .* B(2:xmax+1,2:ymax+1,2:zmax+1) +
我正在寻找一种在 MATLAB 中比较有限顺序数据与非确定性顺序的方法。基本上,我想要的是一个数组,但不对包含的元素强加顺序。如果我有对象 a = [x y z]; 和 b = [x z y]; 我希
我有一个由 1 和 0 组成的二维矩阵。 mat = [0 0 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 0 0 1 0 1 1 0 0 1]; 我需
我可以在 Matlab 中用一组 x,y 点绘制回归线。但是,如果我有一组点(如下图),假设我有四组点,我想为它们绘制四条回归线……我该怎么做?所有的点都保存在 x,y 中。没有办法将它们分开并将它们
我正在尝试使用以下代码在 MATLAB 中绘制圆锥体。但是,当 MATLAB 生成绘图时,曲面中有一个间隙,如下图所示。谁能建议关闭它的方法? clearvars; close all; clc; [
我有一个 map称为 res_Map,包含一组不同大小的数组。我想找到用于存储 res_Map 的总内存。 正如您在下面看到的,看起来 res_Map 几乎不占用内存,而 res_Map 中的各个元素
有没有办法在 MATLAB 中组合 2 个向量,这样: mat = zeros(length(C),length(S)); for j=1:length(C) mat(j,:)=C(j)*S;
已结束。此问题不符合 Stack Overflow guidelines 。它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答它。 关闭 5 年前
我正在尝试将MatLab中的t copula适配到我的数据,并且我的功能是: u = ksdensity(range_1, range_1,'function','cdf'); v = ksdens
大家好,我目前正在尝试使用论文“多尺度形态学图像简化”中的 SMMT 运算符 Dorini .由于没有订阅无法访问该页面,因此我将相关详细信息发布在这里: 请注意,我将相关文章的部分内容作为图片发布。
我在MATLAB中编写代码,需要使用一个名为modwt的函数,该函数同时存在于两个我同时使用的工具箱(Wavelet和WMTSA)中。问题在于,一个版本仅返回一个输出,而另一个版本则返回三个输出。我应
我是一名优秀的程序员,十分优秀!