当前位置: 首页 > 知识库问答 >
问题:

我怎样才能找到曲线上方的面积

甄正信
2023-03-14

我有一个关于寻找矩形s2(曲线上方)的区域的问题。我想找到S1/S2类似于(S-S2)/(S2),其中S=S1+S2

我有两个(x;y)的向量,可以找到S1+S2:

s=(x.back()-x[0])*(y.back()-y[0]))

我的问题是:如果我没有函数,但有(x;y),如何使用数值积分。例如,在matlab中,Feval:

% Total area under the curve
ft = fittype('smoothingspline');
cf = fit(x,y,ft);
F = @(x) feval(cf,x);
S2 = quad(F,x(1),x(end));

在C++中,我有:

#include "Functions.h"
std::vector<double>AreaRatio(std::vector<double>&x, std::vector<double>&y) {

double S(0.0), z(0.0), S2(0.), R(0.0);

S = (x.back() - x[0])*(y.back() - y[0]);
z = (x.back()*x[0])*(y[0]-0);
S2 = /.../ 
// Numerical methods (any library) to find the area under the curve, 
// but I don't know how to transfer function into function of Numerical integration, 
// because I have only coordinates. 
R = (S - S2) / S2;
return R;
}

共有1个答案

魏旭
2023-03-14

不确定,但我认为你需要进一步回到积分的第一原理...看起来你要做的是找到图下的区域...要做到这一点,您需要将其视为切片[集成是这个概念的增量接近0的点]

因此,将面积计算为小矩形或更好的矩形,在每个数据点之间的顶部有三角形...

即。

    for(loop over data)
    {
        area += (data[1] + data[0]) * time/distance between data[1] and data[0]
    }
 类似资料:
  • 如何获取用户当前所在的路由?我需要它来隐藏导航栏链接,如果用户当前在链接通向的路线上。

  • 我在想一个算法来解决下面的问题: 问题是如何找到最小的边数来满足所有客户的要求? 有一个简单的例子: 客户1希望从顶点a到顶点B。 客户2希望从顶点b到顶点C。 客户3希望从顶点a到顶点C。 null

  • 如果我的问题看起来很长,我道歉。我会尽量简明扼要。 问题:编写一个程序,将以千克为单位的估算重量转换为磅。如果用户输入负值,程序应要求玩家重新输入数字。 我创建了三个函数。第一个函数-返回玩家输入第二个函数-返回以磅为单位的权重第三个函数-如果权重为正,返回以磅为单位的值,或者如果值为负,要求另一个输入。 如果相同的值为正数,我的程序将返回正确的值。然而,当我输入一个负浮点数时,我的程序将永远打印

  • 发生在我身上的是MDB接收消息并尝试处理它们,甚至我的服务器也没有完全启动 知道怎么解决这个问题吗?

  • 我需要将一个JSON文件推进到一个Kafka主题中,在presto中连接该主题,并将JSON数据结构化到一个可查询的表中。

  • 如何获取已设置为ImageView的可绘图文件的名称?