首页 > 解决方案 > 成本函数方程解析

问题描述

我正在尝试解决这个任务:

对于下面的成本函数,其中 C 是生产 x 单位产品的成本,求边际成本函数。x 给定值下的边际成本是多少?C(x)=0.05x^3+0.8x^2+40x+100;x=500

我如何从这个字符串中解析粗体值和公式?可以用类似的字符串重复的东西。

标签: pythonparsing

解决方案


这是我的解决方案,它将方程式分解为需要总结的对象,然后单独评估每个对象:

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

推荐阅读