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)。。。