sin³x+cos³x的不定积分怎么求?

发布时间:
2025-04-19 20:37
阅读量:
2

转了一圈没有这个做法

\begin{align*} &\int(\sin^3x+\cos^3x)\mathrm dx\\ =&\int\left(\left(\frac{2\tan\frac{x}{2}}{1+\tan^2\frac{x}{2}}\right)^3+\left(\frac{1-\tan^2\frac{x}{2}}{1+\tan^2\frac{x}{2}}\right)^3\right)\mathrm dx\\ =&\int\left(\left(\frac{2t}{1+t^2}\right)^3+\left(\frac{1-t^2}{1+t^2}\right)^3\right)\mathrm d(2\arctan t)\\ =&\int\frac{2}{1+t^2}\left(\left(\frac{2t}{1+t^2}\right)^3+\left(\frac{1-t^2}{1+t^2}\right)^3\right)\mathrm dt\\ =&2\int\frac{-t^6+3t^4+8t^3-3t^2+1}{(1+t^2)^4}\mathrm dt \end{align*}

然后就是有理函数了 这个标准搞法

\begin{align*} &-t^6+3t^4+8t^3-3t^2+1\\ =&-(t^2+1)^3+6t^4+8t^3+2\\ =&-(t^2+1)^3+6(t^2+1)^2+8t^3-12t^2-4\\ =&-(t^2+1)^3+6(t^2+1)^2+8t(t^2+1)-12(t^2+1)-8t+8 \end{align*}

于是就写出部分分式

一个一个算

然后剩下的用公式

得到

\begin{align*} \int\frac{1}{t^2+1}\mathrm dt&=\arctan t+C;\\ \int\frac{1}{(t^2+1)^2}\mathrm dt&=\frac{1}{2}\arctan t+\frac{t}{2(1+t^2)}+C;\\ \int\frac{1}{(t^2+1)^3}\mathrm dt&=\frac{3}{8}\arctan t + \frac{5t +3t^3}{8(1 + t^2)^2} + C;\\ \int\frac{1}{(t^2+1)^4}\mathrm dt&=\frac{5}{16}\arctan t+\frac{15t^5+40t^3+33t}{48(1+t^2)^3}+C. \end{align*}

然后我再带回去 就得到

\begin{align*} &\frac{1}{2}\int(\sin^3x+\cos^3x)\mathrm dx=-\arctan t\\ &\ \ \ \ +6\left(\frac{t}{2(1+t^2)}+\frac{1}{2}\arctan t\right)+8\left(-\frac{1}{4(1+t^2)^2}\right)\\ &\ \ \ \ -12\left(\frac{3}{8}\arctan t + \frac{5t +3t^3}{8(1 + t^2)^2}\right)-8\left(-\frac{1}{6(1+t^2)^3}\right)\\ &\ \ \ \ +8\left(\frac{5}{16}\arctan t+\frac{15t^5+40t^3+33t}{48(1+t^2)^3}\right)+C\\ &=\frac{3t}{1+t^2}-\frac{2}{(1+t^2)^2}-\frac{15t+9t^3}{2(1+t^2)^2}+\frac{4}{3(1+t^2)^3}+\frac{15t^5+40t^3+33t}{6(1+t^2)^3}+C\\ &=\frac{3t^5+4t^3+6t^2+3t-2}{3(t^2+1)^3}+C \end{align*}

然后就是要把t的表达式转化成x的表达式 那我就偷一点懒了

然后我又不太确定我算对了 看看和别的答主算的 一不一样

#include <cstdio> #include <cmath> double f_mine(double x){ double t=tan(x/2); double u=3*pow(t,5)+2*pow(t,3)-6*pow(t,2)+3*t-2; return 2*u/(3*pow(t*t+1,3));} double f_others(double x){ double s=sin(x)-cos(x),t=sin(3*x)+cos(3*x); return (t/3+3*s)/4;} int main(void){ double u=f_mine(0)-f_others(0); double x=0;while(x<3.141592){ if(fabs(f_mine(x)-f_others(x)-u)>1e-6){break;} x =x+1e-6;} if(x>3.141592){printf("Correct, const=%f.",u);} else{printf("Wrong.");} return 0;}

输出的结果是Correct, const=-0.666667. 看来我算对了 我的函数比他算的小

END