我怎样才能找到曲线上方的区域
How can I find the area above the curve
我有一个关于求矩形S2
(曲线上方)面积的问题。我想找到像 (S - S2)/(S2)
这样的 S1/S2
,其中 S = S1 + S2
.
我有 2 vectors
个 double
(x;y),我可以找到 S1 + S2
:
S = (x.back() - x[0])*(y.back() - y[0])
)
然后我想用数值积分求出曲线S2
下的整个面积,然后从S2
中减去z
:
z = (x.back() - x[0])*(y[0] - 0)
, S2 = S2 - z
我的问题是:如果我没有函数,但是有(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;
}
不确定,但我认为您需要更进一步回到集成的首要原则...您尝试做的似乎是找到图表下方的区域...要做到这一点,您需要将其视为切片[积分是将此概念带到delta接近0的点]
所以计算面积为小矩形或更好的矩形,每个数据点之间顶部有三角形...
即
for(loop over data)
{
area += (data[1] + data[0]) * time/distance between data[1] and data[0]
}
从 y_end * (x_end - x1)
中减去它
您会使用数值积分来为您提供数据值 - 但购买它的外观是通过测量它们或做其他事情来生成它们。
我有一个关于求矩形S2
(曲线上方)面积的问题。我想找到像 (S - S2)/(S2)
这样的 S1/S2
,其中 S = S1 + S2
.
我有 2 vectors
个 double
(x;y),我可以找到 S1 + S2
:
S = (x.back() - x[0])*(y.back() - y[0])
)
然后我想用数值积分求出曲线S2
下的整个面积,然后从S2
中减去z
:
z = (x.back() - x[0])*(y[0] - 0)
, S2 = S2 - z
我的问题是:如果我没有函数,但是有(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;
}
不确定,但我认为您需要更进一步回到集成的首要原则...您尝试做的似乎是找到图表下方的区域...要做到这一点,您需要将其视为切片[积分是将此概念带到delta接近0的点]
所以计算面积为小矩形或更好的矩形,每个数据点之间顶部有三角形...
即
for(loop over data)
{
area += (data[1] + data[0]) * time/distance between data[1] and data[0]
}
从 y_end * (x_end - x1)
中减去它您会使用数值积分来为您提供数据值 - 但购买它的外观是通过测量它们或做其他事情来生成它们。