mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
164 lines
2.6 KiB
Python
164 lines
2.6 KiB
Python
![]() |
from big_ol_pile_of_manim_imports import *
|
||
|
|
||
|
|
||
|
X_COLOR = GREEN
|
||
|
Y_COLOR = RED
|
||
|
Z_COLOR = BLUE
|
||
|
OUTPUT_COLOR = MAROON_B
|
||
|
|
||
|
|
||
|
def get_cramer_matrix(matrix, output_vect):
|
||
|
"""
|
||
|
The inputs matrix and output_vect should be Matrix mobjects
|
||
|
"""
|
||
|
# new_matrix = np.append(
|
||
|
# matrix.mob_matrix[:, :2],
|
||
|
# output_vect,
|
||
|
# axis=1
|
||
|
# )
|
||
|
pass
|
||
|
|
||
|
|
||
|
class LinearSystem(VGroup):
|
||
|
CONFIG = {
|
||
|
"matrix_config": {
|
||
|
"element_to_mobject": Integer,
|
||
|
},
|
||
|
"dimensions": 3,
|
||
|
"min_int": -9,
|
||
|
"max_int": 10,
|
||
|
"height": 4,
|
||
|
}
|
||
|
|
||
|
def __init__(self, matrix=None, output_vect=None, **kwargs):
|
||
|
VGroup.__init__(self, **kwargs)
|
||
|
dim = self.dimensions
|
||
|
if matrix is None:
|
||
|
matrix = np.random.randint(
|
||
|
self.min_int,
|
||
|
self.max_int,
|
||
|
size=(dim, dim)
|
||
|
)
|
||
|
self.matrix_mobject = IntegerMatrix(matrix)
|
||
|
self.equals = TexMobject("=")
|
||
|
self.equals.scale(1.5)
|
||
|
|
||
|
colors = [X_COLOR, Y_COLOR, Z_COLOR][:dim]
|
||
|
self.input_vect_mob = Matrix(np.array(["x", "y", "z"]))
|
||
|
self.input_vect_mob.elements.set_color_by_gradient(*colors)
|
||
|
|
||
|
if output_vect is None:
|
||
|
output_vect = np.random.randint(self.min_int, self.max_int, size=(dim, 1))
|
||
|
self.output_vect_mob = IntegerMatrix(output_vect)
|
||
|
self.output_vect_mob.elements.set_color(OUTPUT_COLOR)
|
||
|
|
||
|
for mob in self.matrix_mobject, self.input_vect_mob, self.output_vect_mob:
|
||
|
mob.scale_to_fit_height(self.height)
|
||
|
|
||
|
self.add(
|
||
|
self.matrix_mobject,
|
||
|
self.input_vect_mob,
|
||
|
self.equals,
|
||
|
self.output_vect_mob,
|
||
|
)
|
||
|
self.arrange_submobjects(RIGHT, buff=SMALL_BUFF)
|
||
|
|
||
|
|
||
|
# Scenes
|
||
|
|
||
|
|
||
|
class LeaveItToComputers(TeacherStudentsScene):
|
||
|
CONFIG = {
|
||
|
"random_seed": 1,
|
||
|
}
|
||
|
|
||
|
def construct(self):
|
||
|
system = LinearSystem(height=3)
|
||
|
system.next_to(self.pi_creatures, UP)
|
||
|
system.generate_target()
|
||
|
system.target.scale(0.5)
|
||
|
system.target.to_corner(UL)
|
||
|
|
||
|
self.play(
|
||
|
Write(system),
|
||
|
self.teacher.change, "raise_right_hand",
|
||
|
self.get_student_changes("pondering", "thinking", "hooray")
|
||
|
)
|
||
|
self.wait(2)
|
||
|
self.play(
|
||
|
PiCreatureSays(
|
||
|
self.teacher, "Let the computer \\\\ handle it",
|
||
|
target_mode="shruggie",
|
||
|
),
|
||
|
MoveToTarget(system, rate_func=running_start),
|
||
|
self.get_student_changes(*["confused"] * 3)
|
||
|
)
|
||
|
self.wait(3)
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|