写这篇博客源于博友的提问,将介绍如何使用Python,matplotlib绘制复杂曲线,并求其交点,y=-sin(x)-x-1并求解函数的值。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/e768c2534a59461da06187ce9ce711f3.png)
1. 效果图
y=sin(x)效果图如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/2d882dcfe93442e59996ef3a51050e5e.png)
y = -x - ln(x)效果图如下: ![在这里插入图片描述](https://img-blog.csdnimg.cn/fcf5e1e1982a4cbb91ba904f9d88c925.png)
y=-sin(x)-x-1 & y=0 效果图如下: 求解:函数 sin(x)+x+1=0的值 可以理解为 求y=-sin(x)-x-1 与 y=0这俩条线的交点的值 求解值,可以先缩小俩条曲线x与y的范围,然后计算相邻点的值 < 某个值0.1等,则认为相交。
![在这里插入图片描述](https://img-blog.csdnimg.cn/dd6bcc57fa034ee79a77c7a0fdc995cf.png)
2. 源码
import numpy as np
from matplotlib import pyplot as plt
# 1. 绘制y=sin(x)
# 定义 x 变量的范围 (-15,15) 数量 100
x = np.linspace(-15, 15, 100)
y = np.sin(x)
# 开始绘图
# 绘制 y=-x-exp(x) 的图像,设置 color 为 red,线宽度是 1,线的样式是 --
plt.plot(x, y, color='red', linewidth=1.0, linestyle='--')
plt.title('y=sin(x)')
plt.show()
# 3. 绘制y = -x - ln(x),要求x范围[0,2]
# 定义 x 变量的范围 (0,2) 数量 500
x = np.linspace(0, 2, 500)
y = -x - np.exp(x)
# Figure 并指定大小
plt.figure(num=3, figsize=(8, 5))
# 绘制 y=-x-exp(x) 的图像,设置 color 为 red,线宽度是 1,线的样式是 --
plt.plot(x, y, color='red', linewidth=1.0, linestyle='--')
plt.title('y = -x - np.exp(x)')
plt.show()
# 2. y=1+x+sin(x) 其中x范围为[-Π/2,Π/2]
# 绘制y=-1-x-np.sin(x) 与另一条线y=0相交以查看是否有解
x1 = np.linspace(-np.pi / 2, np.pi / 2, 100)
y1 = -1 - x - np.sin(x)
plt.plot(x1, y1, color='red', linewidth=1.0, linestyle='dashdot')
x2 = x1
y2 = np.zeros(len(x2))
plt.plot(x2, y2, color='green', linewidth=1.0, linestyle='solid')
plt.title('y = -1-x-np.sin(x) & y=0')
plt.show()
# 从上图可以看到俩条线有交点,交点就是其解
# 下边用算法计算俩条线的交点值
x1 = x1.tolist()
x2 = x2.tolist()
y1 = y1.tolist()
y2 = y2.tolist()
x_begin = max(x1[0], x2[0])
x_end = min(x1[-1], x2[-1])
points1 = [t for t in zip(x1, y1) if x_begin |