在python用manim实现矩阵的标识方法【下】

1.get_columns() 是一个方法

get_columns() 是 Manim 中 Matrix 类的方法,返回矩阵的所有列。这对于对列进行动画处理、样式更改等操作非常有用。

方法解释

  • 功能:获取矩阵的每一列,便于对整个列进行操作。
  • 用途:使用该方法可以轻松对矩阵的列应用变化。

示例代码

from manim import *  

class GetColumnsExample(Scene):
    def construct(self):
        m0 = Matrix([["\pi", 3], [1, 5]])
        m0.add(SurroundingRectangle(m0.get_columns()[1]))
        self.add(m0)

运行结果: 

 

2.get_entries()方法

get_entries() 是 Manim 中 Matrix 类的方法,用于获取矩阵中所有元素的一个列表。每个元素通常是一个 Tex 或 MathTex 对象,表示矩阵的单个条目。

方法解释

  • 功能:返回矩阵中所有条目的列表(即矩阵中的每个元素)。
  • 用途:可以对这些条目进行样式修改、动画、遍历计算等操作。例如,可以改变颜色、大小或者执行其他操作。

示例代码

下面是一个使用 get_entries() 方法的简单示例代码:

from manim import *

class GetEntriesExample(Scene):
    def construct(self):
        m0 = Matrix([[2, 3], [1, 5]])
        ent = m0.get_entries()
        colors = [BLUE, GREEN, YELLOW, RED]
        for k in range(len(colors)):
            ent[k].set_color(colors[k])
        self.add(m0)

运行结果:

 

3.get_rows()方法

get_rows() 是 Manim 中 Matrix 类的方法,用于获取矩阵的所有行。它返回一个包含每行的 Mob(可移动对象)列表,这使得对每一行进行更改或动画效果变得简单。

方法解释

  • 功能:返回矩阵的每一行,方便对矩阵的行进行操作。
  • 用途:通过获取行,您可以应用动画、样式或其他操作于整个行。

示例代码

以下是一个使用 get_rows() 方法的示例:

from manim import *

class GetRowsExample(Scene):
    def construct(self):
        m0 = Matrix([["\pi", 3], [1, 5]])
        m0.add(SurroundingRectangle(m0.get_rows()[1]))
        self.add(m0)

 运行结果:

4.set_column_colors(*colors)方法 

   set_column_colors(*colors) 是 Manim 中 Matrix 类的方法,用于为矩阵的每一列设置不同的颜色。这个方法允许用户通过传入颜色列表,轻松地为矩阵的列指定颜色。

方法解释

  • 功能:为矩阵的每一列设置不同的颜色。
  • 参数
    • colors:一个可变参数,表示颜色的列表。每个颜色字符串对应矩阵中的一列。
  • 返回值:返回当前矩阵对象(self),允许链式调用。

使用示例

以下是一个使用 set_column_colors() 方法的示例:

from manim import *

class SetColumnColorsExample(Scene):
    def construct(self):
        m0 = Matrix([["\pi", 1], [-1, 3]],
        ).set_column_colors([RED,BLUE], GREEN)
        self.add(m0)

运行结果: 

 5.set_row_colors(*colors)方法

set_row_colors(*colors) 是 Manim 中 Matrix 类的方法,用于为矩阵的每一行设置不同的颜色。这个方法与 set_column_colors() 类似,但它专门针对矩阵的行进行操作。

方法解释

  • 功能:为矩阵的每一行设置不同的颜色。

  • 参数

    • colors:一个可变参数,表示颜色的列表。每个颜色字符串对应矩阵中的一行。
  • 返回值:返回当前矩阵对象(self),允许进行链式调用。

使用示例

以下是一个使用 set_row_colors() 方法的示例:

from manim import *

class SetRowColorsExample(Scene):
    def construct(self):
        m0 = Matrix([["\pi", 1], [-1, 3]],
        ).set_row_colors([RED,BLUE], GREEN)
        self.add(m0)

运行结果: 

两个合起来实现一下。

示例代码: 

class SetColumnColorsExample(Scene):
    def construct(self):
        m0 = Matrix([[1,12,13], [21, 22,23],[31,32,33]],
                   ).set_column_colors([RED,BLUE], GREEN).set_row_colors(RED, GREEN)
        self.add(m0)

运行结果: 

 6.MobjectMatrix 

MobjectMatrix(matrix, element_to_mobject=<function MobjectMatrix.<lambda>>,
 **kwargs)

MobjectMatrix 是 Manim 中用于创建可视化矩阵的类,允许用户将矩阵的每个元素渲染为 Mobject 实例。这一功能使得用户在动画和可视化中使用矩阵时具有更灵活的表现力。

参数解释

  1. matrix:

    • 类型:list 或 array
    • 描述:输入的矩阵数据。可以是嵌套的列表或 NumPy 数组,表示矩阵的各个元素。
  2. element_to_mobject (默认为 lambda 函数):

    • 类型:function
    • 描述:一个函数,用于将矩阵的每个元素转换为 Mobject 实例。默认情况下,它是一个 lambda 函数,通常会将每个元素转换为 Text 对象表示该元素的值。例如,使用 lambda x: Text(str(x)) 将矩阵元素转换为相应的文字。
  3. kwargs:

    • 描述:其他关键字参数,可以用于设置 MobjectMatrix 的各种属性,例如颜色、位置等。具体的可用参数取决于 Manim 的实现。

使用示例

以下是一个简单的使用示例,演示如何创建一个 MobjectMatrix 对象并将其添加到场景中:

from manim import *

class MobjectMatrixExample(Scene):
    def construct(self):
        a = Circle().scale(0.3)
        b = Square().scale(0.3)
        c = MathTex("\pi").scale(2)
        d = Star().scale(0.3)
        m0 = MobjectMatrix([[a, b], [c, d]])
        self.add(m0)

运行结果: 

 7.DecimalMatrix 

DecimalMatrix 是 Manim 库中的一个类,用于创建显示数字矩阵的对象,其元素以小数格式显示。这个类让你能够更好地处理和可视化数字矩阵。

DecimalMatrix(matrix, element_to_mobject=<class 
'manim.mobject.text.numbers.DecimalNumber'>, element_to_mobject_config=
{'num_decimal_places': 1}, **kwargs)

函数和参数解释:

DecimalMatrix(matrix, ...)
  • matrix:
    • 输入的矩阵,可以是一个如 NumPy 数组或普通的嵌套列表,代表矩阵中的元素。这是构造 DecimalMatrix 对象的主要数据来源。
element_to_mobject=<class 'manim.mobject.text.numbers.DecimalNumber'>
  • element_to_mobject:
    • 这个参数指定了要用于构建矩阵中每个元素的对象类型。默认使用 DecimalNumber,这使得矩阵中的每个元素都是一个小数字体对象,适用于显示数字。
element_to_mobject_config={'num_decimal_places': 1}
  • element_to_mobject_config:
    • 这是一个配置字典,用于指定 element_to_mobject 创建的对象的设置。
    • num_decimal_places:
      • 这是一个关键字,决定每个元素显示的小数位数。这里设置为 1,表示小数显示一位。
**kwargs
  • **kwargs:
    • 允许传入其他关键字参数,这些参数可能用于配置 DecimalMatrix 对象的其他行为或外观。具体取决于 DecimalMatrix 类的实现,可能的参数包括对齐、颜色等。

示例

以下是一个简单的示例,说明如何使用 DecimalMatrix 来创建一个显示小数的矩阵:

import numpy as np  
from manim import *  

class DeterminantOfAMatrix(Scene):  
    def construct(self):  
        # 创建一个矩阵  
        matrix = Matrix([[2,5], [0, 1]],
                   ).set_column_colors([RED,BLUE], GREEN).set_row_colors([RED,BLUE], GREEN)
        
        # 从 Matrix 获取元素作为 NumPy 数组  
        entries = matrix.get_entries()  
        elements = np.array([[float(entries[0].get_tex_string()), float(entries[1].get_tex_string())],  
                              [float(entries[2].get_tex_string()), float(entries[3].get_tex_string())]])  
        
        # 计算行列式  
        determinant_value = np.linalg.det(elements) 
        determinant_value = round(determinant_value, 3)  # 保留两位小数  
       
        print(determinant_value)  
        
        
        det = get_det_text(matrix,
                    determinant=determinant_value,
                    initial_scale_factor=1)
        
        
        # 添加矩阵和行列式文本到场景中  
        self.add(matrix)  
        self.add(det)  

 运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值