Я пишу программу для расчета объема тела вращения.Первым шагом является вычисление интеграла.Я использую scipy.integrate
для этого, но я не могу найти лучший способ получить уравнение (например, x=x**2
, вводимое в командной строке. Я изначально планировал добавить аргумент «относительно: x |y ', а затем принимает функцию как лямбду. К сожалению, argparse
не будет принимать лямбду в качестве типа аргумента, а попытка использовать строку для создания лямбды (f = lambda x: args.equation
) просто возвращает строку (понятно, действительно).
Вот что я получил до сих пор:
import sys
import argparse
import math
from scipy import integrate
parser = argparse.ArgumentParser(description='Find the volume of the solid of rotation defined')
parser.add_argument('equation', help='continous function')
parser.add_argument('a', type=float, help='bound \'a\'')
parser.add_argument('b', type=float, help='bound \'b\'')
parser.add_argument('-axis', metavar='x|y', help='axis of revolution')
args = parser.parse_args()
def volume(func, a, b, axis=None):
integral = integrate.quad(func, a, b)
return scipy.py * integral
print volume(args.equation, args.a, args.b)
Любой совет будет оценен спасибо