在 C# 中生成并使用泰勒多项式

Posted

技术标签:

【中文标题】在 C# 中生成并使用泰勒多项式【英文标题】:Generating and then using a taylor polynomial in C# 【发布时间】:2011-04-27 18:46:27 【问题描述】:

我用 C# 编写了一个简单的图形实现,我可以通过将每个像素与其所代表的图形上的位置进行比较并将该位置插入到函数中来绘制事物,我必须查看它是否在曲线上。这一切都很好。

我遇到的问题是使用生成的泰勒多项式。例如,我可以通过以下方式创建以 c 为中心的超越函数 f 的第 n 个泰勒多项式

从 0 到 n 的总和,计数器变量为 k = ((f(c) 的第 k 个导数) * (x-c)^k)/k!

我不知道如何在 *** 上做数学标记,我也不太擅长在网络上做这件事,但我希望这是可以理解的。左边可以写成 sigma _k=0 ^n 或类似的东西,_ 代表 sigma 下的部分,^ 代表上面的部分...

所以我最终为 cos(x) 生成了一个 6 次的泰勒多项式,中心为 0(我知道 maclaurin),看起来像

“1 - x^2/2!+ x^4/4!- x^6/6!”

这可以通过 C# 中的简单字符串操作来完成。我可以遍历并将下一项添加到字符串中。

我真的无法理解我实际上如何能够将字符串用作函数来与图形位置进行比较,以查看该图形位置是否实际上在该图形上,从而绘制它。所以本质上是:如何在 C# 中使用字符串作为实际的数学函数,或者有更好的方法。

真的很抱歉,如果它令人困惑......真的尽我所能以人们可以提供帮助的方式解释它。

【问题讨论】:

【参考方案1】:

你需要一个字符串解析器 -> 函数。例如,请参阅 MathParser,这可能满足您提到的所有需求。

【讨论】:

是的!那太棒了。我确信我可以使用那个类。【参考方案2】:

从一般的角度来看,只要您想将字符串转换为可以工作的东西,您就必须实现一个解析器,该解析器将解释字符串并执行它所指示的操作。对于数学公式,表达式树可用于维护操作和分组的顺序。可能有一些可用的数学表达式库可以做到这一点,或者你可以自己动手。这不是一项微不足道的任务,但它肯定是可能的。

一旦有了表达式树,要确定给定 x 的值 f(x) 是否可绘制,只需对其求值即可。对于 f(x) 图,您可以先测试 x 以查看它是否落在绘图区域的可见域中。如果是,则计算 f(x),如果点 (x,f(x)) 是可绘制的,则绘制该点。

【讨论】:

谢谢,我没听说过表达式树。我使用该程序按原样绘制点。因为这是一个快速原型的事情,只是因为我认为快速绘制连续的泰勒多项式很酷,我宁愿不尝试超越创建自己的表达式解析器的任务。不过,这将对我未来的一些项目有所帮助,谢谢!

以上是关于在 C# 中生成并使用泰勒多项式的主要内容,如果未能解决你的问题,请参考以下文章

绘制正弦函数的泰勒多项式

浅谈泰勒展开

泰勒展开式

泰勒公式

在泰勒多项式中展开时如何告诉 maple 两个运算符不通勤

泰勒展式的简单理解