Подскажите пожалуйста, как возвращать значение выполненной функции. Т.е я хочу написать три функции численного интегрирования, а затем запустить функцию тестирования, чтобы она запускала тестируемые функции. Но у меня выходит ошибка. Тест получается если я каждую тестируемую функцию вношу отдельно, а именно:
- такой способ не работает
def test_method(method): '''разбивает интегрируемую функцию на части "n" до получения заданной точности''' print("Тестируем ", method.__doc__) a=0 b=3 n=1 y1=method n*=2 y2=method print(y2) while abs(y2-y1)>0.001: n*=2 y1=method n*=2 y2=method print("конечное колличество разбиений:", n) print("значение функции:", y2) if __name__=="__main__": test_method(rectangle_method)
while abs(y2-y1)>0.001: TypeError: unsupported operand type(s) for -: 'function' and 'function'
def test_method(method): '''разбивает интегрируемую функцию на части "n" до получения заданной точности''' print("Тестируем ", method.__doc__) a=0 b=3 n=1 y1=rectangle_method(f, n, a, b) n*=2 y2=rectangle_method(f, n, a, b) print(y2) while abs(y2-y1)>0.001: n*=2 y1=rectangle_method(f, n, a, b) n*=2 y2=rectangle_method(f, n, a, b) print("конечное колличество разбиений:", n) print("значение функции:", y2)
def rectangle_method(f, n, a, b): '''интегрирование методом прямоугольников''' h=(b-a)/n y=h*sum([f(a+k*h) for k in range(n+1)]) return float(y)