求使1/i + 1/(i+1)的和等于5的i值(编程新手求助)
求解等式
1/i + 1/(i+1) = 5 中的i值 嘿,咱们先从数学推导入手,再聊聊编程里怎么验证这个结果:
数学精确解推导
首先把等式明确下来:1/i + 1/(i+1) = 5
通分合并项:
将左边两个分数通分后合并,得到:(i+1 + i) / [i(i+1)] = 5
化简分子后整理成等式:2i + 1 = 5i(i+1)整理为标准二次方程:
展开右边并移项,得到二次方程的标准形式:5i² + 3i - 1 = 0用求根公式计算实根:
对于通用二次方程ax² + bx + c = 0,根的计算公式是x = [-b ± √(b²-4ac)]/(2a)。代入a=5、b=3、c=-1:- 判别式:
√(3² - 4*5*(-1)) = √29 ≈ 5.385 - 最终得到两个实根:
- 正根:
(-3 + √29)/10 ≈ 0.2385 - 负根:
(-3 - √29)/10 ≈ -0.8385
- 正根:
- 判别式:
编程近似求解(以Python为例)
如果需要在代码里逼近这个解,可以用二分法(函数f(i)=1/i +1/(i+1)在i>0时单调递减,很适合二分查找),这里以正根为例:
def find_i(target=5, tolerance=1e-6): # 正根区间:i趋近0+时f(i)趋近无穷大,i=1时f(i)=1.5<5,所以区间锁定在(0,1) left = 1e-9 # 用极小值避免除以0 right = 1.0 while right - left > tolerance: mid = (left + right) / 2 current_value = 1/mid + 1/(mid + 1) if current_value > target: # 当前值偏大,需要缩小i(i越小,1/i越大) right = mid else: left = mid return (left + right) / 2 # 计算并打印近似解 approx_i = find_i() print(f"近似解为:{approx_i:.4f}") # 输出约0.2385
额外补充说明
- 如果要求i是整数,这个等式没有解:整数i的情况下,
1/i +1/(i+1)的最大值是i=1时的1.5,远小于5;负数整数的计算结果都是负数,也不可能等于5。 - 负根的求解逻辑类似,只需把区间调整到(-1, 0)即可。
内容的提问来源于stack exchange,提问作者hamudi97
相关产品推荐
相关产品推荐

