線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:751
推到 Plurk!
推到 Facebook!

如何排除回圈計算裡碰到奇異點?

尚未結案
rangen6912
一般會員


發表:11
回覆:5
積分:3
註冊:2004-04-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-20 21:52:23 IP:211.76.xxx.xxx 未訂閱
各位高手好: 小弟利用回圈在計算一個數學式, 但是經過檢查會在某一特定數值產生 0/0的奇異點,因為這個奇異點的數學 很難用手計算,想請教各位大大,要如何將其 排除?下面是我的程式。
hobolin
初階會員


發表:0
回覆:25
積分:25
註冊:2005-07-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-21 09:45:43 IP:202.145.xxx.xxx 未訂閱
for (;;)
{
  if (fabs(除數) < 0.0000000001)
  continue;
}
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-23 02:46:14 IP:221.169.xxx.xxx 未訂閱
rangen6912:以下只代表我個人的觀念!我從DOS時代就不停有
除數為零的現象!答案為何?
基本上一是警告讓使用者重來。
一是跳過如hobolin大大的continue。
另一是答案為零。
程式裡可能應除法問題有太多不確定性!
BCB你可以使用
try {
  A=A/B;
}
catch(...) {
  A=0; // 或是錯誤警告
}
DOS期(Clipper)我是使用副程式包起來例:
double A_B(double a,double b)
{
  if (b==0.0)  
    return 0.0;
  else
    return a/b;
}
如你的f_real=cos(2*M_PI*b*0.00000001*x/d/L);
可以為f_real=cos(A_B(A_B(2*M_PI*b*0.00000001*x,d),L));
確保安全!
按你的程式我建議你的
if (x==0)
  B=0;
else
  ... 
應該可以行的通!
請參考!    
Andy Chang
------
Andy Chang
rangen6912
一般會員


發表:11
回覆:5
積分:3
註冊:2004-04-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-25 12:01:32 IP:140.115.xxx.xxx 未訂閱
謝謝兩位大大的回應。
系統時間:2024-06-20 3:34:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!