當對結果使用近似值時(例如,當計算根或者除以一些限制時),是否有辦法知道近似值何時與許多數字中的確切結果(使其成爲有效數字)相匹配而不知道確切的數值結果?是否有可能輸出15個重要小數的結果而不計算確切的結果?
我正在處理的具體問題是使用牛頓方法僅使用除2(bitshift)的C++近似a/b。近似值必須精確到十五的十進制數。但是我無法知道b!= 2的a/b的確切結果,還是我錯了?
感謝您的所有答案。
當對結果使用近似值時(例如,當計算根或者除以一些限制時),是否有辦法知道近似值何時與許多數字中的確切結果(使其成爲有效數字)相匹配而不知道確切的數值結果?是否有可能輸出15個重要小數的結果而不計算確切的結果?
我正在處理的具體問題是使用牛頓方法僅使用除2(bitshift)的C++近似a/b。近似值必須精確到十五的十進制數。但是我無法知道b!= 2的a/b的確切結果,還是我錯了?
感謝您的所有答案。
求解方程的任何可靠方法都涉及到計算包含根的範圍,每次迭代的範圍越窄。當範圍變得足夠窄時停止 - 在您的示例中,低於1e-15
。
牛頓並沒有使用範圍,但我無法想象你將如何使用牛頓除以2。
您好@Eugene, a/b可以用牛頓法只用乘法,加法和減法來計算,但是對於乘法,使用Karatsuba的算法,其中採用了除法。 –
你是如何試圖代表值?作爲固定的小數點或「雙」值。在後一種情況下閱讀[浮點數學是否被破壞?](http://stackoverflow.com/questions/588004/is-floating-point-math-broken)。 –
@πάνταῥεῖ,我正在使用'double'值,但是這怎麼回答我的問題?僅僅使用'double'類型就足夠了,因爲它保證了15個小數點匹配? –
你能分享你當前的代碼嗎? –