我有以下代码:
import numpy as np
import math
x = np.arange(0, 1.1, h) #point in space
t = np.arange(0, 1.1, k) #point in time
#nodes in matrix form
m = len(x)
n = len(t)
T = np.zeros((m,n))
def ft0 (x):
f = lambda x: math.sin(math.pi*x)# Initial Condition at t=0
return f
for i in range (m-1):
T[0][i] = ft0[i]
运行代码时,我得到:
TypeError:float()参数必须是字符串或数字,而不是 “功能”
我一直在网上搜索解决方案,但我不太了解该错误。
答案 0 :(得分:0)
代码中存在多个问题。
h
,k
,我认为它们均为0.1 ft0(i)
函数而不是结果,因此应将其更改为lambda
而不是...return f(x)
,这会导致上述错误。您可以在以下代码中看到以上内容:
...return f
注意
import numpy as np
import math
def ft0(x):
f = lambda x: math.sin(math.pi*x)# Initial Condition at t=0
return f(x)
h=0.1
k=0.1
x = np.arange(0, 1.1, h) #point in space
t = np.arange(0, 1.1, k) #point in time
#nodes in matrix form
#nodes in matrix form
m = len(x)
n = len(t)
T = np.zeros((m,n))
for i in range(m-1):
T[i][0] = ft0(i)
print(T)
,您可能应该使用double for循环column
像您所做的那样的函数中是不必要的情况下,您可以仅将lambda
用作函数。我建议您在以下链接https://realpython.com/python-lambda/