數值計算誤差

2021-07-11 17:59:26 字數 1803 閱讀 6088

在matlab上執行》 5.1-5-0.1和》 1.5-1-0.5,給出執行結果,並簡要分析一下產生現象的原因

**:

>> x1=5.1-5-0.1

x1 =

-3.608224830031759e-16

>> x2=1.5-1-0.5

x12=

0

原因:

浮點數表示時數字時位數有限,以雙精度浮點數為例,共64位。

對於5.1,符號位一位,指數字11,整數部分佔3位,小數部分0.1不能精確表示只能近似用49位表示。5.1-5-0.1,5被精確表示,0.1則用52位近似表示。故5.1中的小數部分0.1在計算機中比0.1小,最後結果為負。而x2=1.5-1-0.5中,所有的數都被精確表示了,故其結果為0.

1.演算法in

=−5i

n−1+

1n(n

=1,2

,3,.

..,20

) 2.說明事項

1)i0必須取得精確值,利用in

=∫10

xn5+

xdx 計算i0時,會得到ln6-ln5,此處兩數相近不宜相減,應換成ln(6/5)

2)計算出i0後利用迴圈即可計算出i20

function [ y ] = test1_1( n )

y=log(1.2);

for i=1:1:n

y=-5*y+1/i;

end

>> test1_1(20)

ans =

4.242637044921560e-03

1.演算法in

−1=−

15in

+15n

(n=20

,19,.

..,1

) 2.說明事項

1)將上一題中的結果去除尾數變為4.0e-03,得到i20粗糙估計值

2)計算出i20後利用迴圈即可計算出i0

function [ y ] = test1_2

y=4.0e-03;

for i=20:-1:1;

y=y/(-5)+1/(5*i);

end

>> test1_2

ans =

1.823215567939546e-01

與log(1.2)的值相同

對於第乙個公式 in

=−5i

n−1+

1n(n

=1,2

,3,.

..,20

) 分析其誤差傳遞 ε(

i∗n)

=|in

−i∗n

|=−5

|in−

1−i∗

n−1|

=(−5

)20ε(

i∗0)

20次之後其誤差驚人,其結果不可取

對於第二個公式 in

−1=−

15in

+15n

(n=20

,19,.

..,1

) 分析其誤差傳遞 ε(

i∗n−

1)=|

in−1

−i∗n

−1|=

−15|

in−i

∗n|=

(−15

)20ε(

i∗n)

20次之後誤差很小

使用浮點型別導致計算誤差以及判斷誤差

1.計算誤差 浮點的精度是可變的,除非分數是2的整數冪次方,否者無法用有限的二進位制小數表示。即 0.1 分母為10,則分數應該是2的3次方至2的4次方之間,具體是多少我也算不出來了 即這個次方數會為乙個特別長的小數,在有限的長度中無法體現出來。則0.1會被表示為乙個十分接近0.1的值,如0.100...

計算誤差 ACM計算幾何中的精度問題

佔位元組數 數值範圍 十進位制精度位數 float 4 3.4e 38 3.4e38 6 7double 8 1.7e 308 1.7e308 14 15 如果記憶體不是很緊張或者精度要求不是很低,一般選用double。14位的精度 是有效數字位,不是小數點後的位數 通常夠用了。注意,問題來了,資料...

數值分析 2 誤差

在計算中,計算結果的精確度十分重要,誤差就是影響精度的東西 數學模型,即表示計算的公式或方程,本身就是近似的,就不就不精確,這種情況導致的誤差,就叫模型誤差。對物理世界中的引數進行觀測時產生的誤差,比如測定乙個人的身高,無論用多麼精密的工具,肯定都會存在誤差。用近似方法所產生的誤差,也叫方法誤差,比...