Применение заданного математического выражения к заданным спискам - PullRequest
0 голосов
/ 09 мая 2020

Я работаю над программой python, которая должна получать два списка (x, y) и ряд функций (в x, y), а затем возвращать список для каждой из функций, содержащий вывод каждой элемент в списке, поэтому я попробовал вот что:

from sympy import *
from sympy.abc import x, y
#Entering the functions
SympF=[]
F=[]
n = int(input("Please enter the number of terms in the general regression formula : ")) 
for i in range(0, n): 
    SympF.append(sympify(input("Insert your functions : \n")))
    F.append (lambdify([x, y], SympF[i]))

#Entering Points
xdata = []
ydata = []
m = int(input("Enter number of elements : ")) 
print('Enter each point as space seperated x & y')
for i in range(0, m): 
    x,y = map(float, input().split())
    xdata.append(x)
    ydata.append(y)

    #making a list for each function (this is where I'm stuck)
    Z=[]
for i in range(0, n): 
    for j in range (0,m):
        Z.append(F[i](xdata[j],ydata[j]))
for item in F:
    print(F);

Этот код должен дать мне список Z, который содержит выходные данные F [i], F [i + 1], F [i + 2] .... но вместо этого я получаю сообщение об ошибке:

[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]
[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]
[<function _lambdifygenerated at 0x00000229CA678438>, <function _lambdifygenerated at 0x00000229CAB31708>, <function _lambdifygenerated at 0x00000229CAB318B8>]

Так что мне не хватает, также есть ли лучший способ сделать это, а не использовать один список Z затем разделите его (верните n списков, содержащих выходные данные из for l oop)?

1 Ответ

0 голосов
/ 09 мая 2020

Я просмотрел ваш код. Я рекомендую вам начать использовать отладчик, чтобы вы понимали, что происходит в ваших скриптах :) Вы вообще печатали неправильный список. Я прокомментировал для вас несколько строк. Надеюсь, я смогу помочь ..

import sympy # don't import everything(*)!!
from sympy.abc import x, y

# Entering the functions
SympF = []
F = []
n = int(input("Please enter the number of terms in the general regression formula : "))
for i in range(0, n):
    SympF.append(sympy.sympify(input("Insert your functions : \n")))
    F.append(sympy.lambdify([x, y], SympF[i]))

# Entering Points
xdata = []
ydata = []

m = int(input("Enter number of elements : "))
print("Enter each point as space seperated x & y")
for i in range(0, m):
    x, y = map(float, input().split())
    xdata.append(x)
    ydata.append(y)


Z = [] # Set up a list
for i in range(0, n):
    my_list = [] # for every function initialize a temporary list as empty
    for j in range(0, m): # Calculate the results
        my_list.append(F[i](xdata[j], ydata[j]))
    Z.append(my_list) # Add the list to your result

for item in Z:
    print(item)
...