Fortran 程序设计 作业01

本文档介绍了一个Fortran程序设计实例,用于计算基于经验公式的饱和水汽压,并分析其与温度的关系。程序采用循环结构,允许用户输入不同温度值,分别运用两个经验公式E1和E2计算水汽压,并对比结果。随着温度升高,E1和E2均增加,且两者间的差异增大。通过数据表格和图形展示,揭示了饱和水汽压随温度上升的趋势以及两个公式的差异性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求

​ 设计程序,输入气温,通过给定的经验公式1和2 输出水汽压数值,并比较二者结果在数值上的差异,同时考察饱和水汽压与温度之间的关系。

​ 所给定的经验公式如下
E1=E0×107.45t237.3+t E_1=E_0\times10^{\frac{7.45t}{237.3+t}} E1=E0×10237.3+t7.45t

E2=E0×e16.67t243.5+t E_2=E_0\times e^{\frac{16.67t}{243.5+t}} E2=E0×e243.5+t16.67t

题设分析

​ 按照 “输入-执行-输出” 三步进行程序设计,首先审题:输入气温,代入公式,输出水汽压数值。

​ 在Fortran中,该二者在IDE中的公式书写方式可以如下:

E1=E0*10**((7.45*t)/(237.3+t))

E2=E0*exp((17.67*t)/(243.5+t))

​ 其中,E1E_1E1E2E_2E2是题目给定的经验公式需要输出的水汽压值,E0E_0E0是给定的一个浮点数值,为6.11;A**B 在Fortran中为乘方运算符(双目);exp()eee指数函数,精度较高。

​ 因此在程序设计中,由于温度的数值可以为整数,同时也可以为小数,因此我们需要定义一个实型变量ttt,通过用户输入气温t的值,以进行后面的数据输出以及分析。

​ 而在Fortran中,定义变量的语法如下

real A,B,C,D...     !即:变量类型 变量名1,变量名2...

​ 所以我们程序可以初步完成如下:

program main

implicit none

real e0,e1,e2,t        !变量定义及初始化
e0=6.11

read *,t				!程序正常运行
E1=E0*10**((7.45*t)/(237.3+t))
E2=E0*exp((17.67*t)/(243.5+t))
print *,'e1=',e1,'e2=',e2	!输出水汽压值

end program main

​ 我们的程序设计初步如上,可以多次执行该程序,记录下运行结果,再进行分析。

​ 但这样做,多次执行了同样的步骤,而这样的操作是较为浪费时间的,因此我们可以使用循环结构让计算机快速多次执行我们所需要的语句。

​ 这里我们使用 do while() 语句来实现我们所需要的循环,do while () 语句语法如下:

do while (循环退出条件)
	循环体内语句
end do

​ 例如:

do while (i.le.3)
	print *,'f'
end do

​ 控制台中将会出现三个 f 。

​ 于是我们将前程序优化如下:

program mainn

implicit none

	REAL e1,e2,e0,t
	integer i         !定义循环控制变量
    i=0
    e0=6.11

    do while (i.le.5) !循环控制变量为5时退出循环
       read *,t       !读入用户输入数据
       e1=e0*10**((7.45*t)/(237.3+t))
       e2=e0*exp((17.67*t)/(243.5+t))
       print *,'e1=',e1,'e2=',e2
       i=i+1
    end do

end program mainn

​ 我们编译并运行上述程序,按一定梯度输入气温数据,可以得到程序运行的结果如下:

tttE1E_1E1E2E_2E2
1012.2212.26
2023.1823.36
3041.8942.44
4072.5573.92
50120.94123.98
60194.79200.97

​ 通过表格数据,不难发现,随着气温的升高,E1E_1E1E2E_2E2均有升高的趋势。

​ 同时,我们也不难发现E1E_1E1E2E_2E2之间存在数值上的差异,其中E1E_1E1小于E2E_2E2,并且输入的温度值越高,其差异越大。

​ 我们可以利用一些数学绘图软件来进行两条经验公式的函数图像绘制。例如下图:

img
可以看到在低温状况下两条经验公式重合度较高,但随着温度的增加,两条曲线分岔渐大,说明二者差异随着温度的升高而不断加大。

(优快云居然不支持Fortran,👴吐啦!)

著作权归作者所有,如望转载,请联系作者获得许可。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值