在 Maple 中定义泰勒级数

发布于 2024-12-17 07:19:42 字数 549 浏览 2 评论 0原文

我试图在 Maple 中定义一个定义泰勒级数的函数(不使用 taylor() 命令)。我正在使用 此处找到的 sigma 表示法定义。

本质上,我需要一个函数,它需要变量 a 和变量 f,其中 f 是 a 的函数,如该维基百科页面所示。为了简单起见,我只使用了变量 a 并自己定义了该函数。

对于这个问题的范围,假设我希望我的代码返回关于 x=16 的 sqrt(x) 的泰勒级数

到目前为止,我有以下总和代码:

t:=a->sum((D@@n)(f(a))*(x-a)^n/n!,n=0..4);

我已经定义了上一行的函数 f,如 sqrt(x)。

当我调用函数 t(16); 时,Maple 仅返回级数的第一项 4。当我用变量替换 a 时,我可以看到 Maple 正在取 a 的导数,而不是 f(a) 在每一项的导数。这当然会创建零项并且仅返回 4。

I am attempting to define a function in Maple that defines the Taylor Series (without using the taylor() command). I am using the sigma notation definition as found here.

Essentially, I need a function that takes the variable a, and a variable f where f is a function of a, as seen in that wikipedia page. For simplicity's sake, I've used only the variable a and defined the function myself.

For the scope of this question, let's assume I want my code to return the taylor series of sqrt(x) about x=16

So far I have the following code for the sum:

t:=a->sum((D@@n)(f(a))*(x-a)^n/n!,n=0..4);

I've defined the function f on a previous line, as sqrt(x).

When I call the function, t(16);, Maple returns only the first term of the series, 4. When I supplant a variable for a, I can see that Maple is taking the derivative of a, rather than the derivative of f(a) at each term. This of course creates zero terms and returns only 4.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

快乐很简单 2024-12-24 07:19:42

您想要的 D 语法是 (D@@n)(f)(a) 而不是您的语法。

您可以使运算符接受另一个参数来指定索引的上限。除非您希望 Maple 尝试进行符号求和(对于如此有限的总和和您的意图而言,这是值得怀疑的),否则您最好使用 add 而不是 sum 来实现此目的。

restart:
t:=(a,N)->add((D@@n)(f)(a)*(x-a)^n/n!,n=0..N):

f:=sqrt:
Digits:=15:

S:=t(16,4):
eval(S,x=17.0);
                    4.12310552597046
sqrt(17.0);
                    4.12310562561766

S:=t(16,10):
eval(S,x=17.0);
                    4.12310562561768
sqrt(17.0);
                    4.12310562561766

The syntax you want for D here is (D@@n)(f)(a) instead of what you had.

You could make the operator accept another parameter to designate the upper bound of the index. Unless you want Maple to try and do symbolic summation (doubtful, for such finite sums and your intent), you're likely better off using add instead of sum for this.

restart:
t:=(a,N)->add((D@@n)(f)(a)*(x-a)^n/n!,n=0..N):

f:=sqrt:
Digits:=15:

S:=t(16,4):
eval(S,x=17.0);
                    4.12310552597046
sqrt(17.0);
                    4.12310562561766

S:=t(16,10):
eval(S,x=17.0);
                    4.12310562561768
sqrt(17.0);
                    4.12310562561766
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文