Fortran基础编程(入门简介篇)

以下内容转载本人公众号:易木木响叮当

Fortran是一门上世纪古老的科学计算语言,具有强大的计算能力,虽然没有现在的主流语言热门,但对于想从事有限元二次开发的童鞋来言,是一个不得不跨过去的槛儿,Fortran语言用于自己领域进行开发计算时,往往不需要高深的算法,只需了解简单的语法规则及循环之类结构即可。木木在刚开始学习Fortran时,遇到疑惑会问一问身边的同学有没有用过Fortran,大多数情况是,Fortran?那是啥语言?我......现如今使用的人确实很少,若不是自己对二次开发感兴趣,我也不会去触碰它~

本文先向大家简单介绍一个二分法的fortran程序,然后推荐大家使用一些轻便的编译器,最后推荐一下学习的书籍、论坛。


Fortran程序分为自由格式固定格式,固定格式太太太难看了,阅读起来也很费力,但大多数遗留下来的有限元程序是按照固定格式来编译的(木得办法),自由格式阅读起来就比较友好了,接下来就用自由格式来编写一个二分法程序,固定格式相关的将会在以后的推文中涉及。


! 二分法求解
module numerical
  implicit none
  real,parameter :: zero=0.00001
contains
!   二分法求解程序
  real function bisect(A,B,func)
  implicit none
  real A,B    !输入的值
  real C     !用来算(A+B)/2
  real FA    !记录F(A)
  real FB   !记录F(B)
  real FC   !记录F(C)
  real,external :: func  !求解的函数
!  先求出C,F(C)的值
  C=(A+B)/2.0
  FC=func(C)
!  FC小于zero时,就视F(C)=0,结束循环
  do while(abs(fc)>zero)
    FA=func(A)
    FB=func(B)
    if(FA*FC<0) then
    !  f(a)*f(c)<0, 以a,c为新的区间
      B=C
      C=(A+B)/2.0
    else
    !  不然就是以b,c为新的区间
      A=C
      C=(A+B)/2.0
      end if
      !  求出新的f(c)的值
      FC=func(c)
  end do
  bisect = C
  return
  end function

!  求解用的函数 
  real function f(x)
  implicit none
  real x
  f=(x+3)*(x-3)
  return
  end function
end module numerical

program main
  use numerical
  implicit none
  real A,B   !两个猜测值
  real ANS   !算出
  do while(.true.)
    write(*,*) '输入两个猜测值'
    read(*,*) A,B
    !  f(a)*f(b)<0 的猜测值才是有效的猜测值
    if(f(a)*f(b)<0)exit
    write(*,*) "不正确的猜测值"
  end do
  !   调用二分法求根的函数
  ANS=bisect(A,B,f)
  !   显示结果
  write(*,"('x=',F6.3)")ans
  stop
end program main

本程序采用Module将代码块进行封装,程序中用到的变量、function、subroutine,整理到Module中,用的时候只需要Use一下就可,如行48。程序中一些语法、注意的细节将会在以后专门设立一个Fortran的栏目中进行讲解。

木木最开始用的编译器是VS+IVF,后来发现VS占用系统资源很多,卸载也很麻烦,用起来不顺手,现在我用的是Simply Fortran编译器,小巧轻便(100M左右),很很很好用,Simply Fortran安装包及简单的说明手册在文末获取。界面大致长这个样子:

B站有的教学视频也用的是这个编译器,大家有兴趣可以看一下。还有一个有意思的在线编译FORTRAN网站:http://fortran.jsrun.net/ 。界面大致长介个样子:

接下来就是推荐书籍和论坛了。书籍毫无疑问当然是台湾大学彭国伦先生的《Fortran 95 程序设计》,书里面有自由格式的程序,也有对应固定格式的程序,双管齐下,大家有兴趣可以点击了解一下。国内论坛的话推荐:http://fcode.cn/guide-61-1.html 很不错的Fortran交流论坛,里面有大量的资料,代码,工具免费使用,国外的话,大家都懂得(Github)。

Simply Fortran获取方式:后台回复Simply即可

  • 9
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

易木木木响叮当

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值