數學函式上的誤差 |
答題得分者是:GGL
|
cloud741019
一般會員 發表:1 回覆:1 積分:0 註冊:2007-10-12 發送簡訊給我 |
我要做一些圖形上判斷,有需要使用到一些三角函數以及開根號.
昨天在測試的時候發現,好像使用三角函數會有些誤差. 我pi的定義: [code cpp] const double pi=asin(1)*2; [/code] 以下是我的測試檔: [code cpp] double x1,y1,x2,y2; x1=100; y1=100; for(int i=0;i<=7;i ) { x2=x1 cos(pi*i/4); y2=y1 sin(pi*i/4); } [/code] 其中當i=6的時候,cos(3*pi/2)應該是等於0,但是最後的結果x1不等於x2. 這是不是因為程式上的誤差所造成? 因為我之後還要加入,判斷一個已知的點在一條已知的線上的左邊,右邊或者是在線上. 可能還需要使用到根號,其判斷的方式大概就是先求出線的線性方程式a,b. 再將x帶入y=ax b,求y是否相同,其中可能需要根號或者是tan去求斜率a. |
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
|
cloud741019
一般會員 發表:1 回覆:1 積分:0 註冊:2007-10-12 發送簡訊給我 |
讓你看笑話啦,我不知道有M_PI可以使用,只想說用暴力法創出來.
cos的270度不是等於0嗎? M_PI的使用方法好像錯誤了. [code cpp] ShowMessage("test=" FloatToStr(cos(M_PI)));//180度 ShowMessage("test=" FloatToStr(cos(M_PI/6)));//30度 ShowMessage("test=" FloatToStr(cos(M_PI/4)));//45度 ShowMessage("test=" FloatToStr(cos(M_PI/3)));//60度 ShowMessage("test=" FloatToStr(cos(M_PI/2)));//90度 [/code] 結果分別為 -1 0.866025403784439 0.707106781186548 0.5 6.12303176911169E-17 前四個值都對,最後一個90反而不是0,是近似0.
編輯記錄
|
GGL
資深會員 發表:104 回覆:600 積分:335 註冊:2006-11-05 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |