1

好的,所以这是一个直接的数学问题,我阅读了元数据,这些问题需要写成听起来像编程问题。我将尽我所能...

因此,我在 flot 中制作了图表,显示了用户的网络使用情况(以字节/秒为单位)。当有活动时,数据相隔 4 分钟,否则设置在使用范围的开始(比如说第 1 天)和范围的结束(第 7 天)。数据来自我无法控制的 CGI 脚本,因此我可以为用户提供的内容相当有限。

我从来没有学过三角学或微积分,所以我几乎是一头雾水。我想要的是让用户可以选择单击图表上的任何点并查看他们当时的带宽使用情况。由于实际数据点之间的线是直线绘制的,因此可以通过获取用户单击之前和之后的点并找到 y 间隔来完成。

我花了好几个星期才终于找到一位乐于助人的数学家向我解释这一点。其他人都坚持要教我黎曼和技术以及各种其他沉重的东西,这些东西不仅让我感到困惑,而且似乎对解决问题没有必要。

但我也希望用户能够从 y 轴(时间)上的两个任意点突出显示该图,以获取该范围内的网络使用总量。我知道这将是不准确的,但我需要它使用一个实体方程是正确的不准确的。

我认为这是线下的区域,但是用更简单的图表进行的实验使这看起来太高了。我发现我可以将 y2 - y1 的距离乘以 x2 - x1 然后除以 2 得到曲线下方的图形区域,就像一个三角形,但同样,数字似乎很高。(也许它们只是大数字,而我根本没有得到这些数学知识)。

所以我需要的是,如果有人真的很棒,可以在这个问题因为过于纯数学而被关闭之前提供它,要么是我应该研究的概念的名称,要么是方程本身。或者我确实需要高级数学才能获得准确结果的坏消息。

我的数学并不差,最后一点,我只是不熟悉 10 年级以后的数学,所以我需要一些地方开始。所有的数学网站似乎都太简单了,或者超过了我的工资等级。

4

5 回答 5

2

我想要的是让用户可以选择单击图表上的任何点并查看他们当时的带宽使用情况。由于实际数据点之间的线是直线绘制的,因此可以通过获取用户单击之前和之后的点并找到 y 间隔来完成。

是的,这是找到瞬时值的好方法。当您报告该值时,它与 y 轴的单位相同,这意味着字节/秒,对吗?

我不知道点之间的速率变化有多快,但如果你只是选择最近的点并报告它的值,那就更简单了。您可以在不牺牲太多准确性的情况下简化问题。

我认为这是线下的区域,但是用更简单的图表进行的实验使这看起来太高了。我发现我可以将 y2 - y1 的距离乘以 x2 - x1 然后除以 2 得到曲线下方的图形区域,就像一个三角形,但同样,数字似乎很高。(也许它们只是大数字,而我根本没有得到这些数学知识)。

要计算给定时间间隔内的总字节数,您应该找到最接近起点和终点的索引,并将 y 的值乘以 x 点的间距并将它们加在一起。这将为您提供该时间间隔内消耗的总字节数,但您可能已经忘记了另外一个问题。

您说这些点“相隔 4 分钟”,而您的 y 轴以字节/秒为单位。请记住,单位很重要。您的面积是字节/秒乘以分钟间距的总和。要使单位正确,您必须乘以 60 秒/分钟才能获得所需字节的最终值。

如果那个“太高”的值仍然关闭,请再次考虑单位。它是每千字节 1024 字节,每 MB 1024*1024 字节。检查您正在检查计算的值的单位。

更新:

难怪你有问题。你原来的问题清楚地说明了字节/秒。甚至这个问题也不精确且令人困惑。您是如何在给定时间戳得出“数据量”的?这些是自上次时间戳以来传输的总位数吗?如果是,只需在所需间隔的开始和结束之间添加值,然后转换为方便的单位。

于 2009-09-03T22:38:37.497 回答
2

如果我正确理解了您的要求(这有点令人怀疑),您应该在以下链接中找到您要寻找的内容:
线性插值 (计算中间点的值)
梯形规则 (计算“曲线”下方的面积)


*****编辑,这样我们就可以解决这个问题了:)不用多说:*****

因此,我在 flot 中制作了图表,显示了用户的网络使用情况(以字节/秒为单位)。当有活动时,数据相隔 4 分钟,否则设置在使用范围的开始(比如说第 1 天)和范围的结束(第 7 天)。数据来自我无法控制的 CGI 脚本,因此我可以为用户提供的内容相当有限。

什么是“浮子”?

好的,所以你在 y 轴上有速度 [以字节/秒为单位];x 轴上的时间以 [sec] 为单位,对吗?这意味着,如果您在随时间推移(我很无聊,是的 :) 速度随时间推移,在线性段中,在某个特定时间点进行插值,您将在该特定时间点获得速度。如果您想计算您花费了多少带宽,您需要确定该曲线下方的面积。从点“a”到点“b”的区域将确定该时间段内以 [字节] 为单位的已用带宽。

我花了好几个星期才终于找到一位乐于助人的数学家向我解释这一点。其他人都坚持要教我黎曼和技术以及各种其他沉重的东西,这些东西不仅让我感到困惑,而且似乎对解决问题没有必要。

用史努比的不朽名言:“天哪!”

但我也希望用户能够从 y 轴(时间)上的两个任意点突出显示该图,以获取该范围内的网络使用总量。我知道这将是不准确的,但我需要它使用一个实体方程是正确的不准确的。

这不会是不准确的。它实际上是非常准确的(嗯,除了以字节为单位的舍入误差:),因为您在线性段上使用线性插值。

我认为这是线下的区域,但是用更简单的图表进行的实验使这看起来太高了。我发现我可以将 y2 - y1 的距离乘以 x2 - x1 然后除以 2 得到曲线下方的图形区域,就像一个三角形,但同样,数字似乎很高。(也许它们只是大数字,而我根本没有得到这些数学知识)。

“像三角形”-> 应该是“像梯形”

如果您执行 deltax*(y2-y1)/2 您将获得该区域,是的(这仅适用于线性段)。这就是梯形法则的基本原理。


如果您不确定要计算的内容,请使用维度分析:速度以字节/秒为单位,时间以秒为单位,带宽以字节为单位。乘以速度*时间=带宽,依此类推。

于 2009-09-03T23:08:34.650 回答
0

网络使用总量不是每秒字节数(千、兆等)。它只是直接字节(或千字节或其他)。

例如,在 10 秒的时间间隔内每秒 2 兆字节将是总共20 兆字节。它不会是每秒 20 兆字节。

或者你可能想要一个时间间隔内的平均每秒字节数?

于 2009-09-04T04:47:11.703 回答
-1

如果您接受对于您难以简洁或准确表达的概念有完善的术语,并且这些数学术语的存在时间比您要长得多,那么这对您来说会容易得多。既然你已经清楚地经历了理解这些概念的大部分麻烦,你不妨分解并开始用它们的专有名称来称呼它们。

那说:

有 2 种明显的方法来绘制带宽,并且有两种方法可以从服务器获取带宽数据。首先,有累积使用功能,它在任何时候都是自测量开始以来传输的数据总量。如果你绘制这个函数,你会得到一个永远不会减少的图表(因为你不能取消下载某些东西)。此函数的值的单位将是字节或 kB 或类似的东西。

用户通常感兴趣的是瞬时使用功能,它是您当前正在使用多少带宽的指标。这是用户通常希望看到的。用数学术语来说,这是累积函数的导数。该导数可以取从 0(您没有下载)到网络链接的额定速度(表明您通过连接推送尽可能多的数据)的任何值。此函数的单位是每秒字节数,或类似 Mbps(每秒兆位)的单位。

您可以用过去几秒钟的平均数据使用量来近似瞬时带宽。这计算为

 (number of bytes transferred) 
-----------------------------------------------------------------
 (number of seconds that elapsed while transferring those bytes)

一般来说,时间间隔越小,近似值越准确。为简单起见,您通常希望将其计算为“自上次报告以来传输的字节数”除以“自上次报告以来的秒数”。

例如,如果服务器每 4 分钟向您报告“今天传输的总字节数”,那么它给您的是累积函数,您需要近似导数。您可以向用户报告的瞬时带宽使用率是:

(total transferred as of now) - (total as of 4 minutes ago) bytes
-----------------------------------------------------------
  4*60 seconds

如果服务器向您提供“自上次报告以来传输的字节数”形式的报告,那么您可以直接向用户报告并绘制与时间相关的数据。另一方面,如果用户(或您)关心每天传输的总字节数的配额,那么您将需要将您拥有的(大约)瞬时数据转换为累积数据。这个过程,称为计算积分,与计算导数相反,并且在某些方面在概念上更简单。如果您已经跟踪了来自服务器的每个报告和时间戳,那么对于每次,您绘制的值都是在该时间之前收到的所有报告的总和。如果您实时执行此操作,那么每次获得新报告时,图表都会按该报告中的数量跳跃。

于 2009-09-03T23:04:12.053 回答
-1

我数学不差,...我只是不熟悉超过 10 年级的数学

这就像在说“我在编程方面还不错,我对ifs 和循环没有任何问题,但我从来没有时间编写多个函数。”

我建议你参加某种数学课。对矩阵和微积分基础的理解可以让你了解很多东西,并且可以在各种领域中发挥作用。您将能够了解更多 Wikipedia 文章和 SO 答案 - 以及问题!

如果您负担不起,请尝试查找一些讲座视频或其他内容。

其他人都坚持要教我黎曼和技术

我不明白为什么。你不需要它们——尽管如果你已经学会了它们,我希望你会发现想出一个解决方案会更容易。你看,黎曼求和试图给你一个“熟悉”的面积概念。您(希望)几年前学习的那种领域。

获取使用图下方两点之间的区域将告诉您(大约)在此期间使用了多少。

你如何找到平面图的面积?你把它分成矩形和三角形,找到每个的面积,然后把它们加在一起。基本上,你可以对你的图表做同样的事情。有人提出了一种简单的方法,称为梯形规则。这只是选择如何将图表划分为条带的问题,在您的情况下这很容易:只需使用数据点本身作为分隔线。(您还需要使用线性插值计算用户所选区域左右两端的图形值。)

如果我所说的任何内容对您来说不清楚(可能有),请发表评论。

于 2009-09-03T23:45:33.110 回答