| ²é¿´: 877 | »Ø¸´: 13 | |||
| µ±Ç°Ö÷ÌâÒѾ´æµµ¡£ | |||
| µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû | |||
jianchaoyv½ð³æ (СÓÐÃûÆø)
|
[½»Á÷]
¡¾ÇóÖú¡¿Çó½Ìfortran 90¸ßÊÖ£¡£¡
|
||
|
Ò»¸öfortran 90³ÌÐòÈçÏ£º program D3R1 !driver for routine TRAPZD real,parameter::nmax=15,pio2=1.5707963 external Func,Fint real::A=0.0,B=pio2 write(*,'(1x,a)') 'integral of Func with 2^(n-1) points' write(*,'(1x,a,f10.6)')'actual value of integral is',& Fint(B)-Fint(A) write(*,'(1x,t7,a,t16,a)')'n','Approx.integral' do i=1,nmax call TRAPZD(Func,A,B,s,i) write(*,'(1x,i6,f20.6)')i,s end do end program D3R1 Function Func(x) Func=(x**2)*(x**2-2.0)*sin(x) end function Func function Fint(x) !integral of Func Fint=4.0*x*((x**2)-7.0)*sin(x)-((x**4)-14.0*(x**2)+28.0)*cos(x) end function Fint subroutine TRAPZD(Func,A,B,s,n) integer,parameter::k1=selected_int_kind(9) integer(kind=k1)::tnm integer,parameter::k2=selected_real_kind(8,13) real(kind=k2)::del,sum,x if(n==1)then s=0.5*(b-a)*(Func(a)+Func(b)) else tnm=2**(n-1) del=(b-a)/tnm x=A sum=0.0 do j=2,tnm x=x+del sum=sum+Func(x) end do s=0.5*(Func(A)+Func(B)+2.0*sum)*del end if end subroutine TRAPZD ÔËÐкó½á¹û£º integral of Func with 2^(n-1) points actual value of integral is -0.479158 n Approx.integral 1 0.905772 2 6.166170 3 -Infinity 4 -Infinity 5 -Infinity 6 NaN 7 NaN 8 NaN 9 NaN 10 NaN run-time error M6201: MATH - sin: DOMAIN error Image PC Routine Line Source pp.exe 00407039 Unknown Unknown Unknown pp.exe 00406E6B Unknown Unknown Unknown pp.exe 00406FF1 Unknown Unknown Unknown pp.exe 00409268 Unknown Unknown Unknown pp.exe 00429F90 Unknown Unknown Unknown pp.exe 00426CFC Unknown Unknown Unknown pp.exe 004012A6 Unknown Unknown Unknown pp.exe 00401451 Unknown Unknown Unknown pp.exe 004011E5 Unknown Unknown Unknown pp.exe 00433E29 Unknown Unknown Unknown pp.exe 00426234 Unknown Unknown Unknown kernel32.dll 7C817067 Unknown Unknown Unknown Incrementally linked image--PC correlation disabled. ÎÊÌ⣺ £¨1£©ÔõÑù½â¾öÔËÐкó³öÏÖµÄÇé¿ö£¨ÈçÉÏ£© £¨2£©Óï¾ä£ºinteger,parameter::k1=selected_int_kind(9)ÖÐÈô½«9¸ÄΪ13½«»á³öÏÖ·µ»ØÖµk1=-1£¬ÔõÑù½â¾ö£¿ (3)½«Óï¾ä:integer,parameter::k2=selected_real_kind(8,13)ÖÐ(8,13¸ÄΪ(6,9)ºóÔËÐнá¹û: integral of Func with 2^(n-1) points actual value of integral is -0.479158 n Approx.integral 1 0.905772 2 -0.020945 3 -0.361461 4 -0.449584 5 -0.471756 6 -0.477307 7 -0.478697 8 -0.479042 9 -0.479126 10 -0.479146 11 -0.479151 12 -0.479152 13 -0.479153 14 -0.479411 15 -0.479676 Press any key to continue ΪºÎÔÚ 14 -0.479411 15 -0.479676 ´¦±ä´óÄÇô¶à?²»ÊÇnÔ½´ó×îºóµÄÖµÔ½½Ó½üÕæÊµÖµÂð? [ Last edited by jianchaoyv on 2009-4-10 at 16:57 ] |
» ²ÂÄãϲ»¶
299Çóµ÷¼Á
ÒѾÓÐ8È˻ظ´
Ò»Ö¾Ô¸±±¾©Àí¹¤´óѧ±¾¿Æ211²ÄÁϹ¤³Ì294Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
300Çóµ÷¼Á£¬²ÄÁÏ¿ÆÑ§Ó¢Ò»Êý¶þ
ÒѾÓÐ8È˻ظ´
ÕÐÊÕÉúÎïѧ/ϸ°ûÉúÎïѧµ÷¼Á
ÒѾÓÐ5È˻ظ´
070305¸ß·Ö×Ó»¯Ñ§ÓëÎïÀí 304·ÖÇóµ÷¼Á
ÒѾÓÐ7È˻ظ´
289Çóµ÷¼Á
ÒѾÓÐ13È˻ظ´
Ò»Ö¾Ô¸¹þ¶û±õ¹¤Òµ´óѧ²ÄÁÏÓ뻯¹¤·½Ïò336·Ö
ÒѾÓÐ9È˻ظ´
081200-11408-276ѧ˶Çóµ÷¼Á
ÒѾÓÐ6È˻ظ´
µ÷¼ÁÇóԺУÕÐÊÕ
ÒѾÓÐ5È˻ظ´
µ÷¼Á310
ÒѾÓÐ8È˻ظ´
ÀÏ»¢´óÍõ
ľ³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 26 (СѧÉú)
- ¹ó±ö: 0.17
- ½ð±Ò: 4774.1
- É¢½ð: 8
- ºì»¨: 42
- Ìû×Ó: 1361
- ÔÚÏß: 215.2Сʱ
- ³æºÅ: 659094
- ×¢²á: 2008-11-21
- רҵ: ½ðÊô½á¹¹²ÄÁÏ
¡ï ¡ï ¡ï
jianchaoyv(½ð±Ò+3,VIP+0):ÎÊÌâûȫ²¿½â¾ö,µ«ÊǷdz£¸ÐлÄãÕâλ¾ø¶ÔÊǸßÊÖÁË!!! 4-10 21:25
jianchaoyv(½ð±Ò+3,VIP+0):ÎÊÌâûȫ²¿½â¾ö,µ«ÊǷdz£¸ÐлÄãÕâλ¾ø¶ÔÊǸßÊÖÁË!!! 4-10 21:25
|
Ë÷ÐÔÎÒ¸øÄãŪÁË£º ³ÌÐò¸ÄΪ£º program D3R1 !driver for routine TRAPZD integer,parameter::nmax=15 £¡ÕâÀïÓи͝ real*8,parameter::pio2=1.5707963 £¡ÕâÀïÓиģ¬ÇëÄã×Ô¼ºÔÙ°ÑPiO2д׼ȷһµã£¬¿ÉÄÜ»á¸üºÃ external Func,Fint real*8 ::A=0.0,B=pio2 £¡ÕâÀïÓÐ¸Ä write(2,'(1x,a)') 'integral of Func with 2^(n-1) points' write(2,'(1x,a,f10.6)')'actual value of integral is',& Fint(B)-Fint(A) write(2,'(1x,t7,a,t16,a)')'n','Approx.integral' do i=1,nmax call TRAPZD(Func,A,B,s,i) write(2,'(1x,i6,f20.6)')i,s end do end program D3R1 Function Func(x) real*8::x £¡ÕâÀï¸ÄÁË real*8::Func £¡ÕâÀï¸ÄÁË Func=(x**2)*(x**2-2.0)*sin(x) end function Func function Fint(x) !integral of Func real*8::x £¡ÕâÀï¸ÄÁË real*8::Fint £¡ÕâÀï¸ÄÁË Fint=4.0*x*((x**2)-7.0)*sin(x)-((x**4)-14.0*(x**2)+28.0)*cos(x) end function Fint subroutine TRAPZD(Func,A,B,s,n) integer,parameter::k1=selected_int_kind(9) integer(kind=k1)::tnm integer,parameter::k2=selected_real_kind(8,13) real*8::del,sum,x ,a,b !(kind=k2) £¡ÕâÀïËäÈ»¸ÄÁË£¬ÆäʵÊÇÒ»ÑùµÄ if(n==1)then s=0.5*(b-a)*(Func(a)+Func(b)) else tnm=2**(n-1) del=(b-a)/tnm x=A sum=0.0 do j=2,tnm x=x+del sum=sum+Func(x) end do s=0.5*(Func(A)+Func(B)+2.0*sum)*del end if end subroutine TRAPZD ½á¹ûΪ£º integral of Func with 2^(n-1) points actual value of integral is -0.479158 n Approx.integral 1 0.905773 2 -0.020945 3 -0.361461 4 -0.449584 5 -0.471756 6 -0.477308 7 -0.478696 8 -0.479043 9 -0.479130 10 -0.479152 11 -0.479157 12 -0.479158 13 -0.479159 14 -0.479159 15 -0.479159 |
3Â¥2009-04-10 20:24:50
ÀÏ»¢´óÍõ
ľ³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 26 (СѧÉú)
- ¹ó±ö: 0.17
- ½ð±Ò: 4774.1
- É¢½ð: 8
- ºì»¨: 42
- Ìû×Ó: 1361
- ÔÚÏß: 215.2Сʱ
- ³æºÅ: 659094
- ×¢²á: 2008-11-21
- רҵ: ½ðÊô½á¹¹²ÄÁÏ
¡ï ¡ï ¡ï
kuhailangyu(½ð±Ò+3,VIP+0):Ìæ³æÓÑÖÂл£¡ 4-10 20:13
kuhailangyu(½ð±Ò+3,VIP+0):Ìæ³æÓÑÖÂл£¡ 4-10 20:13
|
integer,parameter::k1=selected_int_kind(9) integer(kind=k1)::tnm integer,parameter::k2=selected_real_kind(8,13) real(kind=k2)::del,sum,x Õ⼸¾ä±íÃ÷ÁËtnm, del,sum, xµÄÀàÐÍ£¨ºóÈý¸öÊÇË«¾«¶ÈµÄ£¬8×ֽڵĸ¡µãÊý£¬Ï൱ÓÚreal*8£© Äãµ÷ÓÃÁËFunc(x)£¬µ«ÔÚFuncº¯ÊýÖÐûÓÐ˵Ã÷xµÄÀàÐÍ£¬Ä¬ÈÏÔòΪ4×Ö½Ú¸¡µãÊý£¬Ï൱ÓÚreal*4¡£ÕâÑùÀàÐͲ»Æ¥Å䣬¿ÉÄÜÊÇÔì³Écos»òSinº¯Êý³öÏÖÎÊÌâµÄÔÒò¡£ ÄãºóÀ´µÄÐ޸쬵ÈÓÚÊǰѲÎÊý¶¼¸Ä³Éµ¥¾«¶È£¬ÕâÑùËðʧÁ˾«¶È£¬¼ÆË㲻׼ȷ¡£ ¼òµ¥µÄ·½·¨ÊÇÔÚFunc(x)ÖмÓÉÏÒ»ÐÐ˵Ã÷£º real*8::x »òÕßΪÁ˱£³Öͳһ£¬¼ÓÉÏÁ½ÐÐ˵Ã÷£º integer,parameter::k2=selected_real_kind(8,13) real£¨kind=k2)::x Ò²ÐС£ ÕâÑùÔËÐгÌÐò£¬¾ÍºÃ¶àÁË¡£½á¹ûΪ£º integral of Func with 2^(n-1) points actual value of integral is -0.479158 n Approx.integral 1 0.000000 2 -0.473831 3 -0.587905 4 -0.562805 5 -0.528367 6 -0.505613 7 -0.492849 8 -0.486120 9 -0.482668 10 -0.480921 11 -0.480042 12 -0.479601 13 -0.479380 14 -0.479269 15 -0.479214 Õ⻹¿ÉÄܲ»ÊÇ×îºÃµÄ£¬ÒòΪ»¹ÓвÎÊýa, b µÄÎÊÌâ¡£ÎÒ½¨ÒéÄã×îºÃ°ÑÔÚÖ÷³ÌÐòºÍ×Ó³ÌÐòÖÐËùÓеĸ¡µãÊý£¨°üÀ¨a£¬b µÈ£©¶¼ËµÃ÷³ÉË«¾«¶ÈÊý£¬¿ÉÄÜ»á¸üºÃ¡£ ×¢£ºÎÒûÓп¼²éÄãµÄËã·¨£¬²»ÖªµÀ½á¹û¶Ô²»¶Ô£¬µ«ÊÇ´Ó±à³ÌÀ´½²£¬Êý¾ÝÀàÐÍÒª¾¡Á¿Í³Ò»ÊÇû´íµÄ¡£ºÇºÇ¡£ [ Last edited by ÀÏ»¢´óÍõ on 2009-4-10 at 20:14 ] |
2Â¥2009-04-10 20:12:12
ÀÏ»¢´óÍõ
ľ³æ (ÖøÃûдÊÖ)
- Ó¦Öú: 26 (СѧÉú)
- ¹ó±ö: 0.17
- ½ð±Ò: 4774.1
- É¢½ð: 8
- ºì»¨: 42
- Ìû×Ó: 1361
- ÔÚÏß: 215.2Сʱ
- ³æºÅ: 659094
- ×¢²á: 2008-11-21
- רҵ: ½ðÊô½á¹¹²ÄÁÏ
¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï ¡ï
kuhailangyu(½ð±Ò+1,VIP+0):׷ןÐл£¡ 4-10 21:59
jianchaoyv(½ð±Ò+7,VIP+0):¸Ðл°ïæ,½»¸öÅóÓѰÉ,ÒÔºó¶à¶à̽ÌÖ! 4-11 09:03
kuhailangyu(½ð±Ò+1,VIP+0):׷ןÐл£¡ 4-10 21:59
jianchaoyv(½ð±Ò+7,VIP+0):¸Ðл°ïæ,½»¸öÅóÓѰÉ,ÒÔºó¶à¶à̽ÌÖ! 4-11 09:03
|
?ʲôµØ·½Ã»½â¾ö£¿ Ä㻹¿ÉÒÔÔÚÖ÷³ÌÐòÖÐÕâÑùд£º real*8::a,b,pio2 ... a=0.d0 pio2=acos(a) b=pio2 ÕâÑù£¬Pi/2¾ÍÓкܸߵľ«¶È¡£ Èô°ÑÊä³ö¸Ä³ÉÊä³ö9λСÊý£¬ÎÒËãÁË£¬ÊÕÁ²µ½-0.479158789£¬ºÜ²»´íµÄ°¡¡£ÄãдµÄactual value of integral is -0.479158£¬·Ç³£½Ó½ü°¡¡£ ÓÐʲôÎÊÌâ˵³öÀ´£¬ÔÛÔÙÑо¿¡£²»¹ýÊýѧÉϵÄËã·¨ÎÒ²»¹Ü°¡¡£ºÇºÇ¡£ [ Last edited by ÀÏ»¢´óÍõ on 2009-4-10 at 21:51 ] |
5Â¥2009-04-10 21:50:00
jianchaoyv
½ð³æ (СÓÐÃûÆø)
- Ó¦Öú: 0 (Ó×¶ùÔ°)
- ½ð±Ò: 964.9
- Ìû×Ó: 198
- ÔÚÏß: 94.8Сʱ
- ³æºÅ: 657809
- ×¢²á: 2008-11-19
- רҵ: ͨÐÅÀíÂÛÓëϵͳ
6Â¥2009-04-11 09:20:16














»Ø¸´´ËÂ¥