24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 755  |  回复: 1

dailjiao0706

新虫 (初入文坛)

[求助] fortran中如何设计一个程序对内插法函数进行调用·不会编外部的代码,求高数帮忙 已有1人参与

x轴是EK数值(放在文件中,有100项),y轴是fh数值(放在文件中,有100项),因为x,y间隔不均匀所以采用内插法函数将间隔变均匀,其中内插法函数已有,问题是编一个程序,将这个内插法函数成功调用最终得到均匀的xy数值。已知EK值及fh值单行放于txt文件中。下面这是内插法函数。
IMPLICIT NONE
real(kind=8), PARAMETER :: pi = 3.1415926535897932    !pi
real(kind=8), PARAMETER :: c = 2.99792458e08          !Speed of light (m/s)
real(kind=8), PARAMETER :: e0=1.0e07/(4*pi*c**2)      !vacuum permittivity
real(kind=8), PARAMETER :: er=1                                          !relative permittivity
real(kind=8), PARAMETER :: u0=pi*4e-07                              !vacuum permeability
real(kind=8), PARAMETER :: mp=1.6726231e-27           !Proton rest mass(kg)
real(kind=8), PARAMETER :: me=9.1093897e-31           !Electron rest mass(kg)
real(kind=8), PARAMETER :: e=1.60217733e-19           !Elementary charge (C)
END MODULE  my_Constants
!====================================================================================
!
REAL(kind=8) FUNCTION interpolation_c(x,xa,ya,NI) RESULT(retval)
implicit none
real(kind=8),intent(IN):: x
integer,intent(IN)::NI
real(kind=8),intent(IN),DIMENSION (NI):: xa,ya
!real,intent(OUT):: retval
integer:: cur,top,bot
real(kind=8):: numer,denom
logical::dec=0
!
        cur=floor(real(NI)/2)
        top=NI
        bot=1
!
top_if:  if (top>1) then
        dec=(xa(1)>xa(top))
        not_if:if(((.NOT. dec) .AND. (x<xa(1))) .OR.(dec .and. (x>xa(1)))) then
                top=1
        else
                do while(top>bot)
                        log1_if: if(((.NOT. dec) .AND. (x>xa(cur))) .OR.(dec .and. (x<xa(cur)))) then
                                bot=cur
                                cur=floor(real(cur+top)/2)
                        else
                                top=cur
                                cur=floor(real(bot+cur)/2)
                        end if log1_if
                        log2_if: if(top>(bot+1)) then
                                cur=floor(real(bot+top)/2)
                        else
                                bot=top-1
                                exit
                        end if log2_if
                end do
        end if not_if
end if top_if
!----------------------------------
n_if: if (NI <= 1) then
        retval= ya(bot)
end if n_if
eq_if: if (xa(top) == xa(bot)) then
        eq1_if: if (bot == 0) then
                retval= ya(bot)
        end if eq1_if
        retval=ya(top)
end if eq_if
        numer = ( (ya(top) - ya(bot)) * (x - xa(bot)) )
        denom = (xa(top) - xa(bot))
        retval = ya(bot) + ( numer / denom )
END FUNCTION interpolation_c
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fish.yfyh

铜虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
dailjiao0706: 金币+5, ★★★很有帮助 2013-12-17 16:53:23
在写程序接口的时候,你需要确认input是什么?output是什么?然后就好办了。
比如你的input是文件名(当然对应文件已经包含数据),而输出就是你想要的数据xy。
那么接口子程序可以写为
subroutine my_interpolation_c(filename, xy)
然后在这个子程序里面,再去调用 interpolation_c这个函数即可.
2楼2013-12-17 11:28:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 dailjiao0706 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 372求调剂 +3 jj涌77 2026-04-02 3/150 2026-04-02 09:57 by olim
[考研] 土木304求调剂 +6 兔突突突, 2026-03-31 7/350 2026-04-02 09:06 by coolminer
[考研] 调剂推荐 +10 清酒714 2026-03-26 12/600 2026-04-02 07:57 by 尚水阁主
[考研] 324求调剂 +10 hanamiko 2026-03-26 12/600 2026-04-01 16:59 by oooqiao
[考研] 086000生物与医药 初试274求调剂 +5 小叮当来了 2026-03-30 6/300 2026-04-01 14:25 by mxj1203
[考研] 环境工程调剂 +9 hyzzzzzzz. 2026-04-01 9/450 2026-04-01 14:20 by salamander`
[考研] 311求调剂一志愿合肥工业大学 +14 秋二十二 2026-03-30 14/700 2026-04-01 11:45 by chemdavid
[考研] 求调剂:一志愿:南京大学 专业:0705 总分320 ,本科985,四六级已过 +3 lfy760306 2026-03-31 3/150 2026-04-01 01:57 by Creta
[考研] 080500-315分复试调剂 +9 上岸3821 2026-03-31 9/450 2026-03-31 17:29 by 唐沐儿
[考研] 085601 329分调剂 +6 yzsa12 2026-03-31 6/300 2026-03-31 15:23 by yanflower7133
[考研] 334求调剂 +7 Trying] 2026-03-31 7/350 2026-03-31 12:33 by 无际的草原
[考研] 一志愿浙江大学工科动力工程370,数一121,专业课135,现在能去哪里 +3 080700调剂 2026-03-30 4/200 2026-03-31 12:00 by KLMY666
[考研] 266分,求材料相关专业调剂 +10 哇呼哼呼哼 2026-03-30 12/600 2026-03-31 11:00 by 熊一刀
[考研] 南京大学化学调剂 +11 景随风 2026-03-29 16/800 2026-03-31 10:14 by herarysara
[考研] 08工科,295,接受跨专业调剂 +6 lmnlzy 2026-03-30 6/300 2026-03-31 10:04 by cal0306
[考研] 一志愿大连理工大学材料求调剂 +6 Gymno 2026-03-30 6/300 2026-03-31 07:26 by 无际的草原
[考研] 求调剂 +10 家佳佳佳佳佳 2026-03-29 10/500 2026-03-30 18:34 by 544594351
[考研] 材料专硕 085600求调剂 +7 BBQ233 2026-03-30 7/350 2026-03-30 17:44 by oooqiao
[考研] 304求调剂 +6 曼殊2266 2026-03-27 6/300 2026-03-28 14:10 by 唐沐儿
[考研] 266求调剂 +11 阳阳哇塞 2026-03-27 12/600 2026-03-27 17:56 by yu221
信息提示
请填处理意见