如何解决我可以在列表中插入使用lambda x创建的函数吗? 蟒蛇
我需要构建一个像a_0 + a_1 x + a_2 x ^ 2之类的多项式函数...我正在尝试完成整个插值过程。 我有这个:
def Create_F(Numero,Array):
Y = lambda x: x
Lista = list(Array)
F_x = []
for i in range(Numero):
G_x = lambda x: eval(Lista[i]*Y^i)
F_x.append(G_x)
return F_x
如果我使用它,我什么也得不到帮助:
Number = 2
ma = np.array([[1,1],[1,2]])
ly = np.array([8,-3])
idk = Create_F(Number,ly)
print(idk)
例如,我不知道如何评估。1.如果我可以更好的方式进行评估,那将非常有帮助,完整的代码如下:
import numpy as np
def Matrix_F(Num,Lx):
Vec = np.zeros((Num,Num),dtype = float)
Vec.T[1] = Lx
ex = 0
for i in range(Num):
for j in range(Num):
Vec[j][i]=Lx[j]**ex
ex += 1
return Vec
def Cramer_F(Ma,Ly):
Lc,Det = np.array(Ly),np.linalg.det(Ma)
col = len(Lc)
Values = np.zeros(col)
for i in range(col):
org = Ma.copy()
org.T[i]=Lc
Di=np.linalg.det(org)
Values[i] = Di/Det
error = np.linalg.norm(np.dot(Ma,Values)-Lc)
return Values,error
def Create_F(Numero,Array):
Y = lambda x: x
Lista = list(Array)
F_x = []
for i in range(Numero):
G_x = lambda x: eval(Lista[i]*Y^i)
F_x.append(G_x)
return F_x
val = int(input('Ingrese la cantidad de valores de X y Y que posee: '))
x_val = []
y_val = []
print('Ingrese %s valores de cada variable:' %(val))
n = 1
for i in range(val):
x = float(input('%s° Valor de x: '%(n)))
y = float(input('%s° Valor de y: '%(n)))
x_val.append(x)
y_val.append(y)
n += 1
#Matriz del sistema:
As = Matrix_F(val,x_val)
#Valores de "a_n" y error
a_val,er = Cramer_F(As,y_val)
n=0
print()
for i in a_val:
print('a_%s = %.6f' %(n,i))
n += 1
谢谢您的时间!
解决方法
如果我想念您,您想将一个多项式表示形式创建为lambda函数。所以让我建议其他功能:
import numpy as np
def alternative_create_F(coeffs):
Y = lambda x: sum([item*(x**iter) for iter,item in enumerate(coeffs)])
return Y
coeffs = np.array([8,-3,4]) # first is the free coeff second is x coeff and so on
idk = alternative_create_F(coeffs)
print(idk(3))
print(idk(6))
请注意,number
变量无关紧要,因为您可以从len(coeffs)
中提取它。
现在,lambda函数保留多项式的表示形式-
coeffs[0] + coeffs[1]*x + coeffs[2]*x^2
要调用lambda函数,请将该函数作为具有所需x值的函数来调用。 从我的示例中得到的输出:
35 ===> 8+(-3)*3+4*3^2 = 8-9+36 = 35
134 ===> 8+(-3)*6+4*6^2 = 8-18+144 = 134
希望您发现它有用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。