Directorio de artículos
- 1. Descripción del problema
- En segundo lugar, la implementación del código.
-
- 1. Y calcula el valor de ∫ 0 1 x 3 + 1 según el principio de integración 1. \text { Y calcula según el principio de integración} \int_{0}^{1} x^{3}+1 \text { El valor }1. Y calculado en base al principio de integración ∫01X3+valor de 1
- 2. Visualiza el proceso de animación de la integral 2.\text { } Visualiza el proceso de animación de la integral2. Visualiza el proceso de animación de integración _
1. Descripción del problema
Hay un problema de la siguiente manera:
∫ 0 1 x 3 + 1 = [ 1 4 x 4 + x ] 0 1 = 1,25 \int_{0}^{1} x^{3}+1=\left[\frac{1}{4} x^ {4}+x\derecha]_{0}^{1}=1,25∫01X3+1=[41X4+x ]01=1 . 2 5
En segundo lugar, la implementación del código.
1. Y calcula el valor de ∫ 0 1 x 3 + 1 según el principio de integración 1. \text { Y calcula según el principio de integración} \int_{0}^{1} x^{3}+1 \text { El valor }1. Y calculado en base al principio de integración ∫01X3+valor de 1
def func(x):
return x ** 3 + 1
down = 0
upper = 1
interval = np.linspace(start=down, stop=upper, num=100)
result = 0
for i in range(0, len(interval) - 1):
left = interval[i]
right = interval[i + 1]
width = right - left
height = func(left)
area = width * height
result += area
print(f"{result:.2f}")
El resultado es el siguiente:
Al tomar 50 rectángulos para calcular la integración numérica, ya se puede obtener el resultado de 1.24.
2. Visualiza el proceso de animación de la integral 2.\text { } Visualiza el proceso de animación de la integral2. Visualiza el proceso de animación de integración _
Importe las dependencias requeridas:
import numpy as np
import matplotlib.path as path
import matplotlib.pyplot as plt
import matplotlib.patches as patches
from IPython.display import HTML
from matplotlib.animation import FuncAnimation
import warnings
warnings.filterwarnings("ignore")
Entre ellos, numpy se usa para generar datos de puntos, path se usa para generar rutas y patches se usa para dibujar imágenes a través de conexiones de rutas.
La función de actualización es la siguiente:
# 更新函数
def update(frame):
global points, verts, codes
# x轴间隔距离 每个bin
dx = (interval[1] - interval[0]) / bins
points = np.append(points, [[frame, func(frame)]], axis=0)
verts = np.append(verts,
[[frame, 0], [frame, func(frame)], [frame+dx, func(frame)], [frame+dx, 0]], axis=0)
ln[0].set_data(list(zip(*points)))
codes.extend([path.Path.MOVETO] + [path.Path.LINETO] * 3)
barpath = path.Path(verts, codes)
patch = patches.PathPatch(barpath,
facecolor='blue',
edgecolor='yellow', alpha=0.6)
ax.add_patch(patch)
return patch, ln[0]
Inicialice el objeto fig con FuncAnimation para iniciar la animación:
fig, ax = plt.subplots(figsize=(6, 4), dpi=100)
ax.axis(interval)
global points, verts, codes
codes = []
verts = np.empty((0, 2), np.float64)
points = np.empty((0, 2), np.float64)
plt.rcParams['font.sans-serif'] = ['Times New Roman']
plt.rcParams['axes.unicode_minus'] = False
ln = plt.plot([], [], 'ro')
# 设置坐标轴刻度标签的大小
plt.tick_params(axis='x', direction='out',
labelsize=12, length=3.6)
plt.tick_params(axis='y', direction='out',
labelsize=12, length=3.6)
# x y 轴标签 标题 字体设置
plt.xlabel("x",
fontdict={
"size": 16, "weight": "bold", "color": "black"})
plt.ylabel("f(x)",
fontdict={
"size": 16, "weight": "bold", "color": "black"}
)
plt.grid(alpha=0.48, ls=":")
# FuncAnimation动画 传入fig对象、更新函数 frames
anim = FuncAnimation(fig, update,
frames=np.linspace(*interval[:2], bins),
)
El código de Python se ejecuta de la siguiente manera:
Estudio complementario: