Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 15, 2014 00:00:02

belos
Зарегистрирован: 2014-09-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Расчет интеграла методом прямоугольников

Добрый день!
Я написал следующий код
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.
В чем может заключаться моя ошибка?

Офлайн

#2 Сен. 15, 2014 00:17:49

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Расчет интеграла методом прямоугольников

belos
В чем может заключаться моя ошибка?
переводчик google вот что говорит:
“Там в об ошибке в программе: Ожидается отступом блок”

Офлайн

#3 Сен. 15, 2014 00:25:50

belos
Зарегистрирован: 2014-09-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Расчет интеграла методом прямоугольников

Спасибо! Я исправил. Все скомпелировалось, но теперь другая ошибка:
TypeError: unsupported operand type(s) for +: ‘float’ and ‘NoneType’
В чем ее причина?

Заранее спасибо!

Офлайн

#4 Сен. 15, 2014 00:44:10

vrabey
От: Киев
Зарегистрирован: 2013-04-17
Сообщения: 209
Репутация: +  23  -
Профиль   Отправить e-mail  

Расчет интеграла методом прямоугольников

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 +

Офлайн

#5 Сен. 15, 2014 01:01:20

belos
Зарегистрирован: 2014-09-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Расчет интеграла методом прямоугольников

А как можно уйти от этой ошибки?
То есть сделать так чтобы код заработал и начал считать интеграл?

Офлайн

#6 Сен. 15, 2014 12:56:39

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Расчет интеграла методом прямоугольников

belos
А как можно уйти от этой ошибки?
А каков по вашему должен быть результат сложения float и None?



Офлайн

#7 Сен. 16, 2014 06:39:01

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Расчет интеграла методом прямоугольников

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: А рекурсию вы здесь использовали в качестве упражнения или по незнанию лучших способов?



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#8 Сен. 16, 2014 13:06:48

belos
Зарегистрирован: 2014-09-14
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Расчет интеграла методом прямоугольников

Спасибо!
Я упражнялся в понимании и использовании рекурсии.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version