来源 | 异步

当你看到这个题目,或许会想,这不是搞笑吗?众所周知,高等数学是编程的基础和前提,而说起程序编写员,在普通人眼里就是数学学霸的代名词,人们往往会把它和那些数学天才的名字联系在一起,比如阿兰·图灵、冯诺依曼。

只会中学数学知识,连高数门槛都达不到,何谈学习编程呢?

那么事实果真这么残酷吗?我们先来看一道简单的题目:

列出一个十位数比个位数小1的两位数。

用常规方法来写答案非常简单,如何用python把它表达出来呢,代码如下:

For tensplacein range(1,10):tensplace=onesplace-1    ifonesplace<10:        tensdigit=tensplace*10+onesplaceprint(tensdigit)else:break

在Python语言中,读写规范和英语语法十分接近,所以我们可以很显然地知道:

range表示范围,

十位数的数字只能取1-10以下的数字,

两位数的数值=十位数数字*10+个位数数字

输出结果:12、23、34、45……

是不是觉得Python入门其实并没有想象中那么困难呢?你或许听大多数人讲过数学不好不要学习Python,但事实上如果你不是进行算法类的编程,先从应用类编程开始,有初高中的数学知识就足够了。

我们必须承认高等数学是编程的基础,那些数学随手就能考满分的大神,确实有更大概率成为优秀程序员。

但由于Python简单明确的设计特点,即使你只有高中数学知识,也能通过一步步的学习体会到Python编程的乐趣,甚至利用Python解决数学问题,提高数学水平。

同时,数学和编程都十分需要逻辑能力和抽象思维,以数学作为衔接,可以引导青少年逐渐接触并学习Python等计算机语言,通过学习编程,也可以锻炼青少年的数学能力。所以我们常常会见到会编程的孩子,数学往往也很厉害。

目前很多学校都已经在践行这样的想法,美国大学最近几年出版的数学教材,都会有结合数学软件(MATLAB等CAS)来学习的指导说明,也就是说CAS以及编程已经是大学数学学习的一部分了。

而部分高中也开始把编程与方程,几何和概率统计等数学知识相结合。

下面我们就来一起看一道经典案例:

我们初中时代都做过的思考题,鸡兔同笼问题:

一笼鸡和兔子,我们数了一下,鸡和兔子的头一共有35个,但是鸡和兔子的脚一共有94只。请问鸡和兔的数量分别是多少。

如何用python来解决呢?

根据题意,头的总数为35,我们用变量head来记录头的总数;

腿的总数为94,我们用变量foot来记录腿的总数;

我们用变量x记录鸡的数量。因为头的总数为35,说明鸡和兔共有35只,所以鸡的数量是0-35之间的某一个数,这里我们用for循环来指挥计算机,自动罗列所有可能出现的情况;

然后,我们用变量y记录兔子的数量。因为鸡和兔的总数等于头的数量,所以兔的数量rabbit等于头的总数head减去鸡的数量;

鸡有两条腿,兔子有四条腿,所以腿的总数为2x+4y。

由于鸡兔总数是确定的,脚的总数也已知,那么方程的代码表示如下:

head=35foot=94for x in range (0,hend+1)     y=head-x     if x*2+y*4=foot         print(‘鸡’x,‘兔’y)

把我们已知数输入,输出结果为鸡23,兔12。

是不是和自己列草稿算的一模一样呢?

所以,懂得编程的学生都会自然地使用编程来学习数学,不仅能锻炼能力,也在不知不觉中提升了逻辑和抽象思维,这恰恰也是《Python数学编程》这本书的编写初衷。

Python与数学结合的艺术:《Python数学编程》

「链接」

这是一本有趣有趣、生动、实用,高中生也能看得懂的Python编程书,也是美国亚马逊青少年学计算机编程畅销书!通过编程来探究代数、统计、几何、概率、微积分等数学主题。

将程序设计和数学巧妙地结合起来,从简单的项目开始,应用Python解决高中和大学低年级的数学问题,比如几何、概率、统计以及微积分等,为进一步学习更复杂的数学内容以及Python编程语言打下坚实的基础。

本书也可作为Python初学者的入门读物,通过学习书中的示例程序和完成那些编程挑战,读者可以提高自己的编程能力和技巧。

内容详实,易学易用

1.用统计方法描述数据,用线图、条形图和散点图可视化数据

2.用程序探究掷硬币、掷骰子和其他概率游戏中的集合理论和概率问题

3·用Python的符号数学功能解决代数问题

4·绘制几何图形,探索分形,如Barnsley蕨类植物、Sierpiński三角以及Mandelbrot集

5·写程序求解导数与积分

应用Python探究高中和大学低年级的数学主题:

比如代数、统计、几何、概率以及微积分。你会从简单的项目学起,比如因式分解、二次方程求解,当你掌握了这些基础的知识后,就可以处理更复杂的项目了。

有创意的编程挑战以及应用实例:

可以帮助你把新学到的数学和编程技巧用于实践。你可以尝试解决各种有趣的问题,比如不等式求解、洗牌、画出子弹飞行过程中重力的影响、探究斐波那契数列与黄金分割之间的联系、利用向板子上投掷100000次“飞镖”来估计圆的面积等。

专业点评,权威推荐

“这是一本很棒的书,真希望早先我自己在学习的时候就能遇到这本书,它可以更好地巩固我所学的数学知识。我正在努力地将这本书的各个方面融入我的课堂中,因为我和我的学生们都非常喜欢这本书。如果你还在犹豫是否应该买这本书,强烈建议你购买。”

—— 高中教师Neal Whitlock

“作者非常出色地将Python与高年级的数学概念清晰地联系了起来,并演示了如何将数学问题的求解转化为Python程序。这本书应该在每个几何老师的书架上占有一席之地。”

—— 校园图书馆期刊(School LibraryJournal)

“这是一本很棒的书,真希望早先我自己在学习的时候就能遇到这本书,它可以更好地巩固我所学的数学知识。我正在努力地将这本书的各个方面融入我的课堂中,因为我和我的学生们都非常喜欢这本书。如果你还在犹豫是否应该买这本书,强烈建议你购买。”

—— 高中教师Neal Whitlock

适用人群

本书适合广大的青少年年轻人学习编程和利用编程学数学。

无论你是对数学还是对编程感兴趣,本书都会带给你不一样的体验。如果你是一位老师,希望教学生编程,你会发现Python让编程变得更容易。如果你是一位学生,当你致力于解决数学问题时,让Python来帮助你处理那些烦琐的计算工作吧!

目录一览,尽在掌握

第1章 处理数字 1
1.1 基本数学运算 1
1.2 标签:给数字命名 3
1.3 不同类型的数字 4
1.3.1 分数的操作 4
1.3.2 复数 5
1.4 获取用户输入 6
1.4.1 处理异常和无效输入 8
1.4.2 将分数和复数作为输入 9
1.5 编写一个数学计算程序 10
1.5.1 计算整数因子 10
1.5.2 生成乘法表 12
1.5.3 转换测量单位 14
1.5.4 求二次方程的根 16
1.6 本章内容小结 18
1.7 编程挑战 19
#1:偶数奇数自动售货机 19
#2:增强型乘法表生成器 19
#3:增强型单位转换器 19
#4:分数计算器 19
#5:为用户设置退出选项 20
第2章 数据可视化 23
2.1 了解笛卡儿坐标平面 23
2.2 使用列表和元组 24
2.3 用matplotlib绘图 26
2.3.1 图上的标记 28
2.3.2 绘制纽约市的年平均气温 29
2.3.3 比较纽约市的月平均气温 31
2.3.4 自定义图形 34
2.3.5 保存图形 37
2.4 用公式绘图 37
2.4.1 牛顿万有引力定律 38
2.4.2 抛物运动 39
2.5 本章内容小结 44
2.6 编程挑战 44
#1:温度如何变化 45
#2:探索二次函数的可视化 45
#3:增强型抛物轨迹比较程序 46
#4:可视化你的支出 46
#5:探索斐波那契序列与黄金比例 48
第3章 数据的统计学特征 50
3.1 计算均值 50
3.2 计算中位数 52
3.3 计算众数并创建频数表 54
3.3.1 寻找最常见的元素 54
3.3.2 计算众数 55
3.3.3 创建频数表 57
3.4 测量离散度 59
3.4.1 计算一组数字的极差 59
3.4.2 计算方差和标准差 60
3.5 计算两个数据集之间的相关性 62
3.5.1 计算相关系数 63
3.5.2 高中成绩和大学入学考试成绩 64
3.6 散点图 67
3.7 从文件中读取数据 68
3.7.1 从文本文件中读取数据 69
3.7.2 从CSV文件中读取数据 70
3.8 本章内容小结 73
3.9 编程挑战 73
#1:更好的相关系数计算程序 73
#2:统计计算器 73
#3:用其他CSV数据做实验 73
#4:计算百分位数 74
#5:创建分组频数表 74
第4章 用SymPy包解代数和符号数学问题 76
4.1 定义符号和符号运算 76
4.2 使用表达式 78
4.2.1 分解和展开表达式 78
4.2.2 使表达式整齐输出 79
4.2.3 输出级数 80
4.2.4 用值替代符号 81
4.2.5 将字符串转换为数学表达式 84
4.2.6 表达式乘法 85
4.3 解方程 86
4.3.1 解二次方程 86
4.3.2 用其他变量求解一个变量 87
4.3.3 解线性方程组 88
4.4 用SymPy包绘图 88
4.4.1 绘制用户输入的表达式 91
4.4.2 多函数图形绘制 92
4.5 本章内容小结 94
4.6 编程挑战 94
#1:寻找因子 94
#2:图形方程求解器 94
#3:级数求和 94
#4:解单变量不等式 95
第5章 集合与概率 98
5.1 什么是集合?98
5.1.1 构建集合 99
5.1.2 子集、超集与幂集 100
5.1.3 集合运算 102
5.2 概率 106
5.2.1 事件A或事件B发生的概率 108
5.2.2 事件A与事件B同时发生的概率 109
5.2.3 生成随机数 109
5.2.4 非均匀随机数 112
5.3 本章内容小结 114
5.4 编程挑战 114
#1:使用文氏图来可视化集合之间的关系 114
#2:大数定律 117
#3:掷多少次硬币会输光你的钱?117
#4:洗牌 118
#5:估计一个圆的面积 118
第6章 绘制几何图形和分形 120
6.1 使用matplotlib的patches绘制几何图形 120
6.1.1 绘制一个圆 122
6.1.2 创建动画图形 123
6.1.3 抛物轨迹动画演示 125
6.2 绘制分形 127
6.2.1 平面上点的变换 127
6.2.2 绘制Barnsley蕨类植物 131
6.3 本章内容小结 134
6.4 编程挑战 134
#1:在正方形中填充圆形 134
#2:绘制Sierpiński三角 136
#3:探索Hénon函数 137
#4:绘制Mandelbrot集 138
第7章 解微积分问题 142
7.1 什么是函数?142
7.1.1 函数的定义域和值域 143
7.1.2 常用数学函数概述 143
7.2 SymPy中的假设 144
7.3 计算函数极限 145
7.3.1 连续复利 147
7.3.2 瞬时变化率 147
7.4 函数求导 148
7.4.1 求导计算器 149
7.4.2 求偏导数 150
7.5 高阶导数和最大最小值点 150
7.6 用梯度上升法求全局最大值 153
7.6.1 梯度上升法的通用程序 156
7.6.2 关于初始值的附加说明 157
7.6.3 步长和epsilon的角色 158
7.7 求函数积分 160
7.8 概率密度函数 162
7.9 本章内容小结 164
7.10 编程挑战 164
#1:证明函数在一点处的连续性 165
#2:梯度下降法的实现 165
#3:两条曲线围成的面积 165
#4:计算曲线的长度 166
后 记 168
下一步可以探索的事情 168
欧拉项目 168
Python文档 168
参考书 169
获取帮助 169
附录A 软件安装 170
A.1 Microsoft Windows 171
升级SymPy 172
安装matplotlib-venn 172
启动Python Shell 172
A.2 Linux 172
升级SymPy 173
安装matplotlib-venn 173
启动Python Shell 173
A.3 Mac OS X 173
升级SymPy 176
安装matplotlib-venn 176
启动Python Shell 176
附录B Python主题概览 177
B.1 if __name__ == '__main__' 177
B.2 列表推导(List Comprehensions) 178
B.3 字典数据结构 180
B.4 多个返回值(Multiple Return Values) 181
B.5 异常处理(Exception Handling) 183
指定多个异常类型 183
else代码块 184
B.6 在Python中读取文件 185
一次性读取所有行 186
指定一个文件名作为输入 186
读取文件时错误的处理 186
B.7 代码重用 189

- END -

bvp解算器是什么_那些学习了编程的中学生,为什么会更可能成功?相关推荐

  1. bvp解算器是什么_边值问题(BVP)的Matlab解法

    求微分方程 (1+x)D2y=2y-4 初始条件 y(0)=0 y(1)=2Dy(1) 如果想用inline和ode45解决,不用function窗口,该如何做? 解 1. 对于此类边值微分方程,od ...

  2. java编程学习方法_在线学习Java编程的最佳方法

    java编程学习方法 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告 ,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好 ...

  3. weinview触摸屏编程软件_新手学习plc编程应该怎么做,老司机教你六招,轻松入门...

      作为初学者应该怎么去学习plc编程,从哪些方面下手比较好,这里个大家一点建议. 一.多收集程序范例.增加编程经验         收集一些别人做好的范例程序,用心去学习理解,想想别人为什么这么写, ...

  4. java安装_在线学习Java编程的最佳方法

    java安装 1.简介 Java是使用最广泛的编程语言之一. 根据Github的最新报告,Java被列为仅次于JavaScript的第二大最常用的编程语言. 掌握Java的人有很多话题. 好消息是,您 ...

  5. java在理科应用_理科生学JAVA编程怎么样才能学的更好

    作为一名理科生,学习JAVA编程是有一定优势的,逻辑思维能力强,而且对数字代码敏感.在IT培训网学校几个月来,结合自己总结了一引动学习方法,应用在java开发学习中感觉效果还不错. 结合自身特点 将复 ...

  6. bvp解算器是什么_中科院孙晓明:算法本身并没有善恶,看你想要的目标是什么...

    电影<模仿游戏>剧照 [编者按]见地沙龙由当代文化学者肖怀德召集和主持,致力于构建创造者的终生学习共同体,探索与发掘启迪智识.滋养社会.面向未来的文化与精神道路.我们坚信,通过艺术.科学与 ...

  7. bvp解算器是什么_对数小史,以及为什么ln x的导数是1/x

    为什么 lnx 求导是 1/x?​www.zhihu.com 现代的数学体系--包括一般的高中和大学教学,一般都将"对数函数"定义为"指数函数"的反函数.不过, ...

  8. bvp解算器是什么_几种飞控的姿态解算算法

    姿态解算是飞控的一个基础.重要部分,估计出来的姿态会发布给姿态控制器,控制飞行平稳,是飞行稳定的最重要保障.有关姿态解算的基础知识,这里笔者不会细细描述,有关这方面的资料,网上已经有很多.主要是先掌握 ...

  9. python少儿编程竞赛_孩子学习少儿编程,可以参加哪些竞赛?

    少儿编程竞赛,对于低年龄层的孩子来说,成绩倒是次要的,主要还是激起其参与感和主动性. 比如玛塔编程的线上编程赛(mwrc),就获得很多小朋友的喜欢,而且年终总决赛已经开始了. 一直以来,我们对浩瀚宇宙 ...

最新文章

  1. 农业物联网技术在温室大棚种植中的应用
  2. 2021.02.01.stata注释方法
  3. 解决Windows10下无法对docker容器进行端口访问(端口映射的问题)
  4. python画长方形-怎么用python 画出任意占空比的一串矩形方波呢?
  5. 基于.net的分布式系统限流组件
  6. Plupload上传插件中文文档
  7. tar ------ linux解压 tar命令
  8. 电源功耗压力测试软件,开关电源负载测试经验分享——这篇三分钟小文章着实令人“心动”...
  9. 如何将asp.net MVC2项目升级为MVC3项目(微软官方自动升级工具:ASP.NET MVC 3 Application Upgrader )...
  10. CNN推理哪家强?英伟达/英特尔/骁龙/麒麟/ActionSemi大测评
  11. stm32c语言arctan函数,超高速的反正切算法,纯整数运算
  12. 求解不定方程 (扩展欧几里得算法)
  13. 龙华大浪注塑加工中模具原理及组成
  14. WX系列无线漫游的配置
  15. Java基础知识笔记
  16. Film Stocks for Mac(PS胶片模拟调色插件)
  17. PTA 6-1 单链表逆转
  18. MSP与PGMP的关联性与区别
  19. React.createRef()
  20. 反函数 (逆映射) 存在定理

热门文章

  1. 我两个月来对Quarkus的了解
  2. spring rmi_Spring集成–使用RMI通道适配器
  3. apache camel_在WildFly中将Apache Camel和Spring添加为jboss模块
  4. instanceof运算符_Java 8中的instanceof运算符和访客模式替换
  5. Spring Data Solr教程:将自定义方法添加到单个存储库
  6. Java命令行界面(第12部分):CLAJR
  7. java线程死锁_Java并发:隐藏线程死锁
  8. gradle ant_使用Gradle引导旧式Ant构建
  9. extjs6 mvvm_ZK 6中的MVVM初探
  10. 将Java 8流解析为SQL