2

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

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

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

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

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

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

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

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

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

4

2 回答 2

1

您需要一个字符串解析器 -> 函数。有关示例,请参见MathParser,它可能会完成您提到的所有您需要的事情。

于 2010-10-19T23:43:48.653 回答
1

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

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

于 2010-10-19T23:44:07.967 回答