首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >黎曼和巨蟒

黎曼和巨蟒
EN

Stack Overflow用户
提问于 2020-06-06 08:00:48
回答 2查看 745关注 0票数 0

我需要做一个python函数,在这里我可以用riemann和找到曲面。这就是我所拥有的,在老师的反馈下,我非常接近它,但它并不像我想要的那样正常工作。老师还说了一些关于“尝试-捕捉”的内容,这意味着我需要做一个额外的代码来控制答案(如果我没有错的话),这样就可以找到问题的表面、下限值以及你在程序中想要的直线下有多少个矩形。

(编辑)我做了一个新的程序,你们能检查一下这是否正确吗?

代码语言:javascript
复制
import math

def f(x): return math.sqrt(x) #Function in the left!

a = int(input("What is the lowerlimit?:"))
b = int(input("What is the upperlimit?:"))
n = int(input("How many division intervals do you want?:"))

dx = (b-a)/n;

xi = 0;
sum = 0;
for i in range(n):
xi = xi+dx;
sum = sum + f(xi)
print("The surface under the line is ", (sum*dx))

#einde programma!






import math

f(x):

在左侧返回math.sqrt(x) #函数!

正输入(消息):而True: try: C=int(输入(消息))

代码语言:javascript
复制
  if c <= 0:
      raise ValueError

    break

except ValueError:

打印(“哎呀!那是无效的号码。再试一次……”)

A=正输入(“下限是什么?:")

B=正输入(“上限是多少?:")

C=正输入(“您需要多少个除法间隔?:")

A=int(输入(“下限是什么?:”)

B=int(输入(“上限是多少?:”)

C=int(输入(“需要多少个除法间隔?:”))

dx =浮子((b-a)/c)

十一=a

Sum = dx

I在范围内(0,c):

xi =

Sum = Sum + f(xi)

打印(“线下的表面是",(sum*dx))

EN

回答 2

Stack Overflow用户

发布于 2020-06-06 08:49:19

上面的代码有几个问题:

1) ,最重要的是,,您实际上没有计算正确的答案,因为您假设下限等于0。你不应该写xi=0,而应该写xi=a!(请注意,这将使用每个矩形的远端来计算高度-如果您想使用低端,并且不想更改任何其他代码,则需要编写xi = a - dx,因此您可以从a开始。(话虽如此,我不会这样做,但这是如何在不改变任何其他情况下解决这一问题的)。

2)验证错误:有几件事情您应该检查:

  • ab的值是有效数字(注意,它们不应该是整数,只是数字)。您可以使用float()将某些内容转换为数字,就像使用int()转换为整数一样。
  • n是一个整数,不等于0,因为这将引发一个错误,当您尝试用n除以时,
  • n不是负的,因为这将导致您获得错误的值(与代码一样)。

话虽如此,我不会按原样编写代码。使用for-循环然后递增您的值并不是一件非常重要的事情。您可能有兴趣了解,您实际上可以使用range函数指定一个下限和一个上限。试验:

代码语言:javascript
复制
for i in range(3,11,0.5):
   print(i)

看看会发生什么。我不会给你一个完整的解决方案,因为这是一项家庭作业,你最好自己解决这个问题,但希望这能为你指明正确的方向。

票数 1
EN

Stack Overflow用户

发布于 2020-06-06 08:21:21

正如@Sadap所说,您可以尝试这样的方法:

代码语言:javascript
复制
def positiveinput(message):
    while True:
      try:
        n = int(input(message))
        if n <= 0:
          raise ValueError
        break
      except ValueError:
        print("Oops!  That was no valid number.  Try again...")

a = positiveinput("What is the lowerlimit?:")
b = positiveinput("What is the upperlimit?:")
n = positiveinput("How many division intervals do you want?:")

有了这段代码作为指南,您可以完成@tim在这篇文章的答复中所写的错误验证列表。此外,您还可以查看这个链接,在这里,它们以不同的方式生成黎曼和。有关try-catch的文档,您可以输入这个链接

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62228944

复制
相关文章

相似问题

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