| 查看: 203 | 回复: 1 | |||
| 当前主题已经存档。 | |||
lvjian8596木虫 (小有名气)
|
[交流]
【求助】关于在对数网格上进行SIMPSON积分的问题
|
||
|
我想用fortran程序编写一个关于积分的程序 首先需要把函数产生在一个对数网格上,然后在这个对数网格上进行simpson积分! 看了PWSCF上的一段关于产生对数网格的程序,不是很理解,希望大家帮忙! program main implicit none integer :: i,j,k real(kind=8) :: xmin,zmesh,dx,mesh,rab(1000),rab1(1000),r(1000),x mesh = 1000 xmin = -5.0d0 zmesh = 6.0d0 dx = 0.025d0 DO i = 1, mesh x = xmin + DBLE(i-1) * dx r(i) = exp(x) / zmesh IF( r(i) > 1000.0d0 ) EXIT END DO rab = dx * r end simpson 积分的子程序是: subroutine simpson(mesh,func,rab,asum) !----------------------------------------------------------------------- ! simpson's rule integrator for function stored on the ! radial logarithmic mesh implicit none integer :: i, mesh real(8) :: rab(mesh), func(mesh), f1, f2, f3, r12, asum asum = 0.0d0 r12 = 1.0d0 / 12.0d0 f3 = func(1) * rab(1) * r12 do i = 2,mesh-1,2 f1 = f3 f2 = func(i) * rab(i) * r12 f3 = func(i+1) * rab(i+1) * r12 asum = asum + 4.0d0*f1 + 16.0d0*f2 + 4.0d0*f3 enddo return end subroutine simpson 我不理解的地方是: r(i)应该是网格上的点 rab(i)应该是产生的网格之间的距离吧??? 那为什么这个距离是 rab = dx * r 而不是 rab(i)=r(i+1)-r(i) 请大家帮助! [ Last edited by woshilsh on 2008-12-14 at 20:40 ] |
» 猜你喜欢
299求调剂
已经有8人回复
一志愿北京理工大学本科211材料工程294求调剂
已经有6人回复
300求调剂,材料科学英一数二
已经有8人回复
招收生物学/细胞生物学调剂
已经有5人回复
070305高分子化学与物理 304分求调剂
已经有7人回复
289求调剂
已经有13人回复
一志愿哈尔滨工业大学材料与化工方向336分
已经有9人回复
081200-11408-276学硕求调剂
已经有6人回复
调剂求院校招收
已经有5人回复
调剂310
已经有8人回复
king_zhc
木虫 (著名写手)
- 应助: 4 (幼儿园)
- 金币: 3739.2
- 红花: 5
- 帖子: 1018
- 在线: 132.1小时
- 虫号: 9
- 注册: 2003-03-01
- 性别: GG
- 专业: 工程热力学
2楼2009-02-28 00:16:53














回复此楼