Размер видео: 1280 X 720853 X 480640 X 360
Показать панель управления
Автовоспроизведение
Автоповтор
Код python, библиотека manim:from manim import *import numpy as npclass HalfIntervalMethod(MovingCameraScene): def construct(self): # Определение уравнения def f(x): return x**3 - 3*x**2 - 4 # Начальные границы интервала a = -5 b = 5 # Создание осей self.axes = Axes( x_range=[-5, 5, 1], y_range=[-50, 50, 10], x_length=10, y_length=10, x_axis_config={"numbers_to_include": np.arange(-5, 5, 1)}, y_axis_config={"numbers_to_include": np.arange(-50, 50, 10)}, tips=True, ).move_to(DOWN).scale(0.55) # Добавление подписей осей x_label = self.axes.get_x_axis_label("x").scale(0.6) y_label = self.axes.get_y_axis_label("f(x)").scale(0.6) # Добавление текста с постановкой задачи task_text = VGroup( MathTex("f(x) = x^3 - 3x^2 - 4"), MathTex("f(x) = 0").move_to(DOWN), MathTex("x = ?").move_to(DOWN*2) ).scale(0.75) self.play(Write(task_text)) self.wait(2) self.play(task_text.animate.scale(0.6).to_corner(UL)) # Построение графика функции graph = self.axes.plot(f, color=BLUE) self.play(Create(self.axes), run_time=2) self.play(Create(x_label), Create(y_label)) self.play(Create(graph)) # Вычисление решения методом половинного деления iterations = 0 tolerance = 0.4
while abs(b - a) > tolerance: """ # Показываем вычисления: f1 = Text(f"a = {a}") f2 = Text(f"b = {b}").next_to(f1, direction=DOWN/2) f3 = Text(f"f(a) = {f(a)}").next_to(f2, direction=DOWN/2) f4 = Text(f"b = {b}").next_to(f3, direction=DOWN/2) f5 = Text(f"f(b) = {f(b)}").next_to(f4, direction=DOWN/2) f6 = MathTex("c = \\frac{|b-a|}{2}").next_to(f5, direction=DOWN/2) f7 = Text(f"f(c) = {f((abs(b-a)/2))}").next_to(f6, direction=DOWN/2) g = VGroup(f1,f2,f3,f4,f5,f6,f7).scale(0.4).to_corner(DR) self.play(Create(g)) """ # Находим среднее: c = (a + b) / 2 if iterations == 0: a_Dot = self.createDot("a", a, 0, RED) b_Dot = self.createDot("b", b, 0, RED) self.play(Create(a_Dot)) self.play(Create(b_Dot)) c_Dot = self.createDot("c", c, 0, GREEN) self.play(Create(c_Dot)) # Скрываем вычисления: # self.play(FadeOut(g)) # Двигаем камеру и приближаем: self.camera.frame.save_state() self.play( self.camera.frame.animate.move_to(self.axes.coords_to_point(c, f(c))).set(width=12-iterations*2) ) self.wait(1) # Показываем точность: if (iterations
Код python, библиотека manim:
from manim import *
import numpy as np
class HalfIntervalMethod(MovingCameraScene):
def construct(self):
# Определение уравнения
def f(x):
return x**3 - 3*x**2 - 4
# Начальные границы интервала
a = -5
b = 5
# Создание осей
self.axes = Axes(
x_range=[-5, 5, 1],
y_range=[-50, 50, 10],
x_length=10,
y_length=10,
x_axis_config={"numbers_to_include": np.arange(-5, 5, 1)},
y_axis_config={"numbers_to_include": np.arange(-50, 50, 10)},
tips=True,
).move_to(DOWN).scale(0.55)
# Добавление подписей осей
x_label = self.axes.get_x_axis_label("x").scale(0.6)
y_label = self.axes.get_y_axis_label("f(x)").scale(0.6)
# Добавление текста с постановкой задачи
task_text = VGroup(
MathTex("f(x) = x^3 - 3x^2 - 4"),
MathTex("f(x) = 0").move_to(DOWN),
MathTex("x = ?").move_to(DOWN*2)
).scale(0.75)
self.play(Write(task_text))
self.wait(2)
self.play(task_text.animate.scale(0.6).to_corner(UL))
# Построение графика функции
graph = self.axes.plot(f, color=BLUE)
self.play(Create(self.axes), run_time=2)
self.play(Create(x_label), Create(y_label))
self.play(Create(graph))
# Вычисление решения методом половинного деления
iterations = 0
tolerance = 0.4
while abs(b - a) > tolerance:
"""
# Показываем вычисления:
f1 = Text(f"a = {a}")
f2 = Text(f"b = {b}").next_to(f1, direction=DOWN/2)
f3 = Text(f"f(a) = {f(a)}").next_to(f2, direction=DOWN/2)
f4 = Text(f"b = {b}").next_to(f3, direction=DOWN/2)
f5 = Text(f"f(b) = {f(b)}").next_to(f4, direction=DOWN/2)
f6 = MathTex("c = \\frac{|b-a|}{2}").next_to(f5, direction=DOWN/2)
f7 = Text(f"f(c) = {f((abs(b-a)/2))}").next_to(f6, direction=DOWN/2)
g = VGroup(f1,f2,f3,f4,f5,f6,f7).scale(0.4).to_corner(DR)
self.play(Create(g))
"""
# Находим среднее:
c = (a + b) / 2
if iterations == 0:
a_Dot = self.createDot("a", a, 0, RED)
b_Dot = self.createDot("b", b, 0, RED)
self.play(Create(a_Dot))
self.play(Create(b_Dot))
c_Dot = self.createDot("c", c, 0, GREEN)
self.play(Create(c_Dot))
# Скрываем вычисления:
# self.play(FadeOut(g))
# Двигаем камеру и приближаем:
self.camera.frame.save_state()
self.play(
self.camera.frame.animate.move_to(self.axes.coords_to_point(c, f(c))).set(width=12-iterations*2)
)
self.wait(1)
# Показываем точность:
if (iterations