| 查看: 261 | 回复: 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 ] |
» 猜你喜欢
售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急
已经有4人回复
上海工程技术大学 激光智能制造课题组 2027级博士研究生招生
已经有6人回复
课题组招2027级博士 上海工程技术大学 激光智能制造方向
已经有6人回复
现代”学阀”该如何界定
已经有14人回复
求合成方法
已经有8人回复
师弟论文见刊大半年才想起来申请专利,还能抢救一下吗?
已经有4人回复
有机合成以后会不会被AI改变?做科研的虫友怎么看
已经有8人回复
我的奶奶
已经有3人回复
king_zhc
木虫 (著名写手)
- 应助: 4 (幼儿园)
- 金币: 3739.2
- 红花: 5
- 帖子: 1018
- 在线: 132.1小时
- 虫号: 9
- 注册: 2003-03-01
- 性别: GG
- 专业: 工程热力学
2楼2009-02-28 00:16:53










回复此楼