在给定列表上应用给定的数学表达式

问题描述 投票:0回答:1

我正在研究一个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循环的输出)?

python list sympy curve-fitting
1个回答
0
投票

我看过你的代码。我建议您开始使用调试器,以便您了解脚本中正在发生的事情:)您总共打印了错误的列表。我为您评论了几行。希望我能帮忙..

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)
© www.soinside.com 2019 - 2024. All rights reserved.