📜  因子 (3y-2)^2-2(3y-2)-35 (1)

📅  最后修改于: 2023-12-03 15:23:02.011000             🧑  作者: Mango

因子分解程序

本程序以 (3y-2)^2-2(3y-2)-35 为主题,对其进行因式分解。

原始表达式
expression = '(3y-2)^2-2(3y-2)-35'
分解过程

首先,将 3y-2 视为一个整体,设为变量 x ,则原式可写成:

x^2-2x-35

接着,用求根公式解出 x 的值:

x1 = 7
x2 = -5

因此,原式可写成以下两个因式乘积的形式:

(3y-9)(3y+3)
完整代码
def factorize(expression: str) -> str:
    """
    对指定表达式进行因式分解,返回 markdown 格式内容。

    :param expression: str, 指定表达式,如 (3y-2)^2-2(3y-2)-35。
    :return: str, markdown 格式的因式分解过程。
    """
    result = ''

    # 原始表达式
    result += '## 原始表达式\n\n```python\n'
    result += f'expression = \'{expression}\'\n'
    result += '```\n\n'

    temp = expression
    temp = temp.replace('^', '**')  # 同时支持 '^' 和 '**' 两种指数符号

    # 分解过程
    result += '## 分解过程\n\n```python\n'
    result += f'x = symbols(\'x\')\n'
    result += f'expr = {temp}\n'
    result += '\n'
    result += f'factors = factor(expr.subs(x, 3*y-2))\n'
    result += f'factors_str = \', \'.join([latex(factor) for factor in factors])\n'
    result += f'result = f"({{factors_str}})"\n'
    result += '```\n\n'

    result += '## 结果\n\n'
    result += f'${{result}}$'

    return result