Fortran 程序设计 作业01

题目要求

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

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

E 2 = E 0 × e 16.67 t 243.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))

​ 其中, E 1 E_1 E1 E 2 E_2 E2是题目给定的经验公式需要输出的水汽压值, E 0 E_0 E0是给定的一个浮点数值,为6.11;A**B 在Fortran中为乘方运算符(双目);exp() e e e指数函数,精度较高。

​ 因此在程序设计中,由于温度的数值可以为整数,同时也可以为小数,因此我们需要定义一个实型变量 t t t,通过用户输入气温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

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

t t t E 1 E_1 E1 E 2 E_2 E2
1012.2212.26
2023.1823.36
3041.8942.44
4072.5573.92
50120.94123.98
60194.79200.97

​ 通过表格数据,不难发现,随着气温的升高, E 1 E_1 E1 E 2 E_2 E2均有升高的趋势。

​ 同时,我们也不难发现 E 1 E_1 E1 E 2 E_2 E2之间存在数值上的差异,其中 E 1 E_1 E1小于 E 2 E_2 E2,并且输入的温度值越高,其差异越大。

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

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

(CSDN居然不支持Fortran,👴吐啦!)

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

  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值