TI-84 Basic可以处理n阶导数吗?

时间:2013-07-22 22:22:28

标签: math ti-basic taylor-series

我正在尝试制作一个程序,用于评估泰勒系列(如果您不知道,将在下面描述)到第n个顺序。但是,要做到这一点,我需要评估一个函数(我在Y1中持有)及其n阶导数。 我尝试使用nDeriv并将其保存为Y2Y3等字符串,但TI-84不允许我一次堆叠其中的2个。有没有人有办法绕过这个?

泰勒系列

        O  f^(n)(a)
f(x) ≈  Σ (-------- (x-C)^n)
       n=0    n!

其中O是系列的给定顺序(更高的值会给出更精确的结果),f^(n)(a)表示“f的函数a的n阶导数}“和C是给定的常量来估算

1 个答案:

答案 0 :(得分:4)

免责声明:我不再拥有TI计算器了,这主要基于我大约7年前遇到类似问题时所做的实验。答案中的数学应该是正确的,但我可能会误解计算器特有的一些小问题。

首先,我想我应该纠正你的数学。在x = a时函数f(x)的Taylor 系列的定义只是

        ∞  f^(n)(a)
f(x) ≈  Σ (-------- (x-a)^n)
       n=0    n!

任何地方都没有C(你可能一直在考虑Taylor polynomial reminder theorem,这是另一回事),并且总和超过所有非负整数n。当然,在TI-84上计算这样的无限级数是没有希望的,但我们可以截断该系列,给出N阶Taylor 多项式

        O  f^(n)(a)
f(x) ≈  Σ (-------- (x-a)^n)
       n=0    n!

这是你可以实际希望以数字方式计算的东西,因为总和是有限的。当然,你需要做的就是计算n = 0,1,...,O的第n个导数,所以从现在起我将专注于此。我认为无论如何这都是你想要的,但术语“泰勒系列”总是表示无限系列,而泰勒多项式则用于总和是有限的。

nDeriv不能任意嵌套。根据{{​​3}},它可以嵌套一层深,但我记得在我早期的模型中,即使在某些情况下也不允许这样做。但是,nDeriv无论如何只计算数值导数,使用的公式是nDeriv(f(t),t,x [,h]))=(f(x + h)-f(xh))/(2h),其中h = 0.001是默认值。您可以通过递归方式应用此符号来获取更高阶导数的表达式:

f^(2)(x)=(f(x+2h)-2f(x)+f(x-2h))/(2h)^2
f^(3)(x)=(f(x+3h)-3f(x+h)+3f(x-h)-f(x-3h))/(2h)^3

一般来说:

            n   n    (-1)^m f(x+(n-2m)h)
f^(n)(x) =  Σ (   ) ---------------------
           m=0  m          (2h)^n

总和中奇怪格式化的东西是二项式系数(TI-84上的n nCr m)。这可以用TI基本计算得出,相当于计算器允许你任意嵌套nDeriv时得到的最终结果(至少直到机器精度效果开始变得重要)。

你可能想要玩一些,直到找到一个好的值(对于不同的阶数导数,你可能想要使用不同的h值)。遗憾的是,数值微分自然很难做到,特别是对于计算器这样的低精度设备,因为你要减去两个非常接近的数字来得到一个非常小的数字,并除以另一个非常小的数字。对于更高阶的导数,事情只会变得更糟。我记得,对于一些简单的函数,我可以得到4或5个导数,然后才能得到任何有意义的东西,因为计算器没有足够的精度。

顺便提一下,如果你发现上述方法不够精确,那么有大量关于数值微分的文献,其方法比上面提出的更好。一个好的起点是this documentation site,其中上述公式是一个(不是特别好)的例子。无论如何,你都会遇到机器精度问题,但使用更复杂的方法至少会提高精度,直到机器精度影响开始变得很重要。