Python绘图--函数图像(并计算三个函数相交围成的图像面积)

news/2024/10/30 23:19:37/

题目给出三个已知函数方程:

需要,首先画出函数图像,并且给所围图形打上阴影,并用计算其积分,运行效果如下:

具体代码:

import numpy as np # 给numpy库起个别名
from matplotlib import pyplot as plt  #matplotlib是Python语言及其数值计算库NumPy的绘图库。#设置图像细节
#plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
#plt.legend(loc= 'lower left') # 设置图例位置location
plt.ylim(-10, 10)  # y轴显示区间
plt.xlim(-1, 3)  # x轴显示区间ax = plt.gca() #可以使用 plt.gcf()和 plt.gca()获得当前的图表和坐标轴(分别表示 Get Current Figure 和 Get Current Axes)
ax.xaxis.set_ticks_position('bottom') #设置x轴为下边框
ax.spines['bottom'].set_position(('data', 0))  # spines是脊柱的意思,移动x轴
ax.spines['top'].set_color('none')  # 设置顶部支柱的颜色为空
ax.spines['right'].set_color('none')  # 设置右边支柱的颜色为空
plt.grid(True, linestyle='--', alpha=0.5)  # 网格X1 = np.arange(-1, 3, 0.1)  # x范围
X2 = np.ma.masked_array(X1, mask=((X1 < 0.000001) & (X1 > -0.000001)))  # 反比例函数去掉X为零的情况F1 = np.exp(-X1) + 3  # 指数函数
F2 = 2 * X1 - 2  # 一次函数
F3 = 1 / X2  # 反比例函数def f1(x):  # 指数函数return np.exp(-x) + 3def f2(x):  # 一次函数return 2 * float(x) - 2 # 强制类型转换floatdef f3(x):  # 反比例函数return 1 / float(x)def root(f, g, a, b, eps1):while b - a > eps1:# 二分法 求f = g 方程的根x = (a + b) / 2y = f(x) - g(x)ya = f(a) - g(a)yb = f(b) - g(b)if y * ya < 0:b = xelif y * yb < 0:a = xr = "%.4f" % ((a + b) / 2)return rdef integral(f, a, b, eps2):# 设置初始积分n = 20# n对应的积分值R = [] # 一个空的listI = 0h = (b - a) / n# 计算积分for i in range(0, n - 1):I += (f(a + (i + 0.5) * h))R.append(h * I) # 记录h*I 的值while (1):# 更新n *= 2I = 0h = (b - a) / n# 计算for i in range(0, n - 1): # 从0 ~n-1的循环I += (f(a + (i + 0.5) * h)) # 矩形公式R.append(h * I)# 判断if (abs(R[-1] - R[-2]) / 3 < eps2):breakc = []  # 存下每个积分点的横坐标for i in range(0, n - 1):c.append(a + h * i)# print("R:", R[-1])return c, R[-1]def drawRomberg(f1, f2, a, b, eps2, n): #画出求积部分x1, y1 = integral(f1, a, b, eps2)x1_ = []for i in range(len(x1)):if i % n == 0:x1_.append(x1[i])if i == len(x1) - 1:x1_.append(x1[i])for i in x1_:line = [i, f1(i), i, f2(i)]plt.plot(line[::2], line[1::2], color='red',linewidth=1, linestyle="--")if __name__ == '__main__': #“if __name__==’__main__:”也像是一个标志,象征着Java等语言中的程序主入口,告诉其他程序员,代码入口在此——这是“if __name__==’__main__:”这条代码的意义之一。# 计算四个交点的坐标x4 = "%.4f" % float(root(f1, f2, 2, 3, 0.001))y4 = "%.4f" % float(f2(x4))x2 = "%.4f" % float(root(f1, f3, 0.1, 1, 0.001))y2 = "%.4f" % float(f3(x2))x3 = "%.4f" % float(root(f2, f3, 1, 2, 0.001))y3 = "%.4f" % float(f2(x3))x1 = "%.4f" % float(root(f2, f3, -1, -0.1, 0.001))y1 = "%.4f" % float(f2(x1))print("x1:%.4f" % float(x1), "y1:%.4f" % float(y1))print("x2:%.4f" % float(x2), "y2:%.4f" % float(y2))print("x3:%.4f" % float(x3), "y3:%.4f" % float(y3))print("x4:%.4f" % float(x4), "y4:%.4f" % float(y4))# 画出初始的三条函数plt.plot(X1, F1, linewidth=1.5, linestyle="-", label="f1")plt.plot(X1, F2, linewidth=1.5, linestyle="-", label="f2")plt.plot(X2, F3, linewidth=1.5, linestyle="-", label="f3")# 画出四个交点围成的三角形polygon = [[float(x2), float(y2)], [float(x3), float(y3)], [float(x4), float(y4)]]# line_area = polygon+[polygon[0]]# plt.plot([i[0] for i in line_area], [i[1] for i in line_area])# 画出三个焦点plt.scatter(polygon[0][0], polygon[0][1], s=50, c='r')plt.scatter(polygon[1][0], polygon[1][1], s=50, c='r')plt.scatter(polygon[2][0], polygon[2][1], s=50, c='r')# 计算面积I = integral(f1, float(x2), float(x4), 0.001)[1] - integral(f2, float(x3),float(x4), 0.001)[1] - \integral(f3, float(x2), float(x3), 0.001)[1]# 画出求积部分drawRomberg(f1, f3, float(x2), float(x3), 0.001, 80)drawRomberg(f1, f2, float(x3), float(x4), 0.001, 80)# 显示计算结果plt.text(1.5, 6, "I = {}".format("%.4f" % float(I)))# 显示plt.legend(loc='upper left')plt.show()

 


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

相关文章

怎样用计算机绘制幂函数图像,几何画板如何画幂函数的图像 绘制方法介绍

在学习了一些基本初等函数后&#xff0c;会接触“幂函数”概念&#xff0c;那么几何画板如何画幂函数的图像呢&#xff1f;接下来小编就为大家带来解答&#xff0c;一起来看看吧。 步骤一建立坐标系。启动几何画板&#xff0c;依次单击“绘图”——“定义坐标系”菜单命令&…

怎样用几何画板绘制函数y=x^4的图像

利用描点法绘制函数图像的方法并不局限于某个函数&#xff0c;而是可适用于绘制任何一个函数的图像。下面以函数yx3为例&#xff0c;详细介绍利用几何画板绘制点的方法绘制函数图像。 具体的操作步骤如下&#xff1a; 1.执行“绘图”—“定义坐标系”命令&#xff0c;新建坐标系…

绘制函数图像

12.绘制函数图像 &#xff08;1&#xff09;用极限去找渐近线 &#xff08;2&#xff09;用一阶导数去找极大值和极小值 &#xff08;3&#xff09;用二阶导数去找函数的凹凸性 12.1 建立符号表格&#xff08;看函数哪里为正&#xff0c;哪里为负&#xff09; 例子 星号代…

PB获取计算机名字IP等函数

//得到计算机名字 function boolean GetComputerNameA(ref string lpBuffer, ref ulong nSize) library "KERNEL32.DLL" alias for "GetComputerNameA;Ansi" //设置计算机名字 FUNCTION boolean SetComputerNameA(ref string cname)LIBRARY "kerne…

python画函数图像-Python 绘制你想要的数学函数图形

Python 非常热门,但除非工作需要没有刻意去了解更多,直到有个函数图要绘制,想起了它。结果发现,完全用不着明白什么是编程,就可以使用它完成很多数学函数图的绘制。 通过以下两个步骤,就可以进行数学函数的绘制了。 两个步骤 (1)安装 Anaconda Anaconda 包含了 Pyt…

python实现绘制函数图像

目录 python实现绘制二次函数图像 python实现绘制三维函数图像 python实现绘制二次函数图像 import matplotlib.pyplot as plt import numpy as np import math x = np.linspace(-10, 10, 10) #分别代表最小,最大,数量, 生成一个等差数列 y = x ** 2 + 1 plt.plot(x, y…

MATLAB怎么绘制根号x的图像,这样的函数图像用什么软件画呢?

2006-04-09 函数二次函数图像不明白&#xff1f; 二次函数是一类十分重要的最基本的初等函数&#xff0c;也是初中数学的主要内容之一&#xff0c;它在中学数学中起着承上启下的作用&#xff0c;它与一元二次方程、一元二次不等式知识的综合运用&#xff0c;是初中代数的重点和…

Python函数绘图

最近看数学&#xff0c;发现有时候画个图还真管用&#xff0c;对理解和展示效果都不错。尤其是三维空间和一些复杂函数&#xff0c;相当直观&#xff0c;也有助于解题。 本来想用mathlab&#xff0c;下载安装都太费事&#xff0c;杀鸡不用牛刀&#xff0c;Python基本就能实现&a…