| 查看: 189 | 回复: 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 ] |
» 猜你喜欢
有没有人能给点建议
已经有3人回复
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
king_zhc
木虫 (著名写手)
- 应助: 4 (幼儿园)
- 金币: 3739.2
- 红花: 5
- 帖子: 1018
- 在线: 132.1小时
- 虫号: 9
- 注册: 2003-03-01
- 性别: GG
- 专业: 工程热力学
2楼2009-02-28 00:16:53












回复此楼