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