Python:循环的每次迭代都会增加符号函数的数量

时间:2020-03-25 22:52:28

标签: python sympy

我通常是编程的初学者,但是我对ANSYS APDL语言(Fortran派生语言)和Python有点熟悉。 本质上,我正在尝试为循环中的每次迭代创建一个新的符号函数。据我所知,Python(特别是sympy)无法创建符号函数的数组或列表。例如,在APDL中,我可以这样写:

*do,i,1,3
        f%i% = i*x + 2*i*y
*enddo

哪个可以给我3个功能:f1 = x + 2y, f2 = 2x + 6y, f3 = 3x + 9y 因此,我想知道%i%功能是否与Python等效,或者我是否可以利用Python中的简单变通办法。

我的最终目标是将所有这些功能整合在一起,以解决仍处于循环中的系统。每次迭代都会增加系统中的方程式和变量的数量,直到满足特定条件为止。我可以使用psi = sympy.Array(sympy.symbols('psi0:%d'%i))增加变量的数量,但是我还没有找到一种使用符号函数的方法。

3 个答案:

答案 0 :(得分:1)

如果函数名称对您而言无关紧要,则可以创建lambda表达式并将其存储在列表中:

funcs = []
for i in range(8):
        new = lambda x,y : i*x + 2*i*y
        funcs.append(new)

您可以通过以下方式致电给他们

>>> x, y = 2, 3
>>> funcs[0](x, y)
56

答案 1 :(得分:1)

使用sympy,您可以执行以下操作(请注意,Python列表的索引从0开始):

<input type="text"
       (keyup)="0"
       #searchCollectorInput
       class="search-metrics"
       placeholder="Find">

输出:

<span *ngIf="searchCollectorInput.value.length > 0"
      (click)="searchCollectorInput.value = ''"
      class="fa fa-close" ></span>

要“调用”这样的sympy函数,请将其变量替换为值。值可以是常量,也可以是包含其他变量的表达式。

from sympy import symbols

x, y = symbols('x y')
num = 3
f = [i*x + 2*i*y for i in range(1, num+1)]

print(f[0])
print(f[1])
print(f[2])

输出:

x + 2*y
2*x + 4*y
3*x + 6*y

答案 2 :(得分:0)

您可以只创建一个函数列表并按索引调用它们。

functionList = []
for i in range(10):
    def func(x,y):
        return i * x + 2 *i *y
    functionList.append(func)

functionList[0](4,5)
functionList[1](1,5)