Найти - Пользователи
Полная версия: Расчет интеграла методом прямоугольников
Начало » Центр помощи » Расчет интеграла методом прямоугольников
1
belos
Добрый день!
Я написал следующий код
def f(x):
import math
return 10*math.e**(math.log(0.5)/5.27 * x)


def radiationExposure(start, stop, step):
if start+step < stop:
return f(start+step/2)*step + radiationExposure((start+step), stop, step)

Для расчета интегральной суммы. Но компилятор выдает There's an error in your program: expected an indented block.
В чем может заключаться моя ошибка?
vrabey
belos
В чем может заключаться моя ошибка?
переводчик google вот что говорит:
“Там в об ошибке в программе: Ожидается отступом блок”
belos
Спасибо! Я исправил. Все скомпелировалось, но теперь другая ошибка:
TypeError: unsupported operand type(s) for +: ‘float’ and ‘NoneType’
В чем ее причина?

Заранее спасибо!
vrabey
belos
TypeError: unsupported operand type(s) for +: ‘float’ and ‘NoneType’
может быть:
это выражение
f(start+step/2)*step
возвращает float
а функция в какой то момент (условие
start+step < stop
не выполняется) возвращает
None
а float и None сложить нельзя - unsupported operand type(s) for +

belos
А как можно уйти от этой ошибки?
То есть сделать так чтобы код заработал и начал считать интеграл?
FishHook
belos
А как можно уйти от этой ошибки?
А каков по вашему должен быть результат сложения float и None?
PooH
belos
А как можно уйти от этой ошибки?То есть сделать так чтобы код заработал и начал считать интеграл?
def radiationExposure(start, stop, step):
    if start + step < stop:
       return f(start+step/2)*step + radiationExposure((start+step), stop, step)
    else:
       return 0

PS: А рекурсию вы здесь использовали в качестве упражнения или по незнанию лучших способов?
belos
Спасибо!
Я упражнялся в понимании и использовании рекурсии.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB