我需要做一个python函数,在这里我可以用riemann和找到曲面。这就是我所拥有的,在老师的反馈下,我非常接近它,但它并不像我想要的那样正常工作。老师还说了一些关于“尝试-捕捉”的内容,这意味着我需要做一个额外的代码来控制答案(如果我没有错的话),这样就可以找到问题的表面、下限值以及你在程序中想要的直线下有多少个矩形。
(编辑)我做了一个新的程序,你们能检查一下这是否正确吗?
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 mathf(x):
在左侧返回math.sqrt(x) #函数!
正输入(消息):而True: try: C=int(输入(消息))
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))
发布于 2020-06-06 08:49:19
上面的代码有几个问题:
1) ,最重要的是,,您实际上没有计算正确的答案,因为您假设下限等于0。你不应该写xi=0,而应该写xi=a!(请注意,这将使用每个矩形的远端来计算高度-如果您想使用低端,并且不想更改任何其他代码,则需要编写xi = a - dx,因此您可以从a开始。(话虽如此,我不会这样做,但这是如何在不改变任何其他情况下解决这一问题的)。
2)验证错误:有几件事情您应该检查:
a,b的值是有效数字(注意,它们不应该是整数,只是数字)。您可以使用float()将某些内容转换为数字,就像使用int()转换为整数一样。n是一个整数,不等于0,因为这将引发一个错误,当您尝试用n除以时,n不是负的,因为这将导致您获得错误的值(与代码一样)。话虽如此,我不会按原样编写代码。使用for-循环然后递增您的值并不是一件非常重要的事情。您可能有兴趣了解,您实际上可以使用range函数指定一个下限和一个上限。试验:
for i in range(3,11,0.5):
print(i)看看会发生什么。我不会给你一个完整的解决方案,因为这是一项家庭作业,你最好自己解决这个问题,但希望这能为你指明正确的方向。
发布于 2020-06-06 08:21:21
正如@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在这篇文章的答复中所写的错误验证列表。此外,您还可以查看这个链接,在这里,它们以不同的方式生成黎曼和。有关try-catch的文档,您可以输入这个链接。
https://stackoverflow.com/questions/62228944
复制相似问题