用Python绘制数学函数图像

news/2024/10/31 3:22:00/

博客文章: https://blog.manchan.top/post/Drawing-mathematical-function-images-with-Python/可在此处找到我

前言

最近开始学习数学了,有一些题目的函数图像非常有特点,有一些函数图像手绘比较麻烦,那么有没有什么办法做出又标准又好看的数学函数图像呢?

答案是有很多的,有很多不错的软件都能画出函数图像,但是,我想到了Python的数据可视化。Python在近些年非常火热,在数据分析以及深度学习等方面得到广泛地运用,其丰富的库使其功能愈加强大。

这里我们使用Python的NumPy库以及Matplotlib库进行绘图。

NumPy与Matplotlib

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。

函数绘图

所需库函数语法

import 语句

想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下:

import module1[, module2[,... moduleN]

from … import 语句

Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下:

from modname import name1[, name2[, ... nameN]]

numpy.arange

numpy 包中的使用 arange 函数创建数值范围并返回 ndarray 对象,函数格式如下:

numpy.arange(start, stop, step, dtype)

根据 start 与 stop 指定的范围以及 step 设定的步长,生成一个 ndarray。

参数说明:

参数描述
start起始值,默认为0
stop终止值(不包含)
step步长,默认为1
dtype返回ndarray的数据类型,如果没有提供,则会使用输入数据的类型。

numpy.linspace

numpy.linspace 函数用于创建一个一维数组,数组是一个等差数列构成的,格式如下:

np.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数说明:

参数描述
start序列的起始值
stop序列的终止值,如果endpointtrue,该值包含于数列中
num要生成的等步长的样本数量,默认为50
endpoint该值为 true 时,数列中包含stop值,反之不包含,默认是True。
retstep如果为 True 时,生成的数组中会显示间距,反之不显示。
dtypendarray 的数据类型

导入所需模块

import numpy as np
from matplotlib import pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False #用来正常显示负号

一元一次函数

# 一元一次函数图像
x = np.arange(-10, 10, 0.1)#生成等差数组
y = 2 * x
plt.xlabel('x')
plt.ylabel('y')
plt.title("一元一次函数")
plt.plot(x, y)
plt.show()

一元二次函数

# 一元二次函数图像
x = np.arange(-10, 10, 0.1)
y = x * x
plt.xlabel('x')
plt.ylabel('y')
plt.title("一元二次函数")
plt.plot(x, y)
plt.show()

指数函数

# 指数函数
x = np.arange(-10, 10, 0.1)
y = np.power(2, x)
plt.xlabel('x')
plt.ylabel('y')
plt.title("指数函数")
plt.plot(x, y)
plt.show()

正弦函数

x = np.arange(-3 * np.pi, 3 * np.pi, 0.1)
y = np.sin(x)
plt.xlabel('x')
plt.ylabel('y')
plt.title("正弦函数")
plt.plot(x, y)
plt.show()

余弦函数

x = np.arange(-3 * np.pi, 3 * np.pi, 0.1)
y = np.cos(x)
plt.xlabel('x')
plt.ylabel('y')
plt.title("余弦函数")
plt.plot(x, y)
plt.show()

高级玩法

from pylab import *
import numpy
figure(figsize=(12,8), dpi=72)# 创建一个新的 1 * 1 的子图,接下来的图样绘制在其中的第 1 块(也是唯一的一块)
subplot(1,1,1)X = np.linspace(-np.pi*2, np.pi*2, 2048,endpoint=True)
C,S = np.cos(X), np.sin(X)# 绘制余弦曲线,使用蓝色的、连续的、宽度为 1 (像素)的线条
plot(X, C,linewidth=1.5, linestyle="-",label="正弦")# 绘制正弦曲线,使用绿色的、连续的、宽度为 1 (像素)的线条
plot(X, S,linewidth=1.5, linestyle="-",label="余弦")
legend(loc='upper left')
# 设置横轴的上下限
xlim(-4.5,4.5)# 设置横轴记号
xticks([-np.pi, -np.pi/2, 0, np.pi/2, np.pi],[r'$-\pi$', r'$-\pi/2$', r'$0$', r'$+\pi/2$', r'$+\pi$'])yticks([-1, 0, +1],[r'$-1$', r'$0$', r'$+1$'])# 设置纵轴的上下限
ylim(-1.5,1.5)# 设置纵轴记号
yticks(np.linspace(-1,1,5,endpoint=True))
ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))# savefig("sincosin.png",dpi=72) #以72dpi保存图像# 在屏幕上显示
show()

fig = plt.figure(figsize=(12,8), dpi=72)
x = np.arange(-10, 10, 0.01)
arsinh = np.log(x+np.sqrt(x**2+1))
sinh=0.5*(e**x-e**(-x))
cosh=0.5*(e**x+e**(-x))plt.plot(x, sinh,label="双曲正弦")
plt.plot(x, arsinh,label="反双曲正弦")
plt.plot(x, cosh,label="双曲余弦")plt.legend(loc='upper left')ylim(-10,10)ax = gca()
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.spines['bottom'].set_position(('data',0))
ax.yaxis.set_ticks_position('left')
ax.spines['left'].set_position(('data',0))plt.show()


http://www.ppmy.cn/news/741975.html

相关文章

使用python画函数图像

目的: 发出 y x ** 3 / (x * 3 1) 的图像 1. 导入matplotlib模块还有numpy模块: import numpy as np import matplotlib.pyplot as plt 2. 设置一个x的大致范围, 和y相对应的值域: x np.arange(-100, 100, 0.001) y x ** 3 / (3 * x 1)3. 使用figure创建画布, 把参数传…

python如何画函数图像

通过图像可以直观地学习函数变化、分布等规律,在学习函数、概率分布等方面效果显著。下面我们尝试用Python的2D绘图库matplotlib来绘制函数图像。 下面我们来实现一个简单的函数: 首先,调用matplotlib库和numpy库 import matplotlib.pyplot…

python类中常用的魔法方法和区别

python类中常用的魔法方法和区别 Python 中有许多魔法方法(magic methods),也称为双下划线方法(dunder methods),它们提供了类的特殊行为和功能,使类更加强大和灵活。以下是一些常用的、方便的魔法方法: init(self, …): 构造方法,在创建对象时进行初始化操作。 rep…

Flink流批一体计算(11):PyFlink Tabel API之TableEnvironment

目录 概述 设置重启策略 什么是flink的重启策略(Restartstrategy) flink的重启策略(Restartstrategy)实战 flink的4种重启策略 FixedDelayRestartstrategy(固定延时重启策略) FailureRateRestartstrategy(故障率重启策略) …

怎样取消连续包月自动续费_大会员怎么取消自动续费

大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答。 以哔哩哔哩为例,取消大会员自动续费的方法是: 1、首先打开并登录“哔哩哔哩”APP。 2、然后在哔哩哔哩主界面点击左上角的“用户名头像”并进入。 3、接着在…

怎么关闭苹果手机自动扣费_优酷自动续费怎么关闭

优酷自动续费怎么关闭?历经几个月我终于关掉了,真的是普天同庆不容易。还没关掉的,就按照我圈起来的去操作,我收到短信提示关闭成功,下个月就不会自动扣钱啦!对了我是苹果手机

苹果手机怎么取消优酷自动续费_优酷:优酷公众号怎么取消自动续费会员

优酷会员充值中心,优酷公众号,优酷vip会员,优酷会员,优酷VIP会员,优酷会员卡免费领取,优酷会员充值,优酷视频vip,优酷会员免费领取,优酷会员充值中心,优酷会员…

怎么取消苹果手机自动续费_手机上优酷会员怎么取消自动续费

我们经常会在手机上下载优酷观看一些视频,但是优酷很多视频是需要会员功能才能看的,因此很多小伙伴都会购买会员,但是购买会员之后,默认是开通自动续费的服务的,如果不想自动续费,避免扣费造成影响&#xf…