当前位置:  开发笔记 > 编程语言 > 正文

使用离散方法计算导数

如何解决《使用离散方法计算导数》经验,为你挑选了2个好方法。

我正在寻找一种使用离散和快速方法计算导数的方法.从现在起我不知道我所拥有的等式的类型,我正在寻找类似于我们可以找到的积分的离散方法,例如欧拉方法.



1> Andrea Ambu..:

我认为你正在寻找一个点计算的导数.如果是这种情况,这里有一个简单的方法.你需要知道一个点的导数,比如a.它由h-> 0的差商的极限给出:

差商

您实际上需要实现限制功能.那么你:

定义一个epsilon,将其设置得更小,更精确,更大,更快

计算起始h中的差商,假设h = 0.01,将其存储在f1中

现在在DO-WHILE循环中:

1-将h除以2(或10,重要的是使其变小)
2再次计算与h的新值的差商,将其存储在f2
3- set diff = abs(f2-f1)
4 - 指定f1 = f2
5-重复点1,而(diff> epsilon)

你最终可以返回f1(或f2)作为你的f'(a)的值

记住:你假设函数在a中是可微.由于计算机可以处理的有限十进制数字的错误,您将得到的每个结果都是错误的,没有逃脱.

python中的示例:

def derive(f, a, h=0.01, epsilon = 1e-7):
    f1 = (f(a+h)-f(a))/h
    while True: # DO-WHILE
        h /= 2.
        f2 = (f(a+h)-f(a))/h
        diff = abs(f2-f1)
        f1 = f2
        if diff

输出:

derivatives in x=0
x^2:         0.000000
x:       1.000000
(x-1)^2:     -2.000000


Real values:
7.62939453125e-08
1.0
-1.99999992328

第一次我得到"精确"值"因为只使用结果的前6位数字,注意我使用1e-7作为epsilon.之后打印出REAL计算值,它们显然在数学上是错误的.选择小ε是多少取决于您希望结果的精确程度.



2> Barry Wark..:

在计算数值("有限")导数时,有相当多的理论(和惯例).获得所有细节是正确的,这样您相信结果并非易事.如果有任何方法可以获得函数的分析导数(使用笔和纸,或计算机代数系统,如Maple,Mathematica,Sage或SymPy),这是迄今为止最好的选择.

如果您无法获得分析表格,或者您不知道该功能(只是它的输出),那么数值估算是您唯一的选择.C中的数字接收这一章是一个好的开始.

推荐阅读
小色米虫_524
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有