[英]Simpson's rule of Integration in Python
我已经为它编写了一个代码,但是无论我尝试什么,它都不起作用 有人可以看看吗
def y(x):
y=(x**3+2*x)/(x**2+2*x)
a=int(input("Enter lower limit:"))
b=int(input("Enter higher limit:"))
n=int(input("Enter no. of points:"))
h=1.0*(b-a)/n
x=[a+i*h for i in range(n)]
y=[y(i) for i in x]
I=1.0*(h/3)*(y[0]+y[-1]+4*sum(y[1:-1:2])+2*sum(y[2:-1:2]))
print (I)
它显示错误:
I=1.0*(h/3)*(y[0]+y[-1]+4*sum(y[1:-1:2])+2*sum(y[2:-1:2]))
TypeError: unsupported operand type(s) for +: 'NoneType' and 'NoneType'
这意味着什么?
您必须在 function 中使用return
:
def y(x):
return (x**3+2*x)/(x**2+2*x)
a=int(input("Enter lower limit:"))
b=int(input("Enter higher limit:"))
n=int(input("Enter no. of points:"))
h=1.0*(b-a)/n
x=[a+i*h for i in range(n)]
y=[y(i) for i in x]
I=1.0*(h/3)*(y[0]+y[-1]+4*sum(y[1:-1:2])+2*sum(y[2:-1:2]))
print(I)
该错误告诉您表达式中的值为None
。 这是Python中的一个特殊值,表示没有值。 由于表达式如此之大,可以通过打印出表达式的部分内容来查找问题,例如print(h)
或print(y)
来查找问题。 具体来说,从您的代码中查看这些行并添加print(y)
:
def y(x):
y=(x**3+2*x)/(x**2+2*x)
y=[y(i) for i in x]
print(y)
这将打印出类似
[None, None, None, None]
这是因为y()
function 缺少return
语句。 要解决此问题,只需添加return
:
def y(x):
return (x**3+2*x)/(x**2+2*x)
提示:您将 function 命名为y
,然后将y
分配给列表。 如果您尝试更改此代码,则为两个不同的事物重用一个名称可能会在以后导致问题。 我建议将 function 重命名为f
:
def f(x):
return (x**3+2*x)/(x**2+2*x)
y=[f(i) for i in x]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.