用C++计算ln(1+1/x)/(sinx*(cos2x+1))的不定积分
时间: 2023-11-06 19:06:22 浏览: 105
我们可以先将分母化简一下:
sin(x) * (cos(2x) - 1) = sin(x) * cos(2x) - sin(x) = sin(x) * (1 - 2sin^2(x)) - sin(x) = sin(x) - 2sin^3(x) - sin(x) = -2sin^3(x)
所以原式可以写成:
ln(1 + 1/x) / (-2sin^3(x))
接下来我们可以考虑使用分部积分法。设:
u = ln(1 + 1/x)
du = -1/(x(x+1)) dx
dv = -2sin^2(x) dx
v = 2/3 cos^3(x)
则有:
∫ ln(1 + 1/x) / (-2sin^3(x)) dx
= ∫ u dv
= uv - ∫ v du
= ln(1 + 1/x) * 2/3 cos^3(x) + 2/3 ∫ (cos^3(x)/(x(x+1))) dx
现在我们需要解决剩下的不定积分。一种可能的方法是使用分式分解:
cos^3(x) / (x(x+1)) = A/x + B/(x+1) + C/(x(x+1))
然后将三个未知数的值求出来。但是这个过程比较繁琐,所以我们可以使用一个技巧来避免这个过程:
cos^3(x) / (x(x+1)) = cos(x) * cos^2(x) / (x(x+1))
= (1 - sin^2(x)) * cos(x) / (x(x+1))
= (cos(x) / x) - (sin^2(x) cos(x) / (x(x+1)))
第一个部分的积分是比较容易的,而第二个部分可以使用一个换元法,设:
u = sin(x)
du = cos(x) dx
dx = du / cos(x)
则有:
2/3 ∫ (cos^3(x)/(x(x+1))) dx
= 2/3 ∫ [(cos(x) / x) - (sin^2(x) cos(x) / (x(x+1)))] dx
= 2/3 ∫ (cos(x) / x) dx - 2/3 ∫ (u^2 / (1 - u^2)) du
= 2/3 ln(x) + 1/3 ln(1 - u^2) - 2/3 arctan(u) + C
= 2/3 ln(x) + 1/3 ln(1 - sin^2(x)) - 2/3 arctan(sin(x)) + C
将这个结果代回原式中,得到最终的答案:
∫ ln(1 + 1/x) / (-2sin^3(x)) dx
= ln(1 + 1/x) * 2/3 cos^3(x) + 2/3 ln(x) + 1/3 ln(1 - sin^2(x)) - 2/3 arctan(sin(x)) + C
阅读全文