等分曲线下的面积
Equally divide area under a curve
我有一条 y = sin(x) 曲线,x 在 0 和 pi 之间(第一象限 - 无负值)。像这样:
我想平均 将曲线下的面积划分为n 块,并获得每块的(最大)x 值。
对于算法的任何想法都将不胜感激。
曲线下的面积是它的积分。 sin(x)
从0
到u
的积分是1-cos(u)
,所以从0
到π
的积分是2
。反转该公式可找到 t
点 u
获得特定值的点。因此,我们正在寻找将 [0, 2]
分成 n
等份的 u
值的值 t=acos(1-u)
。
在代码中:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-0.2, 3.3, 500)
y = np.sin(x)
plt.plot(x, y)
n = 7
u = np.linspace(0, 2, n + 1, endpoint=True)
t = np.arccos(1 - u)
print("The limits of the areas are:", list(t))
colors = plt.cm.Set2.colors
for i in range(n):
filter = (x > t[i]) & (x <= t[i + 1])
plt.fill_between(x[filter], 0, y[filter], color=colors[i])
plt.xticks(t)
plt.gca().spines['bottom'].set_position('zero')
plt.gca().spines['top'].set_color('none')
plt.gca().spines['right'].set_color('none')
plt.tight_layout()
plt.show()
虽然这不完全是必然的答案,但也许会很有趣。
将相关区域分成三个相等的部分。
在OA的基础上,和在斜边上一样,建一个直角三角形,腿的比例[=12=]=4:5。从 C 点升高垂直线。将垂直线也对称地移动到右侧。分工完成。误差约 1%。
现在就优点/必须使用循环公式:X0= 0, X(i+1)= X(i)+Δ(i+1); Δ(i+1)= arccossqrt((p(i))^2-q(i))-p(i)),其中 p(i)= cos(X(i))(2/n-cos( X(i)); q(i)= cos(2X(i))+4/n(1/n-cos(X(i))
我有一条 y = sin(x) 曲线,x 在 0 和 pi 之间(第一象限 - 无负值)。像这样:
我想平均 将曲线下的面积划分为n 块,并获得每块的(最大)x 值。
对于算法的任何想法都将不胜感激。
曲线下的面积是它的积分。 sin(x)
从0
到u
的积分是1-cos(u)
,所以从0
到π
的积分是2
。反转该公式可找到 t
点 u
获得特定值的点。因此,我们正在寻找将 [0, 2]
分成 n
等份的 u
值的值 t=acos(1-u)
。
在代码中:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-0.2, 3.3, 500)
y = np.sin(x)
plt.plot(x, y)
n = 7
u = np.linspace(0, 2, n + 1, endpoint=True)
t = np.arccos(1 - u)
print("The limits of the areas are:", list(t))
colors = plt.cm.Set2.colors
for i in range(n):
filter = (x > t[i]) & (x <= t[i + 1])
plt.fill_between(x[filter], 0, y[filter], color=colors[i])
plt.xticks(t)
plt.gca().spines['bottom'].set_position('zero')
plt.gca().spines['top'].set_color('none')
plt.gca().spines['right'].set_color('none')
plt.tight_layout()
plt.show()
虽然这不完全是必然的答案,但也许会很有趣。 将相关区域分成三个相等的部分。 在OA的基础上,和在斜边上一样,建一个直角三角形,腿的比例[=12=]=4:5。从 C 点升高垂直线。将垂直线也对称地移动到右侧。分工完成。误差约 1%。 现在就优点/必须使用循环公式:X0= 0, X(i+1)= X(i)+Δ(i+1); Δ(i+1)= arccossqrt((p(i))^2-q(i))-p(i)),其中 p(i)= cos(X(i))(2/n-cos( X(i)); q(i)= cos(2X(i))+4/n(1/n-cos(X(i))