python - 成本函数方程解析
问题描述
我正在尝试解决这个任务:
对于下面的成本函数,其中 C 是生产 x 单位产品的成本,求边际成本函数。x 给定值下的边际成本是多少?C(x)=0.05x^3+0.8x^2+40x+100;x=500
我如何从这个字符串中解析粗体值和公式?可以用类似的字符串重复的东西。
解决方案
这是我的解决方案,它将方程式分解为需要总结的对象,然后单独评估每个对象:
def clean(string):
# Removes unnecesarry parts of input
return string.rstrip(';').split('=')[1]
def parse(string):
parts = string.split('+')
objs = []
for part in parts:
mult_pow = part.split('x')
if len(mult_pow) == 2:
# Both multiplier and power present
obj = (
float(mult_pow[0]),
float(mult_pow[1].lstrip('^')) if mult_pow[1] else 1.0
)
else:
if '^' in mult_pow[0]:
# Only power present
obj = (
1.0,
float(mult_pow[0].lstrip('^'))
)
else:
# Only multiplier present
obj = (
float(mult_pow[0]),
0
)
objs.append(obj)
return objs
def evaluate(parsed_objects, x):
result = 0
for obj in parsed_objects:
result += obj[0] * x**obj[1]
return result
def solve(equation, x):
cleaned_str = clean(equation)
parsed_objects = parse(cleaned_str)
result = evaluate(parsed_objects, x)
return result
x = 500
input_str = 'C(x)=0.05x^3+0.8x^2+40x+100;'
result = solve(input_str, x)
print(result)
输出:
6470100.0
推荐阅读
- php - 如何在 PHP 中解密这个 CryptoJS 加密(提供的函数)
- python - 我是否正确使用装饰器?
- c# - 输入 1 2 5 8 7 3 10 6 4 9,输出 1 2 3 5 7 8 10 6 4 9
- c# - 如何在 asp.net 框架中的 Swagger UI 上添加身份验证令牌而不转换为 asp.net 核心
- django - django-mptt 计算 add_related_count 中的项目?
- flutter - 如何使用 Riverpod Notifier 创建下拉按钮?
- r - 如何使用 RSelenium 抓取下拉菜单的文本?
- filter - 过滤查询集
- laravel - 如何减少查询 laravel 的数量?
- c# - 包装 ADO.net 的替代方法