FORTRAN+计算物理学学习日记(6)
![](/assets/blank.gif)
program mainimplicit noneinteger(8)::n,i,kreal(8),external::ff,fbreal(8)::h,x(100),y(100),ya(100),yb(100),yc(100),ka(100),kb(100),kc(100),kd(100)h=0.05n=40open(unit=99,file="xable.csv")open(unit=100,file="R-K2.csv")open(unit=101,file="R-K3.csv")open(unit=102,file="R-K4.csv")open(unit=103,file="exact.csv")do i=1,n+1,1x(i)=(i-1)*hwrite(99,*)x(i)end doclose(99)
!This is second-order Runge-Kutta algorithmya(1)=1write(100,*)ya(1)do i=1,n,1ka(i)=h*ff(x(i),ya(i))kb(i)=h*ff(x(i)+h,ya(i)+ka(i))ya(i+1)=ya(i)+0.5*ka(i)+0.5*kb(i)write(100,*)ya(i+1)end doclose(100)
!This is third-order Runge-Kutta algorithmyb(1)=1write(101,*)yb(1)do i=1,n,1ka(i)=h*ff(x(i),yb(i))kb(i)=h*ff(x(i)+0.5*h,yb(i)+0.5*ka(i))kc(i)=h*ff(x(i)+h,yb(i)-ka(i)+2*kb(i))yb(i+1)=yb(i)+(ka(i)+4.0*kb(i)+kc(i))/6.0write(101,*)yb(i+1)end doclose(101)
!This is fourth-order Runge-Kutta algorithmyc(1)=1write(102,*)yc(1)do i=1,n,1ka(i)=h*ff(x(i),yc(i))kb(i)=h*ff(x(i)+0.5*h,yc(i)+0.5*ka(i))kc(i)=h*ff(x(i)+0.5*h,yc(i)+0.5*kb(i))kd(i)=h*ff(x(i)+h,yc(i)+kc(i))yc(i+1)=yc(i)+(ka(i)+2.0*kb(i)+2.0*kc(i)+kd(i))/6.0write(102,*)yc(i+1)end doclose(102)
!This is the exact solutiondo i=1,n+1,1y(i)=fb(x(i))write(103,*)y(i)end doclose(103)
end program main!!exact solution 的function函数
function fb(x)implicit nonereal(8)::xreal(8)::fbfb=dexp(-x*x/2)return
end
!!-x*y的function函数
function ff(x,y)implicit nonereal(8)::x,yreal(8)::ffff=-x*yreturn
end
绘制图像
遇到问题:1.A specification statement cannot appear in the executable section.为将主程序关闭
2.存储文件空白,数组定义过小
FORTRAN+计算物理学学习日记(6)相关推荐
- FORTRAN+计算物理学学习日记(1)
第一周:结合李录的计算物理学学习FORTRAN语言,这周的任务是插值函数,大致编写了四个小时,编写了一个双层循环的插值函数,进行了六次插值计算例题. 例题如下: 编写代码如下: program mai ...
- FORTRAN+计算物理学学习日记(2)
利用Fortran编写数值微分函数,利用向前向后两点式以及五点式求微分. 以上节例题为模板,编写向前向后两点式如下: !在例一的条件上,计算两点一次插值的微商,编写向前两点式,向后两点式 progra ...
- FORTRAN+计算物理学学习日记(5)
2.1常微分方程的简单数值解法 本节编写了四种简单的数值方法去求解常微分方程的初始问题,包括 Euler 方法.Taylor 级数 法.后向 Euler 方法和梯形公式. 注意点:定义格式或者数组定义 ...
- FORTRAN+计算物理学学习日记(7)
2.3多步法求解常微分方程 program mainimplicit noneinteger(8)::n,m,i,kreal(8),external::fa,fbreal(8)::h,x(200),y ...
- FORTRAN+计算物理学学习日记(4)
1.5基本数学运算中的求根 方法一:区间对分法求根 书中例题及编写代码如下 !!利用区间对分法求根 program mainimplicit nonereal(8)::a,b,x,t,ya=2b=3x ...
- FORTRAN+计算物理学学习日记(8)
第三章 边值问题和本征值问题 3.1numerov算法 例题 program mainimplicit noneinteger(8)::i,nreal(8)::x(600),y(600),a,h,pi ...
- Java学习日记-Day01
Java学习日记-Day01 Java语言概述 比特(byte)与字节 内存 Java基础知识图解 人机交互方式 常用的DOS命令 常用快捷键 计算机编程语言介绍 第一代语言 第二代语言 第三代语言 ...
- 深度学习日记 2 - 概率论与信息论基础
深度学习日记 2 - 概率论与信息论基础: 1.随机变量(random variable):是可以随机地取不同值的变量.我们通常用打印机 体的小写字母来表示随机变量本身,而用脚本字体中的小写字母来表示 ...
- GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考
GPU(CUDA)学习日记(十一)------ 深入理解CUDA线程层次以及关于设置线程数的思考 标签: cuda存储线程结构网格 2012-12-07 16:30 6298人阅读 评论(4)收藏 举 ...
最新文章
- js:appendChild、insertBefore和insertAfter
- 「学习笔记」多项式相关
- ubuntu如何杀死进程
- hdu1202解题报告
- 某8086cpu构成的微型计算机,微型计算机原理及应用试题及答案
- 网站选择按钮点击无反应?_Win10系统电脑鼠标左键单击没有反应的解决办法
- 合肥工贸高级技工学校计算机系,合肥工贸高级技工学校扎实推进“新技工系统培养”民生工程...
- 广西农业职业技术学院计算机,学科分类与代码-广西农业职业技术学院.doc
- 数据结构——图的概述
- 算法交易的机遇和挑战
- java keystore php,KeyStoreSpi
- IDO已经OUT ?3分钟了解NFT的新玩法INO
- CSS实现最简洁的四角边框
- 如何在 iPhone 上设置整点报时提醒?
- 10张思维导图,全面讲解 Pandas
- HDU2102(KB2-I)
- 天书奇谈3D服务端搭建架设教程Centos
- 2005岁末BLOG程序大评点
- 「CSA49」Bunny on Number Line
- libyuv交叉编译