UVA10341 Solve It 题解
UVA10341 Solve It题目描述Link: https://uva.onlinejudge.org/index.php?optioncom_onlinejudgeItemid8category15pageshow_problemproblem1282PDF输入格式输出格式输入输出样例 #1输入 #10 0 0 0 -2 1 1 0 0 0 -1 2 1 -1 1 -1 -1 1输出 #10.7071 No solution 0.7554Solution1. 大致题意求方程p exp ( − x ) q sin ( x ) r cos ( x ) s tan ( x ) t x 2 u 0 p\exp(-x)q\sin(x)r\cos(x)s\tan(x)tx^2u0pexp(−x)qsin(x)rcos(x)stan(x)tx2u0在区间[ 0 , 1 ] [0,1][0,1]上的解无解输出No Solution \texttt{No Solution}No Solution。输入包含多组不同的( p , q , r , s , t , u ) (p,q,r,s,t,u)(p,q,r,s,t,u)针对每一组数据求解该方程。2. 分析解决此类方程的通用方法有两种一种是牛顿法一种是二分法。设函数f ( x ) p exp ( − x ) q sin ( x ) r cos ( x ) s tan ( x ) t x 2 u f(x)p\exp(-x)q\sin(x)r\cos(x)s\tan(x)tx^2uf(x)pexp(−x)qsin(x)rcos(x)stan(x)tx2u则导函数f ′ ( x ) − p exp ( − x ) q cos ( x ) − r sin ( x ) s cos 2 ( x ) 2 t x f(x)-p\exp(-x)q\cos(x)-r\sin(x)\dfrac{s}{\cos^2(x)}2txf′(x)−pexp(−x)qcos(x)−rsin(x)cos2(x)s2tx根据题意由于p , r p,rp,r为正q , s , t q,s,tq,s,t为负x xx的范围为[ 0 , 1 ] [0,1][0,1]因此容易看出f ′ ( x ) ≤ 0 f(x)\le0f′(x)≤0在区间[ 0 , 1 ] [0,1][0,1]恒成立也就是说f ( x ) f(x)f(x)是区间[ 0 , 1 ] [0,1][0,1]的单调函数。在具有单调性单调递减的情况下判断无解只需要看端点值如果f ( 0 ) 0 f(0)0f(0)0或f ( 1 ) 0 f(1)0f(1)0即为无解。可以直接使用二分求解使用 Desmos 绘制得到的函数的图像如下。考虑到所求的函数在区间( − ∞ , ∞ ) (-\infty,\infty)(−∞,∞)不连续存在间断点并且方程可能存在区间[ 0 , 1 ] [0,1][0,1]以外的解参考下图因此不推荐使用牛顿法求解。3. 代码#includebits/stdc.hdoublep,q,r,s,t,u,eps1e-8,le,re;doublef(doublex){returnp*exp(-x)q*sin(x)r*cos(x)s*tan(x)t*pow(x,2.)u;}voidkernel(void){inti1;if(scanf(%lf%lf%lf%lf%lf%lf,p,q,r,s,t,u)EOF)exit(0);if(f(1)0||f(0)0)printf(No solution\n);else{le0.;re1.;while(re-leeps)f((lere)/2.)0.?le(lere)/2.:re(lere)/2.;printf(%.4lf\n,le);}return;}intmain(){while(1)kernel();}