首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python中的辛普森积分规则

Python中的辛普森积分规则
EN

Stack Overflow用户
提问于 2020-07-20 15:26:21
回答 2查看 58关注 0票数 0

我已经为它写了一个代码,但无论我怎么尝试,它都不能工作。有人能帮我看看吗

代码语言:javascript
复制
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)

它显示错误:

代码语言:javascript
复制
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'

那是什么意思?

EN

回答 2

Stack Overflow用户

发布于 2020-07-20 15:28:33

你必须在你的函数中使用return

代码语言:javascript
复制
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)
票数 3
EN

Stack Overflow用户

发布于 2020-07-20 15:34:13

该错误告诉您表达式中的值为None。这是Python中的一个特殊值,表示没有值。由于表达式如此之大,您可以通过打印表达式的某些部分来查找问题,例如print(h)print(y)。具体地说,使用添加的print(y)查看代码中的这些行

代码语言:javascript
复制
def y(x):
    y=(x**3+2*x)/(x**2+2*x)


y=[y(i) for i in x]
print(y)

这将打印如下所示的内容

代码语言:javascript
复制
[None, None, None, None]

这是因为y()函数缺少return语句。要解决这个问题,只需添加return

代码语言:javascript
复制
def y(x):
    return (x**3+2*x)/(x**2+2*x)

提示:将函数命名为y,然后将y赋值给列表。如果您稍后尝试更改此代码,则对两个不同的事物重用单个名称可能会导致问题。我建议将函数重命名为f

代码语言:javascript
复制
def f(x):
    return (x**3+2*x)/(x**2+2*x)

y=[f(i) for i in x]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62990473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档