Re: [問題] 可以判斷整數嗎?
以下的 C語言程式設計,
double 就是 fortran 的 real*8,
經過 25次的 複雜運算,產生的
絕對誤差如下
謹 提供參考
#if 0
dx= 5.684342e-014
請按任意鍵繼續 . . .
#endif
// ----------------------------------------------
#include <stdio.h>
#include <math.h>
#include <process.h>
// ----------------------------------------------
template <class T>
T sqr(T x)
{
return(x*x);
}// end of sqr()
// ----------------------------------------------
void main()
{
int no, i;
double x, dx;
no= 25;
x= 1.0;
for (i=1;i<=no;i++) {
x= (tan(atan(exp(log(sqr(sqrt(x))))))) + 1.0;
}
dx= fabs(x - (no + 1));
printf("\n dx= %.6le\n", dx);
system("pause");
}// end of main()
※ 引述《sjgau (sjgau)》之銘言:
: 重點是
: real*4
: rel_diff(a, b) < 1.0e-5
: real*8
: rel_diff(a, b) < 1.0e-14
: 那個 e-5, e-14 的數字,是怎麼來的?
: 答案是:經驗!
: ※ 引述《sjgau (sjgau)》之銘言:
: : 我會!
: : real*4, or real*8 都可以。
: : real*4 x, y, z;
: : x= 16.0
: : y= sqrt(x)
: : iy= int(y + 0.5)
: : ! int() 還要 查ㄧ下,目的是 把 y 四捨五入,
: : ! 取最接近的 整數
: : if (rel_diff(iy, y) < 1.0e-5) then
: : ! y 是整數
: : else
: : ! y 不是整數
: : end if
: : ! rel_diff(a, b) 是自己寫的 副程式, 計算 a, b 的相對誤差
: : ! 相對誤差等於 = (abs_diff(a, b))/max(abs(a), abs(b))
: : ! abs_diff(a, b) 是自己寫的副程式,求 a, b 兩個數字的 絕對誤差
: : ! 絕對誤差= abs(a - b)
--
e-mail: sjgau4311@gmail.com
我的課程介紹網頁:
http://www.csie.ntu.edu.tw/train/teacher_display.php?num=18
AutoCAD 台灣地區菁英講師獲選
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.82
→
12/26 13:29, , 1F
12/26 13:29, 1F
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章