【編程筆記】浮點(diǎn)數(shù)二分·數(shù)的三次方根
2023-01-08 16:37 作者:夕弦-Yamai_Yuzuru | 我要投稿

數(shù)的三次方根
給定一個(gè)浮點(diǎn)數(shù) n,求它的三次方根。結(jié)果保留 6 位小數(shù)。數(shù)的范圍在-10000到10000之間。
數(shù)的三次方根思路
由于-10000到10000,可以視為升序序列。
那么,當(dāng)mid=(l+r)/2時(shí),mid^3>=x時(shí),說明mid在左區(qū)間[l,mid],反之,在右區(qū)間[mid,r]。
由于不是整數(shù)二分,而是浮點(diǎn)數(shù)二分,無需在移動(dòng)l,r的時(shí)候進(jìn)行加一減一的操作,l和r變換時(shí)直接變成mid即可。
此外,因?yàn)橐蟊A袅恍?shù)。
那么,r-l>10^(-8)
如果保留四位小數(shù),那么就是r-l>10^-6,總的來說,就是負(fù)的數(shù)要比需要保留的小數(shù)多2
整理后如下
?

注意,在C++中,mid^3中的^代表異或,故用mid*mid*mid代表三次方
整合后如下

數(shù)的三次方根整合的N-s圖
開心,比較輕松!

夕弦的圖片由NovalAI生成。
標(biāo)簽: