24小时热门版块排行榜    

查看: 926  |  回复: 5
当前主题已经存档。

hym5701

木虫 (小有名气)

[交流] 【求助】求fortran 求函数导数和复数积分的程序

那位能提供一下计算任意函数的导数和复数积分的fortran小程序啊,由于时间紧,没时间编程了,而且对fortran也不是很内行,希望大家帮帮忙谢谢了。提供地址或发到邮箱hym97353@163.com,小程序测试通过的话,20金币送上。^_^

[ Last edited by hym5701 on 2008-12-22 at 23:46 ]
回复此楼

» 猜你喜欢

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

woshilsh

荣誉版主 (职业作家)

优秀版主

★ ★ ★ ★
hym5701(金币+2,VIP+0):这个我有。不过还是谢谢了,就时间紧,没空看,所以就请大家帮忙直接给个咯,呵呵
lei0736(金币+2,VIP+0):谢谢
有本 彭国伦  Fortran95程序设计   的教程,论坛应该有的下载,你下载了看看!呵呵,纯属建议
[center][url=http://www.91cool.net/][img]http://id.91cool.net/sign/?name=小木虫印&say=各位版主辛苦了![/img][/url][/center]
2楼2008-12-23 11:04:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liyi3344520

木虫 (正式写手)

★ ★ ★ ★ ★ ★ ★
hym5701(金币+5,VIP+0):谢谢提供,不过想问下,这里如何体现复数
lei0736(金币+2,VIP+0):谢谢
复数积分(来自Fortran常用算法程序集-徐士良)
变步长梯形求积法
        SUBROUTINE FFFTS(A,B,F,EPS,T)
        DOUBLE PRECISION A,B,F,T,FA,FB,H,T1,S,X
        FA=F(A)
        FB=F(B)
        N=1
        H=B-A
        T1=H*(FA+FB)/2.0
5        S=0.0
        DO 10 K=0,N-1
          X=A+(K+0.5)*H
          S=S+F(X)
10        CONTINUE
        T=(T1+H*S)/2.0
        IF (ABS(T1-T).GE.EPS) THEN
          T1=T
          N=N+N
          H=H/2.0
          GOTO 5
        END IF
        RETURN
        END
3楼2008-12-23 11:50:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liyi3344520

木虫 (正式写手)

★ ★ ★
lei0736(金币+3,VIP+0):谢谢
求非线性方程实根的对分法(来自Fortran常用算法程序集-徐士良)
        SUBROUTINE DDHRT(A,B,H,EPS,X,N,M,F)
        DIMENSION X(N)
        M=0
        Z=A
        Y=F(Z)
10        IF ((Z.GT.B+H/2.0).OR.(M.EQ.N)) RETURN
        IF (ABS(Y).LT.EPS) THEN
          M=M+1
          X(M)=Z
          Z=Z+H/2.0
          Y=F(Z)
          GOTO 10
        END IF
        Z1=Z+H
        Y1=F(Z1)
        IF (ABS(Y1).LT.EPS) THEN
          M=M+1
          X(M)=Z1
          Z=Z1+H/2.0
          Y=F(Z)
          GOTO 10
        END IF
        IF (Y*Y1.GT.0.0) THEN
          Y=Y1
          Z=Z1
          GOTO 10
        END IF
20        IF (ABS(Z1-Z).LT.EPS) THEN
          M=M+1
          X(M)=(Z1+Z)/2.0
          Z=Z1+H/2.0
          Y=F(Z)
          GOTO 10
        END IF
        Z0=(Z1+Z)/2.0
        Y0=F(Z0)
        IF (ABS(Y0).LT.EPS) THEN
          M=M+1
          X(M)=Z0
          Z=Z0+H/2.0
          Y=F(Z)
          GOTO 10
        END IF
        IF (Y*Y0.LT.0.0) THEN
          Z1=Z0
          Y1=Y0
        ELSE
          Z=Z0
          Y=Y0
        END IF
        GOTO 20
        END


4楼2008-12-23 11:59:47
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

king_zhc

木虫 (著名写手)

最简单的方法,就是用VF6.5版本提供的IMSL程序库

只要在主程序中加入use IMSL
然后看手册,查询函数,直接写入参数即可。
5楼2009-02-27 23:54:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

king_zhc

木虫 (著名写手)

这里给出利用IMSL库求函数导数的方法:

在主程序声明部分后面加入:use imsl

利用IMSL的DERIV函数,形式如下:
DERIV(FCN, KORDER, X, BGSTEP, TOL)

FCN:为用户定义函数;
KORDER:需要求导的阶数,最高到3阶导数;
X:求导点
BGSTEP:起始求导步长
TOL:容差
6楼2009-02-28 00:06:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 hym5701 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见