Я пытаюсь написать код, который вычисляет интегралы с использованием прямоугольного правила, а также позволяет пользователю вводить интегральные пределы и количество делений (прямоугольников). Я написал функцию, но для определенных значений она просто возвращает «Нет». Есть идеи, почему?
Вот мой код:
def integral(f, a, b, N):
h = int((b-a)/N)
result = 0
result += h * f(a)
for i in range(1, N-1):
result += h * f(a + i*h)
return result
def f(x):
return x**3
string_input1 = input("Please enter value for a: ")
a = int(string_input1)
string_input2 = input("Please enter value for b: ")
b = int(string_input2)
while True:
string_input3 = input("Please enter integer positive value for N: ")
N = int(string_input3)
if N>0:
break
print(integral(f, a, b, N))
пример значений, которые возвращают "Нет", это a=0 b=1 N=2
return result
? это могло бы объяснитьNone
, еслиN=2
. - person DeepSpace   schedule 21.03.2017return
внутри или снаружи циклаfor
? - person Willem Van Onsem   schedule 21.03.2017(b-a)/N
будет целочисленным делением с округлением до 0 в вашем случае. Используйтеfloat
для преобразованияa
иb
в числа. Концептуально - в любом случае это должен быть поплавок. Зачем настаивать на том, что пределы интегрирования являются целыми числами? - person John Coleman   schedule 21.03.2017N
должно быть целым числом, аa
,b
должно быть числом с плавающей запятой. - person John Coleman   schedule 21.03.2017