0

我目前正在做一个 Mathematica 项目来计算黎曼和并将它们放在一个表中。我无法打印行号(间隔)。(行号也是辅助功能的参数)。我不知道有什么方法可以访问 Mathematica 表中迭代器的索引,所以我试图使用函数参数来计算它们。

这是我要打印的示例,用于 x^2 在 {0, 1} 范围内的积分,具有 10 个细分。

tableRiemannSums[#^2 &, {0, 1}, 10]

在此处输入图像描述

我需要根据当前细分k的值,积分{a,b}的范围以及细分的数量n来计算每次迭代的索引是多少。下面是主要的代码。

tableRiemannSums[fct_, {a_, b_}, n_] := Table[{'insert index here', 
leftRiemannSum[fct, {a, b}, 'insert index here'], 
rightRiemannSum[fct, {a, b}, 'insert index here']}, 
{k, a, b - (N[b - a]/n), N[b - a]/n}]

在上面的等式中,线

{k, a, b - (N[b - a]/n), N[b - a]/n}]

表示表格的范围是 k,因为 k 从 'a' 到 'b - ((b - a)/n)',步长为 '(b - a)/n'。

在我的代码显示“在此处插入索引”的每个地方,我都需要输入相同的等式。现在,我正在使用 'n * k + 1' 来计算索引,它适用于正范围,但是当我有像 {a,b} = {-1, 1} 这样的范围时会中断。

我认为这是一个相当简单的代数问题,但我已经绞尽脑汁好几个小时了,找不到一个通用方程。

(如果这是一个重复的问题,我深表歉意 - 我尝试搜索堆栈溢出档案,但很难将我的问题总结为几个关键词。)

4

2 回答 2

1

我终于想出了如何解决这个问题。我在考虑范围,而不是依靠内部函数来控制它。我将函数重写为:

tableRiemannSums[fct_, {a_, b_}, n_] := Table[{k,
   leftRiemannSum[fct, {a, b}, k], 
   rightRiemannSum[fct, {a, b}, k]},
   {k, 1, n}}]

作为参考,这里是左右总和(任何有兴趣的人!):

leftRiemannSum[fct_, {a_, b_}, n_] :=
 N[b - a]/n* Apply[Plus, Map[fct, Range[a, b - N[b - a] / n, N[b - a]/n]]]
rightRiemannSum[fct_, {a_, b_}, n_] := 
 N[b - a]/n* Apply[Plus, Map[fct, Range[a + (N[b - a]/n), b, N[b - a]/n]]]
于 2013-03-29T21:05:15.707 回答
0

您可能要考虑的是创建一个函数来制作表格的每一行。这个函数的一个参数是行号。

使用 MapIndexed 执行此函数,这将为您提供一种根据需要遍历范围的方法,同时提供递增的行号。

(创建一个包含值范围的列表,然后将 MapIndexed 函数应用于此列表。)

于 2012-12-13T02:56:43.740 回答