Re: [問題] 準確度問題
: #include "stdafx.h"
: #include <stdio.h>
: #include <math.h>
: #include <process.h>
: // ----------------------------------------------
: double get_item(int n)
: {
: double ans;
: ans= 1.0;
: for (int i=2;i<=n;i++) {
: ans= ans*2.0/i;
: }
: return(ans);
: }// end of get_item()
: // ----------------------------------------------
上面是 函數,
for 是迴圈,等於
int i= 2;
do while(i .LT. n)
ans= ans*2.0/i
i= i + 1
end do
個人覺得,Fortran 和 C 沒有什麼不同啊
: int main(int argc, char* argv[])
: {
: double sum, item;
: int m, n;
: sum= 1.0;
: for (m=2;m <= 25;m++) {
: n= m*2;
: item= get_item(m*2);
: if ((m%2) == 0) {
: item*= -1;
: }
: sum+= item;
: printf("n= %3d, %.18lf\n", (n), sum);
: }
: return 0;
: }
: ※ 引述《mon02118 (我不是好男人)》之銘言:
: : 我們老師出一個作業
: : 計算
: : 2^3 2^5 2^7 2^9 2^49
: : 1- ----- + ----- - ----- + ----- .... ------
: : 4! 6! 8! 10! 50!
: : 這是我打的
: : implicit none
: : integer::i,a,c
: : real(kind=8)::ss,n,v
: : a=1
: : do i=1,50
: : if(i/2*2/=i)n=2**i
: : a=a*i
: : if(i/2*2==i)then
: : v=a
: : c=c+1
: : ss=ss-(-1)**c*n/v
: : write(*,*)c,ss
: : endif
: : enddo
: : end
: : 算出來的
: : 1 1.00000000000000
: : 2 0.666666666666667
: : 3 0.711111111111111
: : 4 0.707936507936508
: : 5 0.708077601410935
: : 6 0.708073325851104
: : 7 0.708079731129053
: : 8 0.708063381375117
: : 9 0.707917491813515
: : 10 0.708166899470330
: : 11 0.704154863362005
: : 12 0.714965674172816
: : 13 0.696866126661503
: : 14 0.794427102271259
: : 15 1.17537948322364
: : 16 0.175379483223640
: : 17 NaN
: : 18 NaN
: : 19 NaN
: : 20 NaN
: : 21 NaN
: : 22 NaN
: : 23 NaN
: : 24 NaN
: : 25 NaN
: : 好像算到第10項就錯了, 請問我應該怎麼修改呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.231.79.164
推
11/23 12:23, , 1F
11/23 12:23, 1F
推
12/16 19:19, , 2F
12/16 19:19, 2F
→
12/16 19:20, , 3F
12/16 19:20, 3F
→
12/16 19:22, , 4F
12/16 19:22, 4F
討論串 (同標題文章)
Fortran 近期熱門文章
PTT數位生活區 即時熱門文章
-2
11