零基础学编程042:画函数图像

孩子马上就要参加高考了,我以前还能帮着辅导一下数学功课,现在就不行了,一来她很忙,晚上很晚才到家,二来高中的数学题太变态,琢磨一个小时可能也解不出一道。

前几天她让我帮着打印几张函数及导函数的图像,我发现这些图像都是用一款软件制作的,例如第一幅图像是这样的:

我以前用Python画过复利曲线图,这种图像只不过稍微复杂了一点,应该难不倒我,下面就跟着我来一步一步把这个图做出来。

第一步:画出f(x)=x*ln(x)

复习一下以前学过的内容,换一下函数,马上就完成了这一步。

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-2, 6, 200)
y = x * np.log(x)
plt.plot(x, y)
plt.show()

需要说明一下linspace(-2, 6, 200)相当于在x轴从-2到6之间采样200个点,形成一个数组。np.log()就是自然对数函数。

第二步:再加上导数图像 f'(x) = 1 + ln(x)

在plot()函数之前加上两条语句就可以了。

dy = 1 + np.log(x)
plt.plot(x, dy)

可以看到多了一条曲线,而且自动用了不同的颜色。

第三步:把第二条曲线用红虚线表示

把这一行:

plt.plot(x, dy)

换成:

plt.plot(x, dy, 'r--')

这里的 r 表示红色red,-- 表示虚线,r-- 就是红虚线。

第四步:在函数曲线旁边标上函数名称

在plt.show()函数之前加上两条语句:

plt.text(2.5, 6, r'$f(x) = x * ln(x)$')
plt.text(4, 1.8, r"$f'(x) = 1 + ln(x)$")

解释一下:

r'$f(x) = x * ln(x)$'

这个也是字符串,r 的意思是raw,原始的、未经过加工的,因为'\n','\\'等这类特殊字符需要进行转义处理,而用上这个r字母开头之后,里面的反斜杠就不当转义符处理了,关于字符串以后还得专门细说一下。

在《零基础学编程021:获取股票实时行情数据》这一课里我们见过以字母b开头的字符串,表示二进制串,例如:b'hq="\xb9\xc8\xb8\xe8,824.16.....";\n'

至于r'......'里面的两个$符号,则与latex有关,专门用来表示数学公式的,你可以把两个$符号去掉,看一看文字样式有何区别。

第五步:加上网格线和坐标轴

把图的x坐标范围设置为[-2, 6]:

plt.xlim(-2, 6)

加上网格线:

plt.grid(True)

加上水平坐标轴和垂直坐标轴:

plt.axhline(color='black')
plt.axvline(color='black')

上面这些语句都放在plt.show()之前,最后的效果是这样的:

作业:

试着画出下图中的两个函数图像。

--- END ---

原文发布于微信公众号 - 申龙斌的程序人生(slbGTD)

原文发表时间:2017-04-25

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能算法

深度学习三人行(第2期)---- TensorFlow爱之再体验

上一期,我们一起学习了TensorFlow的基础知识,以及其在线性回归上的初体验,该期我们继续学习TensorFlow方面的相关知识。学习的路上,我们多多交流,...

32310
来自专栏企鹅号快讯

谷歌大牛的编程建议和技巧

编译:伯乐在线/PJing 【伯乐在线导读】:Rob Pike 是谷歌公司最著名的软件工程师之一,曾是贝尔实验室 Unix 开发团队成员,Plan 9 操作系统...

1969
来自专栏前端架构

图的遍历——图论与图模型

搜索已经成为了获得信息的基本手段,其实搜索从语义上来看 是去某个地方寻找某种信息,如去书架找一本书,这就叫一种搜索,给出了搜索对象 -- 书,也给出了一个行为范...

443
来自专栏申龙斌的程序人生

零基础学编程005:打印一行复利数据

问题 上次文章《集成开发环境IDE》里留了一道练习题: 如何用Python打印这篇枯燥的《复利数据表》: (1+0.01) ^ 1 = 1.01 (1+0.0...

2679
来自专栏码云1024

游戏中的人物是如何寻路的?

41513
来自专栏性能与架构

大数据运算模型 MapReduce 原理

MapReduce 是一个大数据集合的并行运算模型,由google提出,现在流行的hadoop中也使用了MapReduce作为计算模型 MapReduce 通俗...

3667
来自专栏码云1024

游戏中的人物是如何寻路的?

1477
来自专栏程序人生

谈谈状态机

题记:上周做 BBL 里讲了我们 Tubi TV 内部做 DSL 的一些简单实践,大家反馈不错。有同事建议我给大家先补补 FSM,之后再进阶 CFG,可能会更顺...

2767
来自专栏用户2442861的专栏

一、A*搜索算法

更多请参阅:十三个经典算法研究与总结、目录+索引。 ---------------------------------- 博主说明: 1、本经典算法研究...

472
来自专栏编程

邪恶的编码魔咒,你中招没?

关键时刻,第一时间送达! 自从我观看了Gary Bernhardt所推崇的视频以后,就对某些编程语言的怪异表现着迷了。一些编程语言比其他语言有更多令人感到意外的...

1617

扫描关注云+社区