黎曼和Python

时间:2020-06-06 08:00:48

标签: python riemann

我需要制作一个python函数,在其中我可以找到带有riemann和的表面。这就是我所拥有的,并且在老师的反馈下,我非常接近它,但是它不能像我想要的那样正常工作。老师还说了关于try-catch的信息,这意味着我需要编写一个额外的代码来控制答案(如果我没记错的话),要找到表面上的上限和下限,并问该线下要多少个矩形就像在程序中一样。

(编辑)我制作了一个新程序,请你们检查一下是否正确。

* MySerializer(many=True)
* serializers.ListField(child=MySerializer())

def f(x):

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

def positiveinput(message): 而True: 尝试: c = int(input(message))

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

print(“糟糕!这不是有效数字。请重试...”)

a = positiveinput(“下限是多少?:”)

b = positiveinput(“上限是什么?:”)

c = positiveinput(“您想要几个除法间隔?:”)

a = int(input(“下限是多少?:”))

b = int(input(“上限是多少?:”))

c = int(input(“您想要几个除法间隔?:”))

dx = float((b-a)/ c)

xi = a

总和= dx

对于范围(0,c)中的i:

xi = a-dx

总和=总和+ f(xi)

print(“线下的表面是”,(sum * dx))

2 个答案:

答案 0 :(得分:1)

上面的代码存在一些问题:

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

2)验证错误:您应检查以下几件事:

  • aa的值是有效数字(请注意,它们实际上不必一定是整数,而只是数字)。您可以使用b将某物转换为数字,就像使用float()将某物转换为整数一样。
  • int()是一个整数并且不等于0,因为当您尝试除以n时,会引发错误,
  • n不是负数,因为这将导致您获得错误的值(按原样使用代码)。

话虽如此,我不会照原样编写代码。使用for循环然后增加您的值不是一件很Python的事情。您可能有兴趣学习使用n函数实际上可以指定一个下限和一个上限。实验:

range

看看会发生什么。我不会为您提供完整的解决方案,因为这是一项家庭作业,可以使您自己解决问题,这将使您受益匪浅,但是希望这为您指出的这些东西将为您指明正确的方向。

答案 1 :(得分:0)

正如@Sadap所说,您可以尝试以下方法:

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-mccurrach在本文的答案中编写的错误验证列表。您也可以查看此link,他们以不同的方式制作黎曼和。有关try-catch的文档,您可以输入此link