Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

BCB 的浮點運算....

0 views
Skip to first unread message

為壓力誕生的男人

unread,
Aug 19, 1998, 3:00:00 AM8/19/98
to

我在跑數學式子的模擬的時候
2*(1-0.66496)=0.670800001
為什麼???
我只是舉一個例子,我有很多結果都是錯誤的。
請問他是如何運算的??
因為他這樣的特性,讓我原本應該是發散的訊號,變成收斂的訊號!
有人知道原因嗎?
或者知道改進的方法!!謝謝....
--
理性平衡了感性,即是成長...
成長使人舒服,豁達..彷彿看清了一切..
但卻依然避免不了伴隨的空虛和失落...

[m [1;35m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 210.66.162.135] [m

為壓力誕生的男人

unread,
Aug 19, 1998, 3:00:00 AM8/19/98
to
《 在 zsyian (為壓力誕生的男人) 的大作中提到: 》
: 我在跑數學式子的模擬的時候

: 2*(1-0.66496)=0.670800001
: 為什麼???
: 我只是舉一個例子,我有很多結果都是錯誤的。
: 請問他是如何運算的??
: 因為他這樣的特性,讓我原本應該是發散的訊號,變成收斂的訊號!
: 有人知道原因嗎?
: 或者知道改進的方法!!謝謝....

還有,單純的運算並不會出錯...
你們可不可以嘗試用下面的數學式子迭代..
if (y>=0&&y<=0.5)
y=2*y;
else if (y>0.5&&y<=1)
y=2*(1-y);

隨便給定0<=y<=1
y最好有小數點三位以上...
然後經由迭代後,理論上是發散的,就算用手算也是發散的...
可是,用Chart顯示的結果,卻是收斂的...

charge

unread,
Aug 20, 1998, 3:00:00 AM8/20/98
to
大概是形別的關係吧.... TRY TRY SEE LA
2.0*(1.0-66496)

為壓力誕生的男人 撰寫於文章 <3Q9ccg$3...@bbs.tku.edu.tw>...


>
>
> 我在跑數學式子的模擬的時候
> 2*(1-0.66496)=0.670800001
> 為什麼???
> 我只是舉一個例子,我有很多結果都是錯誤的。
> 請問他是如何運算的??
> 因為他這樣的特性,讓我原本應該是發散的訊號,變成收斂的訊號!
> 有人知道原因嗎?
> 或者知道改進的方法!!謝謝....

為壓力誕生的男人

unread,
Aug 20, 1998, 3:00:00 AM8/20/98
to
《 在 charge. 的大作中提到: 》

嗯...我剛剛試了一下..可是還是沒有辦法...
但還是很感謝你的回應...
希望能解決這個問題,要不然我的研究就.....


: 大概是形別的關係吧.... TRY TRY SEE LA


--
理性平衡了感性,即是成長...
成長使人舒服,豁達..彷彿看清了一切..
但卻依然避免不了伴隨的空虛和失落...

[m [1;36m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 210.66.162.139] [m

小弟

unread,
Aug 21, 1998, 3:00:00 AM8/21/98
to
※ 引述《zsyia...@bbs.tku.edu.tw (為壓力誕生的男人)》之銘言:
: 《 在 charge. 的大作中提到: 》

: 嗯...我剛剛試了一下..可是還是沒有辦法...
: 但還是很感謝你的回應...
: 希望能解決這個問題,要不然我的研究就.....
: : 大概是形別的關係吧.... TRY TRY SEE LA
: : 2.0*(1.0-66496)
: : 為壓力誕生的男人 撰寫於文章 <3Q9ccg$3...@bbs.tku.edu.tw>...

這種很常見,通常是由於內部是用整數模擬浮點數運算而造成的
(總不能要求所有的機器都有FPU吧,所以大部份compiler的內定
選項都是用整數模擬浮點運算),你可以試著把這個option加進
去(在那我忘了),不然還有一個辦法,就是取有效位數,把
truncation error去掉...
--
[m※ Origin: 臺大電機 Maxwell 站 ◆ From: chempro.che.ntu.edu.tw

為壓力誕生的男人

unread,
Aug 23, 1998, 3:00:00 AM8/23/98
to
《 在 sh...@bbs.ee.ntu.edu.tw (小弟) 的大作中提到: 》
: 這種很常見,通常是由於內部是用整數模擬浮點數運算而造成的

: (總不能要求所有的機器都有FPU吧,所以大部份compiler的內定
: 選項都是用整數模擬浮點運算),你可以試著把這個option加進
: 去(在那我忘了),不然還有一個辦法,就是取有效位數,把
: truncation error去掉...

請問要怎麼設??我到option找了一下,大概勾了幾項..
可是,結果依然不變...
我舉的例子只是我模擬的一個case..
基本上,位數不能固定,要不然將使的我的系統效能大打折扣
所以,還是希望有人可以告知!!


--
理性平衡了感性,即是成長...
成長使人舒服,豁達..彷彿看清了一切..
但卻依然避免不了伴隨的空虛和失落...

[m [1;36m※ 來源:‧蛋捲廣場 bbs.tku.edu.tw‧[FROM: 210.66.162.127] [m

kcad

unread,
Aug 24, 1998, 3:00:00 AM8/24/98
to
On 19 Aug 1998 08:47:49 GMT, zsyia...@bbs.tku.edu.tw (為壓力誕生的男人) wrote:

>《 在 zsyian (為壓力誕生的男人) 的大作中提到: 》


>: 我在跑數學式子的模擬的時候
>: 2*(1-0.66496)=0.670800001
>: 為什麼???
>: 我只是舉一個例子,我有很多結果都是錯誤的。
>: 請問他是如何運算的??
>: 因為他這樣的特性,讓我原本應該是發散的訊號,變成收斂的訊號!
>: 有人知道原因嗎?
>: 或者知道改進的方法!!謝謝....
>

> 還有,單純的運算並不會出錯...
> 你們可不可以嘗試用下面的數學式子迭代..
> if (y>=0&&y<=0.5)
> y=2*y;
> else if (y>0.5&&y<=1)
> y=2*(1-y);
>
> 隨便給定0<=y<=1
> y最好有小數點三位以上...
> 然後經由迭代後,理論上是發散的,就算用手算也是發散的...
> 可是,用Chart顯示的結果,卻是收斂的...

這與compiler無關, 純粹是由於浮點數的宿命, 請參考數值分析方面的書

0 new messages