Python 数学函数,未赋值变量?

Python 数学函数,未赋值变量?,python,function,unassigned-variable,Python,Function,Unassigned Variable,我正在寻找一种方法,在分配方程式中变量的数值之前,将多个数学函数相加。 我这样做是因为我需要优化我的代码,每次我都想给变量分配不同的值。我正在尝试做的一个例子: f(x,y)=x+2y g(x,y)=3x-y 添加f(x,y)+g(x,y)以获得h(x,y),因此f(x,y)+g(x,y)=h(x,y)=4x+y 现在我有了h(x,y),我需要h(x,y) x=4;y=3,h(x,y)=19 x=1,y=0,h(x,y)=4 等等 这可能吗?我试图将它们创建为字符串,添加字符串,然后删除引号以

我正在寻找一种方法,在分配方程式中变量的数值之前,将多个数学函数相加。
我这样做是因为我需要优化我的代码,每次我都想给变量分配不同的值。我正在尝试做的一个例子:

  • f(x,y)=x+2y

  • g(x,y)=3x-y

  • 添加
    f(x,y)+g(x,y)
    以获得
    h(x,y)
    ,因此
    f(x,y)+g(x,y)=h(x,y)=4x+y

  • 现在我有了
    h(x,y)
    ,我需要
    h(x,y)

  • x=4;y=3,h(x,y)=19
    x=1,y=0,h(x,y)=4
    
    等等

    这可能吗?我试图将它们创建为字符串,添加字符串,然后删除引号以计算总和,但这不起作用。我正试图以这种方式执行我的方法,因为我想优化我的代码。如果我能够在计算之前创建最终函数(在本例中是
    h(x,y)
    ),这将非常有帮助

    编辑:我正在添加(e**(x+y)),所以使用矩阵的线性解不起作用://

    可以做到:

    import sympy as sym
    
    x, y = sym.symbols('xy')
    f = x + 2*y
    g = 3*x - y
    h = f + g
    
    这表明它简化了表达式:

    print(h)
    # y + 4*x
    
    这显示了如何将
    h
    作为
    x
    y
    的函数进行计算:

    print(h.subs(dict(x=4, y=3)))
    # 19
    print(h.subs(dict(x=1, y=0)))
    # 4
    

    如果函数都是变量的线性组合,如示例所示,则不需要解析器或@unutbu建议的sympy解决方案(这似乎是复杂函数的绝对正确答案)

    对于线性组合,我将使用
    numpy
    数组来包含变量的系数,如下所示:

    import numpy as np
    f = np.array([1,2])
    g = np.array([3,-1])
    h = f + g
    x = np.array([4,3])
    sum(h*x)
    

    。。。它给出了答案,如您的示例所示。

    您也可以使用lambda函数

    f=lambda x,y:x+2*y
    g=lambda x,y:3*x-y
    h=lambda x,y:f(x,y)+g(x,y)
    

    然后计算
    h(x,y)

    您基本上是在寻找一个解析器。检查一下——python版本的lex和yaccEven与e**(x+y)一起使用,矩阵解决方案可能适用于指数可以适当转换的情况。e、 例如**(x+y)=ex*ey因此,如果每个项都是一个向量,那么这两个向量可以相乘,得到的解比我预期的
    symphy
    给出的解快得多。对于没有适当转换的一般情况,@unutbu的解决方案非常有吸引力。我如何使用矩阵来实现这一点?我在研究可能看起来像。。。e^ipi(4x-2y)+e^ipi(10x+3y)+e^ipi(x+24y)。。。