24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 756  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 初试301,代码085701环境工程,本硕一致,四六级已过,有二区一作,共发表5篇论文 +6 axibli 2026-04-01 6/300 2026-04-02 13:42 by Ecowxq666!
[考研] 环境285分,过六级,求调剂 +6 xhr12 2026-04-02 6/300 2026-04-02 13:38 by sun200805022
[考研] 265求调剂 +4 梁梁校校 2026-04-01 4/200 2026-04-02 13:06 by yulian1987
[考研] 282求调剂 +11 呼吸都是减肥 2026-04-01 11/550 2026-04-02 12:58 by GouQ
[考研] 求调剂!生物与医药专硕 +4 逆转陆先生 2026-04-01 4/200 2026-04-02 11:51 by xiaoranmu
[考研] 291求调剂 +20 Y-cap 2026-03-29 25/1250 2026-04-01 23:49 by 欣喜777
[考研] 279求调剂 +7 莫xiao 2026-04-01 7/350 2026-04-01 22:05 by 客尔美德
[考研] 江苏科技大学招材料研究生 +4 Su032713. 2026-04-01 5/250 2026-04-01 22:03 by cccchenso
[考研] 调剂 +3 好好读书。 2026-04-01 5/250 2026-04-01 15:39 by 好好读书。
[考研] 318求调剂 +8 七忆77 2026-04-01 8/400 2026-04-01 10:37 by Jaylen.
[考研] 311(085601)求调剂 +12 liziyeyeye 2026-03-28 13/650 2026-04-01 00:34 by fmesaito
[考研] 0856求调剂 +9 楒桉 2026-03-28 9/450 2026-03-31 19:06 by 暮泽12
[考研] 322求调剂:一志愿湖南大学 材料与化工(085600),已过六级。 +10 XX小邓 2026-03-29 10/500 2026-03-31 16:46 by 不吃魚的貓
[考研] 学硕274求调剂 +17 Li李鱼 2026-03-26 17/850 2026-03-31 15:19 by 客尔美德
[考研] 287求调剂 +17 land xuxu 2026-03-26 17/850 2026-03-31 11:16 by Zzxxxs
[考研] 105500药学求调剂,一志愿山东大学药学,348分 +3 gr哈哈哈 2026-03-28 3/150 2026-03-30 18:56 by 源_2020
[考研] 求调剂 +10 张zz111 2026-03-27 11/550 2026-03-30 09:17 by 无际的草原
[考研] 一志愿南京航空航天大学材料学硕求调剂 +3 @taotao 2026-03-28 3/150 2026-03-28 10:26 by JourneyLucky
[考研] 08开头275求调剂 +4 拉谁不重要 2026-03-26 4/200 2026-03-27 14:12 by Delta2012
[考研] 298调剂 +3 jiyingjie123 2026-03-27 3/150 2026-03-27 11:57 by wxiongid
信息提示
请填处理意见