24小时热门版块排行榜    

CyRhmU.jpeg
查看: 10742  |  回复: 157
本帖产生 1 个 程序强帖 ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

maomao1210

金虫 (正式写手)

[交流] 【交流】Fortran语言答疑专帖已有46人参与

帖主寄言


其实语言并不是最重要的,形势的载体而已,fortran擅长工程计算,因为工作需要,偶尔用用fortran。在此开贴目的有二:

第一,希望能和大家交流的同时提高和丰富自己;

第二,认识来自五湖四海的朋友。

资料目前还没有整理,有机会整理上传一些。呵呵。


[ Last edited by nono2009 on 2009-11-18 at 10:34 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★
余泽成(金币+5,VIP+0):专家辛苦了! 11-18 10:48
senlia(金币+3,VIP+0):辛苦了!专家同志,能不能麻烦您顺带谢谢是第几行有错误[注释一下就行],方便提问者[毕竟人家也是有疑惑才问嘛,您的思路大概比人家清楚些] 11-18 12:18
senlia(金币+0,VIP+0):顺带写写[不好意思 上面打错两个字] 11-18 12:18
module INTEGRAL
  implicit none
  real, parameter :: t=3000
contains
! 产生数列
   
  subroutine GenerateData(datas, width, f)
    real datas( :   ), width
        real, external :: f
!_ 原来你声明的是integer      
       real r
        integer i,n
        n = size(datas,1)
        width = t/(n-1)
        r = 0
        do i=1,n
               
          datas(i) = f(r)
          r = r+width
       
        end do
               
  end subroutine

   real function f(t)
     implicit none
     real,parameter::x1=1e-7
     real,parameter::d=1e-10
     real,parameter::pi=3.1415926
     real::t
!——请确认你的函数形式正确性
     f=(x1/(60*t*((4*pi*d*t)**0.5)))*exp((-x1)/(4*d*t))
  
        end function


real function Simpson_Integral(datas, width)
  IMPLICIT NONE
  real datas(:    ), width
  real sum
  integer i,n
  n = size(datas,1)
  if ( mod(n,2)==0 ) then
    write(*,*) "要有奇数条数据"
        stop
  end if

  sum = datas(1) + datas(n) ! 先算出头尾的和
  do i=2,n-1
    if ( mod(i,2)==0 ) then
      sum = sum + 4*datas(i) ! 把4*f(x)的部分累加起来
        else
      sum = sum + 2*datas(i) ! 把2*f(x)的部分累加起来
        end if
  end do

  Simpson_Integral = sum * width/3.0        ! SUM再乘上H/3 就好了
  return
end function
end module


! SIMPSON法积分范例
program main
use integral
implicit none
integer,parameter::n=1001
!——这里我去掉了下面的话
!Li real,external::ff

real datas(n),width


call generatedata(datas,width,f)

write(*,*)simpson_integral(datas,width)
stop
end


有些自变量类型不对,还有你的函数也有问题,对比旧的看一下便知道了。。

[ Last edited by maomao1210 on 2009-11-18 at 13:22 ]
54楼2009-11-18 10:45:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 158 个回答

stereochemistry


小木虫(金币+0.5):给个红包,谢谢回帖交流
你好,最近写程序遇见一个问题,一个对称矩阵想线性存储,请问怎么实现呢?
2楼2009-06-01 12:32:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maomao1210

金虫 (正式写手)

★ ★ ★ ★ ★
wangen994(金币+2,VIP+0):鼓励一下,哈哈 6-4 11:55
gwdavid(金币+3,VIP+0):辛苦了!答疑帖加大奖励力度!;) 6-7 10:32
wangen994(金币+0,VIP+0):请你讲九月份十月份的参与应助的帖子整理附在http://emuch.net/bbs/viewthread.php?tid=1358729&fpage=1后面,以便发放津贴 11-9 19:00
哦。我给你举个例子吧,比如对称矩阵 A[3,3]
                              A(1,1)     A(1,2)     A(1,3)
                              A(2,1)     A(2,2)     A(2,3)
                              A(3,1)     A(3,2)     A(3,3)
只要存储成一个一维数组即可: B(1)=A(1,1),B(2)=A(2,1),B(3)=A(2,2), B(4)=A(3,1),B(5)=A(3,2),B(6)=A(3,3).
还要记住这个: 行和列与存储该值的关系为:II=MAX(I,J)*(MAX(I,J)+1)/2+MIN(I,J), 那么B(II)==A(I,J).
不知道我讲的能听懂与否。如果不懂,继续发问。
3楼2009-06-01 12:41:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anbb1009

金虫 (正式写手)


小木虫(金币+0.5):给个红包,谢谢回帖交流
我同意楼上的观点,因为我以前也这样做过,而且效果不错,但顺便问一下:目前fortran中用的最好的求 非线性方程一组实根的方法有哪几种,有没有现成的子程序?谢谢
4楼2009-06-05 14:35:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通表情 高级回复(可上传附件)
信息提示
请填处理意见