Mathematica在中学数学教与学中的应用
前言
最近几期 Wolfram 公众号有不少内容是从各类实际的高中试题中摘选经典和复杂问题,结合软件加以解决和分析。内容来看是充实完整,分析透彻。本文抛砖引玉,从中学数学老师的日常应用出发,按课程标准的内容组织,运用 Mathematica 的计算和图形功能,形象的获取数学对象的直观展示,避免了繁重的笔头计算;并以实验的方式来研究数学,体现软件在基础教学课堂中的帮助。
编辑:杨圣汇 (Wolfram)
集合运算[Venn图]
韦恩图绘制 (借助 WolframAlpha 知识引擎)
函数的输入直接按照课本上的集合运算符号。比如找出三个集合的共同交集:
WolframAlpha["A[Intersection]B[Intersection]C", {{"VennDiagram", 1},
"Content"}]
三个集合的并集:
子集个数(幂集)
通过 Subsets 函数可以枚举出给定集合的所有子集,包括空集(用长度为零的空列表来表示):
使用 Length 函数来找到以上长列表中所有元素的个数:
函数[图象、导数]
函数图象
除了一般的光滑函数的图像以外,Mathematica 在处理有奇点和断点的函数时候也相当简便:
Plot[1/(x^2 - x), {x, -1, 2}, Axes -> False]
有了图像帮助以后,我可以更加直观地通过导数研究函数。我从另一个角度分析之前公众号已经发表的关于今年理科卷大题的分析:
定义函数:
F[x_] := Exp[x] + a*x^2 - x;
将函数中的参数进行替换。原题第一个小问中有对于 a 取值为 1 的时候的单调性研究。Mathematica 使用 D 或者单引号来表示求导,非常直观:
{F[x] /. {a -> 1}, F'[x] /. {a -> 1}, F''[x] /. {a -> 1}}
Out[]= {E^x - x + x^2, -1 + E^x + 2 x, 2 + E^x}
接下来使用 Plot 绘制函数:
Plot[{F[x] /. {a -> 1}, F'[x] /. {a -> 1}}, {x, -3, 3}]
结合上图考虑到纵轴的的最大值即为 a 的取值边界,找出该曲线的极值就是答案:
即比上述值小的 a 都满足条件。
三角
三角最值问题也是各类升学考试中会考到的问题。下面我来简单分析一道例题。
有的答案给的是两个要同时取到 1,才能取到最大值 2,因此 x=0 时,要取 1,所以 [Phi] 等于 [Pi]/2+2k *[Pi] (其中 k 为整数)。
但如果将条件最大值为 2,改成最大值为根3,[Phi] 的取值又是多少?先试试直接计算:
Assuming[Element[f, Reals], Maximize[Sin[x + f] + Cos[x], x]]
Out[]= Maximize[Cos[x] + Sin[f + x], x]
并没有获得结果。我们稍作化简,使用内置函数 TrigFactor 做和差化积,那么就很容易得到答案。
调用 Solve 求解满足条件的 f:
Solve[Sin[f/2 + Pi/4] == Sqrt[3]/2, f]
数列
给定项之间的关系求数列问题一般也是必考。很多数列在 Mathematica 中都能够很轻松的解决:
- 数列求和
- 求解通项公式
当然也有有局限,下面这个问题目前并没有得到最简结果:
不等式
求最值
这类二元问题可以非常直接的用最值函数来找到相应的结果,比如:
不等式证明
举个例子:
我在求解这道问题的时候直接使用了以下因式分解函数,直接得到了若干项非负项的乘积。那么显然本题中的不等式对于满足条件的变量都成立:
Factor[((x^2 + y^2 + z^2)^3 - 6*(x^3 + y^3 + z^3)^2) /. z -> -x - y]
Out[]= 2 (x - y)^2 (2 x + y)^2 (x + 2 y)^2
立体几何
这一道例题是通过三维等高线函数来找到满足条件的点:
我们假设要研究的是单位正方体,其中点的坐标是 :
A = (0,0,0), B = (0,1,0), C = (1,1,0) 以及 D = (1,0,0);
A1=(0,0,1), B1 = (0,1,1), C1 = (1,1,1) 以及 D1 = (1,0,1)
于是某点到三条两两垂直的异面直线的距离的平方差可以用以下两个函数来表达:
F[x_, y_, z_] := x^2 - y^2 - 2*x - 2*z + 2;
G[x_, y_, z_] := x^2 - z^2 - 2*y + 1;
那么满足条件的点即为以上两个方程同时为零的时候的解集 (距离差为零 与距离平方差为零,在此互为充要条件)。
解析几何
最后一个例子简单讲讲直线和给定椭圆判定的依据。最直接的做法就是如果有交点,那么我们可以找到坐标系下面联立方程的解。一种做法是直接把直线的代数形式带入到椭圆方程当中,并且抓取对应一元二次方程的各项系数。
小结
- Mathematica 与 Wolfram Alpha 有丰富的资料库,涵盖各教育领域中的诸多内容 (https://www.wolfram.com/education/high-schools/high-schools.zh.html)
- Wolfram 语言简洁,在数学课堂中的编程代码很短,加上自然语言的帮助,不需要编程知识,也可以直接获取想要的教学效果,帮助师生更好地关注在概念理解和拓展探索 (https://www.wolframalpha.com/examples/mathematics/)
- Wolfram 语言能够分步计算,在学习和教授过程中把关键步骤保留下来,便于归档 (https://www.wolframalpha.com/examples/pro-features/step-by-step-solutions/)
- Mathematica 可视化能力出众,能够很直观的表现复杂数量关系下面的目标函数对于变化的相应和等式关系 (https://www.wolfram.com/language/12/plane-geometry/index.html.zh)
- 庞大的演示项目中拥有超过1万2千多个源代码供你参考学习 (https://demonstrations.wolfram.com/)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 贷款诈骗 x 摸版0day + 实战预警脚本
- 你不知道的 Linux 使用技巧
- 一文详解 Websocket 的前世今生
- 实例 | 教你用Python写一个电信客户流失预测模型
- OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测
- 看了这个总结,其实 Matplotlib 可视化,也没那么难!
- 使用OpenCV进行模糊检测(拉普拉斯算子)
- 利用opencv对图像进行长曝光
- 总说手机没有“好壁纸”,Python一次性抓取500张“美女”图片,够不够用!
- KEDA发布2.0(Beta)|来一个伸缩测试
- pandas入门:Series、DataFrame、Index基本操作都有了!
- 这几个用 Pyecharts 做出来的交互图表,领导说叼爆了!
- 手把手教你用 Python 搞定网页爬虫!
- 为并发而生的 ConcurrentHashMap,基于 Java8 分析
- 使用Kustomize定制Helm Chart