wolfram-mathematica - 线程未正确应用于定义的模块
问题描述
我有一个为函数生成n
第泰勒多项式的模块:
taylor[n_, a_] :=
Module[{terms = {f[0]}},
Do[AppendTo[
terms, (D[f[x], {x, i}] /. x -> a)/Factorial[i]*(x - a)^i], {i, 1,
n}]; Return[Plus @@ terms]]
现在,我想调用这个函数来生成一个多项式列表。这适用于一个单一的论点,并Map
在一个Range
. 但是,在尝试这样Thread
的模块时:
Thread[taylor[Range[7], 0]]
我收到一个错误
迭代器 {i,1,{1,2,3,4,5,6,7}} 没有适当的界限。
即,n
没有像我想象的那样被评估,例如:
{taylor[1,0], taylor[2,0], ...}
我可以更改模块的实现,但我不知道为什么Thread
没有按预期运行。
解决方案
试试这个,看看它是否符合你的要求
taylor[n_, a_] := Module[{terms = {f[0]}},
Do[AppendTo[terms, (D[f[x], {x, i}] /. x -> a)/Factorial[i]*(x - a)^i], {i, 1,n}];
Return[Plus @@ terms]]
Thread[g[{1,2,3},0]]/.g->taylor
返回
{f[0] + x*f'[0],
f[0] + x*f'[0] + x^2*f''[0]/2,
f[0] + x*f'[0] + x^2*f''[0]/2 + x^3*f'''[0]/6}
所做的是所有线程,而不调用 Module 评估参数的方式,一旦完成,然后将其交给 Module 完成。g
在执行此操作之前,请确保您尚未定义。
在您依赖它之前,请仔细检查所有这些。
推荐阅读
- odbc - 在 TransactionScope 内执行 OdbcConnection 但避免自动登记
- c# - 从键盘钩子c#获取进程名称
- javascript - 计算输入的值并将结果设置在另一个字段中
- html - 尽管在相应的输入通道中有 0,我如何防止 feComposite 算术 svgfilters 更改输出通道值
- amazon-web-services - AWS S3 存储桶不一致
- javascript - 是否可以在 wordpress 中编辑所有已发送电子邮件的消息正文
- laravel - 在提供者 laravel 中绑定抽象类服务
- python - Azure Databricks:如何过滤数据框中不包含类似运算符的列?
- node.js - 仅返回 1 个查找文档,但我请求 3 个 ID 来查找节点/快递
- html - ngx-owl-carousel 单个项目的情况,它占据所有宽度