You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用SymPy实现降阶法解微分方程时三角函数输入报错求助

问题:输入三角函数时出现Sympify解析错误

当输入sin x这类带空格的三角函数表达式时,触发如下错误:

SympifyError: Sympify of expression 'could not parse 'sin x'' failed, because of exception being raised:
SyntaxError: invalid syntax (<string>, line 1)

错误原因

SymPy的sympify函数要求数学表达式符合Python/SymPy语法规范,三角函数(如sin、cos)的调用必须用括号包裹参数,sin x这种空格分隔的写法不符合语法,导致解析失败。

解决方法

方法1:规范输入格式

直接提示用户输入带括号的三角函数表达式,比如将sin x改为sin(x)、cos 2x改为cos(2*x)。

方法2:自动预处理输入(推荐)

在代码中添加输入预处理逻辑,用正则表达式将类似sin x的格式自动转换为sin(x),兼容用户的自然输入习惯。

修改后的完整代码

import re
from sympy import symbols, sympify, integrate, exp

def preprocess_input(expr_str):
    # 匹配三角函数、对数等函数名后接空格的情况,替换为带括号的形式
    pattern = r'(sin|cos|tan|cot|sec|csc|log|ln|exp)\s+([a-zA-Z0-9\*\/\+\-]+)'
    processed = re.sub(pattern, r'\1(\2)', expr_str)
    # 自动补充数字与变量间的乘号,比如2x转为2*x
    processed = re.sub(r'(\d)([a-zA-Z])', r'\1*\2', processed)
    processed = re.sub(r'([a-zA-Z])(\d)', r'\1*\2', processed)
    return processed

def DividirFuncion(expr):
    P1T = expr[0]
    newExpr = []
    for i in range(len(expr)):
        NuevEle = expr[i]/P1T
        newExpr.append(NuevEle)
    return newExpr

def main():
    x = symbols("x")
    EDO = []
    
    # 预处理输入后再解析
    dy2_input = preprocess_input(input("Dame y'' "))
    dy2 = sympify(dy2_input)
    
    dy1_input = preprocess_input(input("Dame y' "))
    dy1 = sympify(dy1_input)
    
    dy_input = preprocess_input(input("Dame y "))
    dy = sympify(dy_input)

    EDO.append(dy2)
    EDO.append(dy1)
    EDO.append(dy)

    Y1_input = preprocess_input(input("Ingresa el valor inicial de y1: "))
    Y1 = sympify(Y1_input)

    Edo2 = DividirFuncion(EDO)
    
    dPx = Edo2[1]
    P = integrate(dPx)
    
    k = exp(-P)/(Y1**2) 

    # 统一指定积分变量x,避免省略变量导致的歧义
    y2 = Y1 * integrate(k, x)

    print("\nEl resultado final es:", y2)

if __name__ == "__main__":
    main()

额外优化说明

  • 修正了integrate的调用逻辑:原代码中if k ==1的判断无必要,SymPy的integrate可统一指定积分变量x,避免歧义。
  • 增加数字与变量间的乘号自动补充,用户输入2x会自动转为2*x,进一步兼容自然输入习惯。

内容的提问来源于stack exchange,提问作者Rox_A

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:43:31