Python 微分方程不支持的操作数类型 导入数学 输入小数 n=5 s=3.5*n-14 def浮动范围(启动、停止、步进): 启动
为学校项目编写的代码。Numpy不能使用,所有微分和牛顿方法都必须编码,而不是使用Numpy函数 有人知道我为什么会得到: TypeError:第16行中的-:“float”和“NoneType”的操作数类型不受支持Python 微分方程不支持的操作数类型 导入数学 输入小数 n=5 s=3.5*n-14 def浮动范围(启动、停止、步进): 启动,python,python-3.x,typeerror,Python,Python 3.x,Typeerror,为学校项目编写的代码。Numpy不能使用,所有微分和牛顿方法都必须编码,而不是使用Numpy函数 有人知道我为什么会得到: TypeError:第16行中的-:“float”和“NoneType”的操作数类型不受支持 r1=f(x+dx)-f(x) 谢谢我不是专家,但是括号与可调用函数紧密相连,因此python正在尝试运行一个由f表示的函数,在您的例子中是一个带有float和参数x+dx的函数。那会给你一个错误。但是,很明显,您正在做一道数学题,因此需要使用乘法符号来告诉python,方括号表示
r1=f(x+dx)-f(x)
谢谢我不是专家,但是括号与可调用函数紧密相连,因此python正在尝试运行一个由f表示的函数,在您的例子中是一个带有float和参数x+dx的函数。那会给你一个错误。但是,很明显,您正在做一道数学题,因此需要使用乘法符号来告诉python,方括号表示multiply不使用这些参数调用此函数。对我来说,这在python shell中起到了作用:
import math
import decimal
n=5
s=3.5*n -14
def float_range(start, stop, step):
while start < stop:
yield float(start)
start += decimal.Decimal(step)
initial=list(float_range(-14, 15, s))
def diff(f, x):
dx = 1e-6
r1 = f(x + dx) - f(x)
f_x = r1 / dx
return float(f_x)
def sinc(x):
if x==0 :
return
else :
return math.sin(x)/x
def Dsinc(x):
Dsinc=diff(sinc,x)
return Dsinc
def nraphson(f, Df, x, dx) :
x1= x - f(x)/Df(x)
while abs(x1-x) < dx:
x=x1
print(x1)
for x in initial :
print(x, nraphson(sinc,Dsinc,x,1e-6))
由于float是一个内置函数,并且是您定义的f_x,所以返回结果有效。希望这有帮助 我不是专家,但括号与可调用函数紧密相连,因此python试图运行一个由f表示的函数,在您的例子中是一个浮点,参数为x+dx。那会给你一个错误。但是,很明显,您正在做一道数学题,因此需要使用乘法符号来告诉python,方括号表示multiply不使用这些参数调用此函数。对我来说,这在python shell中起到了作用:
import math
import decimal
n=5
s=3.5*n -14
def float_range(start, stop, step):
while start < stop:
yield float(start)
start += decimal.Decimal(step)
initial=list(float_range(-14, 15, s))
def diff(f, x):
dx = 1e-6
r1 = f(x + dx) - f(x)
f_x = r1 / dx
return float(f_x)
def sinc(x):
if x==0 :
return
else :
return math.sin(x)/x
def Dsinc(x):
Dsinc=diff(sinc,x)
return Dsinc
def nraphson(f, Df, x, dx) :
x1= x - f(x)/Df(x)
while abs(x1-x) < dx:
x=x1
print(x1)
for x in initial :
print(x, nraphson(sinc,Dsinc,x,1e-6))
由于float是一个内置函数,并且是您定义的f_x,所以返回结果有效。希望这有帮助 在
sync
中,您有如果x==0:return
,这意味着当x
为0
时,返回值将为None
,这似乎是您的程序中发生的情况。在sync
中,您有如果x==0:return
,这意味着当x
为0
时,返回值将为None
,这似乎是程序中发生的情况。