购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4-7 专题:温度转换/房贷问题/面积/经纬度距离/高斯数学

4-7-1 设计摄氏温度和华氏温度的转换

摄氏温度 (Celsius,C)的由来是在标准大气压环境,水的凝固点是0℃、沸点是100℃,中间划分100等份,每个等份是1℃。这样命名是为了纪念瑞典科学家 安德斯·摄尔修斯 (Anders Celsius)。

华氏温度 (Fahrenheit,F)的由来是在标准大气压环境,水的凝固点是32℉、水的沸点是212℉,中间划分180等份,每个等份是1℉。这是为了纪念德国科学家 丹尼尔·加布里埃尔·华伦海特 (Daniel Gabriel Fahrenheit)。

摄氏 华氏 温度互转的公式如下:

摄氏 温度 = ( 华氏 温度 – 32 ) * 5 / 9 华氏 温度 = 摄氏 温度 * ( 9 / 5 ) + 32

程序实例ch4_28.py: 请输入华氏温度,这个程序会输出摄氏温度。

执行结果

4-7-2 房屋贷款问题

假设已知条件是:

· 贷款金额 :笔者使用loan当变量

· 贷款年限 :笔者使用year当变量

· 年利率 :笔者使用rate当变量

然后我们需要利用上述条件计算下列结果:

· 每月还款金额 :笔者用monthlyPay当变量

· 总共还款金额 :笔者用totalPay当变量

处理这个贷款问题的数学公式如下:

银行的习惯是用年利率,所以碰上这类问题我们需要将所输入的利率先除以100,这是转成百分比,同时要除以12表示是月利率。可以用下列方式计算月利率,笔者用monthrate当变量。

     monthrate = rate / (12*100)                   # 第5行

为了不让求每月还款金额的数学式变得复杂,笔者将分子(第8行)与分母(第9行)分开计算,第10行则是计算每月还款金额,第11行是计算总共还款金额。

程序实例ch4_29.py: 根据已知条件计算还款金额。

执行结果

4-7-3 正五角形面积

假设正五角形边长是s,其面积的计算公式如下:

上述计算正五角形面积需要使用数学的PI(π)和tan( ),虽然我们可以使用3.14159代替,不过笔者此处先引导读者学习使用Python的数学模块,可以使用import math导入此数学模块。

程序实例ch4_30.py: 请输入正五角形的边长s,此程序会计算此正五角形的面积。

执行结果

我们可以将上述概念扩充应用在正多边形面积计算中。

4-7-4 使用math模块与经纬度计算地球任意两点的距离

math 是标准函数库模块,由于没有内置在Python直译器内,所以使用前需要导入此模块,导入方式是使用 import ,可以参考语法: import math。

导入模块后,可以在Python的IDLE环境使用dir(math)了解此模块提供的 属性 函数 (或称 方法 )。

下列是常用的math模块的 属性 函数

· pi :PI值(3.14152653589753),直接设定值称 属性

· e :e值(2.718281828459045),直接设定值称 属性

· inf :极大值,直接设定值称 属性

· ceil(x) :回传大于x的最小整数,例如,ceil(3.5) = 4。

· floor(x) :回传小于x的最大整数,例如,floor(3.9) = 3。

· trunc(x) :删除小数位数。例如,trunc(3.5) = 3。

· pow(x,y) :可以计算x的y次方,相当于x**y。例如,pow(2,3) = 8.0。

· sqrt(x) :开根号,相当于x**0.5,例如,sqrt(4) = 2.0。

· radians( ) :将 角度 转成 弧度 ,常用在三角函数中。

· degrees( ) :将 弧度 转成 角度

· 三角函数: sin( ) cos( ) tan( )等, 参数是 弧度

· 不同底的对数函数: log( ) log10( ) log2( ) 等。

在使用上述math模块时,必须在前面加math,例如: math.p i或 math.ceil(3.5) 等,此概念应用在上述所有模块的函数操作。有了上述概念就可以进入本节的主题了。

地球是圆的,我们可以使用经度和纬度了解地球上每一个点的位置。有了2个地点的经纬度后,可以使用下列公式计算彼此的距离。

     distance = r*acos(sin(x1)*sin(x2)+cos(x1)*cos(x2)*cos(y1-y2))

上述 r 是地球的半径,约 6371 千米,由于Python的三角函数 参数 皆是 弧度 (radians),我们使用上述公式时,须使用math.radian( )函数将 经纬度角度 转成 弧度 。上述公式 西经 北纬 正值 东经 南纬 负值

经度坐标为-180° ~ 180° 纬度坐标为-90° ~ 90° ,虽然我们习惯称经纬度,在用小括号表达时却是( 纬度 , 经度 ),也就是第一个参数是 纬度 ,第二个参数是 经度

获得经纬度最简单的方式是开启Google地图,开启后就可以看到我们目前所在地点的经纬度,点选其他地点就可以看到所选地点的经纬度信息。

程序实例ch4_31.py: 香港红磡车站的经纬度是(22.2839, 114.1731),台北车站的经纬度是(25.0452, 121.5168),请计算台北车站至香港红磡车站的距离。

执行结果

4-7-5 鸡兔同笼:解联立方程式

“今有鸡兔同笼,上有三十五头,下有百足,问鸡兔各几何?”这是古代的数学问题,表示一个笼子里有35个头、100只脚,然后问笼子里面有几只鸡与几只兔子。鸡有1个头、2只脚,兔子有1个头、4只脚。我们可以使用基础数学解此题目,也可以使用循环解此题目,这一小节笔者将使用基础数学的联立方程式解此问题。

如果使用基础数学,x代表chicken,y代表rabbit,可以用下列公式推导。

经过推导可以得到下列结果:

假设f是脚的数量,h代表头的数量,可以得到下列公式:

     x(chicken) = f / 2 – h
     y(rabbit) = 2h – f / 2

程序实例ch4_32.py: 请输入头和脚的数量,本程序会输出鸡的数量和兔的数量。

执行结果

并不是每个输入皆可以获得解答,必须是合理的数字。

4-7-6 高斯数学(计算等差数列和)

约翰·卡尔·弗里德里希·高斯(Johann Karl Friedrich Gauss,1777—1855)是德国数学家。他在9岁时就发明了等差数列求和的计算技巧,在很短的时间内计算了1~100的整数和。使用的方法是将第1个数字与最后1个数字相加得到101,将第2个数字与倒数第2个数字相加得到101,然后依此类推,可以得到50个101,然后执行50 * 101,最后得到解答。

程序实例ch4_33.py: 使用等差数列计算1~100的总和。

执行结果 kWMpbUOiRyTVtzwECS9xBWm1pg/MnIvVykNgpouBv4FjcuJsP9PFyCx8WD9AFy2a

点击中间区域
呼出菜单
上一章
目录
下一章
×