基于Python语言的应用数学案例教学

2020-12-08 03:44张茁杨晓峰
数码设计 2020年16期
关键词:Python语言应用数学程序

张茁 杨晓峰

基金项目:基于Hadoop的非标准化物流配货数据分析与应用研究 课题编号:2017JJ5042

摘要:在大数据应用数学这门课程中,不仅要求教师能教授必要的数学知识,也要让同学们学会如何将数学知识运用到Python语言程序当中去,将程序语言的功能最大化。本文通过一个线性代数应用案例讲解如何使用Python编程实现数学问题,并优化程序,使其具有更好的通用性和可推广性。

关键词:应用数学;大数据;Python语言;程序

中图分类号:G642;O151.2-4   文献标识码:A   文章编号:1672-9129(2020)16-0117-01

大数据应用数学课程开设之前学生已初步掌握了Python语言的语法和基本功能实现,在学习大数据应用数学课程上学生学习了更多Python语言在数学问题上的实现。对于有的应用问题来说,仅仅实现数学问题的计算并不能很好体现计算机语言的优势,计算机语言本身具有的判断、循环作用也可以很好的应用的数学问题中,使得程序更加的智能和具有可推广性。

下面以教材当中的一个线性代数的应用案例来说明如何将Python程序设计得更加智能和具有可推广价值。

案例:设有甲、乙、丙3种酒,重要成分A、B、C的各自含量如表1所示。调酒师现要用这3种酒配出另一种酒,使其中A、B、C的含量分别为66.5%、18.5%、15%,请问能否配出合乎要求的酒?如果能,3种酒的比例如何分配?当甲酒缺货时,能否用3种主要成分含量为(0.8,0.12,0.08)的丁酒代替?

表1 甲、乙、丙3种酒的主要成分含量

ABC

甲 酒0.70.20.1

乙 酒0.60.20.2

丙 酒0.650.150.2

分析:設甲、乙、丙3种酒的成分含量依次为x1、x2、x3,则

0.7x1+0.6x2+0.65x3=a0.2x1+0.2x2+0.15x3=b0.1x1+0.2x2+0.2x3=c   (1)

甲、乙、丙3种酒中都含有A、B、C三种成分,要能配出新酒使得新酒中A、B、C三种成分的含量分别为a、b、c,就是要使得方程组(1)在区间[0,1]有实数解,其实数解即为甲、乙、丙3种酒的比例;方程组若在区间内无实数解则不能按要求配出。将甲酒改为丁酒即将方程组中3个方程的第一个系数依次改为丁酒的成分含量即可。

解:设甲、乙、丙3种酒的成分含量依次为x1、x2、x3,则(1)式中的a、b、c依次取66.5%、18.5%、15%,解得(x1,x2,x3)为(0.5,0.2,0.3),即可以用甲、乙、丙3种酒配出A、B、C的含量分别为66.5%、18.5%、15%的新酒,且甲、乙、丙3种酒的比例依次为50%、20%、30%。

用笔算解这个方程组并不是十分容易(此处省略运算步骤),但是用Python的库函数十分的简单。输入命令:

import numpy as np

D = np.array([[0.7,0.6,0.65],[0.2,0.2,0.15],[0.1,0.2,0.2]]) # 创建系数行列式

arr = np.array([0.665,0.185,0.15])

x = np.linalg.solve(D, arr)

print('方程组的解为:', x)

输出结果:

方程组的解为:[0.5 0.2 0.3]

将甲酒改成丁酒后,类似的设丁、乙、丙3种酒的成分含量依次为x1、x2、x3,则(1)式中x1的系数依次改为(0.8,0.12,0.08),解得(x1,x2,x3)为(0.41666667,0.95,-0.36666667),不全为正数,即不可以用丁酒代替甲酒配出A、B、C的含量分别为66.5%、18.5%、15%的新酒。

Python输入命令:

import numpy as np

D = np.array([[0.8,0.6,0.65],[0.12,0.2,0.15],[0.08,0.2,0.2]]) # 创建系数行列式

arr = np.array([0.665,0.185,0.15])

x = np.linalg.solve(D, arr)

print('方程组的解为:', x)

输出结果:

方程组的解为:[ 0.41666667,0.95,-0.36666667]

此处我们只用到了程序语言的计算功能,最后的判断还是要人工做出来,如果要将此程序运用到实际生产中,我们考虑到是可以将程序语言的判断功能也添加进去,让程序可以主动对计算结果做出判断。我们在主程序的后面添加了循环和判断语句。输入命令:

import numpy as np

D = np.array([[0.8,0.6,0.65],[0.12,0.2,0.15],[0.08,0.2,0.2]]) # 创建系数行列式

arr = np.array([0.665,0.185,0.15])

x = np.linalg.solve(D, arr)

print('方程组的解为:', x)

z=0

for xx in x:

if xx<=0 or xx>=1:

print("不能用丁酒代替甲酒!")

break

z=z+1

if z==3:

print("可以用丁酒代替甲酒!")

输出结果:

方程组的解为:[ 0.41666667 0.95 -0.36666667]

不能用丁酒代替甲酒!

在这套新的程序命令中,加入了循环判断的语句,因此可以由方程组的解直接进行判断并且得出正确的结论,在数据发生变化时也可以很方便的对程序中的数据进行更新,而不需要再变动其他的命令,仍然可以得到正确的结论,这得使程序更加的完整而具有推广价值。

我们在大数据专业开设数学课程,是为了让学生有必要的数学知识,在得到数据以后会提出问题、使用数学理论分析问题、并利用程序语言进一步地解决问题。数学理论时我们分析问题的基础,程序语言是我们得到问题结论的工具,二者缺一不可,相辅相成。因此大数据专业的应用数学课程必须成为一门理论和实践高度统一的课程才能达到培养学生理论和实践相结合的良好的实际分析能力和数学建模能力。

参考文献:

[1]雷俊丽,张良均.大数据数学基础(Python语言描述)[M].人民邮电出版社:北京,2019:138.

[2]徐恩立.浅析数学与应用数学在大数据中的应用[J].科技资讯,2019,36:248-250.

[3]徐时芳,潘春燕,陈昱池.大数据+数学核心素养培育的STEM教育应用研究[J].教育教学论坛,2019,32:191-192.

猜你喜欢
Python语言应用数学程序
给Windows添加程序快速切换栏
简化化学平衡移动教学程序探索
“程序猿”的生活什么样
基于Python语言和支持向量机的字符验证码识别
论Python程序设计语言
基于Python语言的面向对象课程实践教学探讨
英国与欧盟正式启动“离婚”程序程序
浅析应用数学在经济学中的作用
初中数学应用题教学存在的问题及解决策略分析
以就业需求为导向的应用数学培养模式研究