Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 微分方程不支持的操作数类型 导入数学 输入小数 n=5 s=3.5*n-14 def浮动范围(启动、停止、步进): 启动_Python_Python 3.x_Typeerror - Fatal编程技术网

Python 微分方程不支持的操作数类型 导入数学 输入小数 n=5 s=3.5*n-14 def浮动范围(启动、停止、步进): 启动

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,方括号表示

为学校项目编写的代码。Numpy不能使用,所有微分和牛顿方法都必须编码,而不是使用Numpy函数

有人知道我为什么会得到: TypeError:第16行中的-:“float”和“NoneType”的操作数类型不受支持
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
,这似乎是程序中发生的情况。