长沙网站优化诊断,特效网站,设计师有哪些种类,怎么做视频解析网站以下内容转载本人公众号#xff1a;易木木响叮当
Fortran是一门上世纪古老的科学计算语言#xff0c;具有强大的计算能力#xff0c;虽然没有现在的主流语言热门#xff0c;但对于想从事有限元二次开发的童鞋来言#xff0c;是一个不得不跨过去的槛儿#xff0c;Fortran…以下内容转载本人公众号易木木响叮当
Fortran是一门上世纪古老的科学计算语言具有强大的计算能力虽然没有现在的主流语言热门但对于想从事有限元二次开发的童鞋来言是一个不得不跨过去的槛儿Fortran语言用于自己领域进行开发计算时往往不需要高深的算法只需了解简单的语法规则及循环之类结构即可。木木在刚开始学习Fortran时遇到疑惑会问一问身边的同学有没有用过Fortran大多数情况是Fortran?那是啥语言我......现如今使用的人确实很少若不是自己对二次开发感兴趣我也不会去触碰它~
本文先向大家简单介绍一个二分法的fortran程序然后推荐大家使用一些轻便的编译器最后推荐一下学习的书籍、论坛。 Fortran程序分为自由格式与固定格式固定格式太太太难看了阅读起来也很费力但大多数遗留下来的有限元程序是按照固定格式来编译的木得办法自由格式阅读起来就比较友好了接下来就用自由格式来编写一个二分法程序固定格式相关的将会在以后的推文中涉及。 ! 二分法求解
module numericalimplicit nonereal,parameter :: zero0.00001
contains
! 二分法求解程序real function bisect(A,B,func)implicit nonereal A,B !输入的值real C !用来算(AB)/2real FA !记录F(A)real FB !记录F(B)real FC !记录F(C)real,external :: func !求解的函数
! 先求出CF(C)的值C(AB)/2.0FCfunc(C)
! FC小于zero时就视F(C)0结束循环do while(abs(fc)zero)FAfunc(A)FBfunc(B)if(FA*FC0) then! f(a)*f(c)0, 以a,c为新的区间BCC(AB)/2.0else! 不然就是以b,c为新的区间ACC(AB)/2.0end if! 求出新的f(c)的值FCfunc(c)end dobisect Creturnend function! 求解用的函数 real function f(x)implicit nonereal xf(x3)*(x-3)returnend function
end module numericalprogram mainuse numericalimplicit nonereal A,B !两个猜测值real ANS !算出do while(.true.)write(*,*) 输入两个猜测值read(*,*) A,B! f(a)*f(b)0 的猜测值才是有效的猜测值if(f(a)*f(b)0)exitwrite(*,*) 不正确的猜测值end do! 调用二分法求根的函数ANSbisect(A,B,f)! 显示结果write(*,(x,F6.3))ansstop
end program main
本程序采用Module将代码块进行封装程序中用到的变量、function、subroutine整理到Module中用的时候只需要Use一下就可如行48。程序中一些语法、注意的细节将会在以后专门设立一个Fortran的栏目中进行讲解。
木木最开始用的编译器是VSIVF后来发现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即可