完善偏导数计算器代码:实现单变量变动的C值计算
偏导数计算器代码补充实现
以下是完成需求后的完整代码,核心逻辑为针对每个变量单独构造代入参数,计算对应y值后求解C:
equation = input("Enter an equation with variables: ") variables = set() for char in equation: if char.isalpha(): variables.add(char) values = {} for var in variables: values[var] = [float(input(f"Enter a value for {var}: ")) for _ in range(7)] averages = {} for var, val_list in values.items(): averages[var] = sum(val_list) / len(val_list) uncertainties = {} for var in variables: uncertainties[var] = float(input(f"Enter the uncertainty for {var}: ")) averages_low = {} averages_high = {} for var, avg in averages.items(): averages_low[var] = avg - uncertainties[var] averages_high[var] = avg + uncertainties[var] # 新增:计算每个变量对应的C值 c_values = {} for target_var in variables: # 固定其他变量为平均值,当前变量取低值构造参数 low_params = averages.copy() low_params[target_var] = averages_low[target_var] y1 = eval(equation, globals(), low_params) # 当前变量取高值构造参数 high_params = averages.copy() high_params[target_var] = averages_high[target_var] y2 = eval(equation, globals(), high_params) # 计算C值 delta_var = averages_high[target_var] - averages_low[target_var] c_values[target_var] = (y2 - y1) / delta_var print("\nResults:") print("{:<10} {:<10} {:<10} {:<10}".format("Variable", "Average", "Average Low", "Average High")) for var in variables: print("{:<10} {:<10.2f} {:<10.2f} {:<10.2f}".format(var, averages[var], averages_low[var], averages_high[var])) # 新增:打印C值结果 print("\nPartial Derivative Approximations (C):") print("{:<10} {:<15}".format("Variable", "C Value")) for var, c in c_values.items(): print("{:<10} {:<15.4f}".format(var, c))
关键说明
- 使用
eval()代入参数计算方程值,该函数仅适用于可信输入场景(自用或已知安全的输入) - 对每个目标变量,先复制平均值字典,再替换当前变量的高/低值,确保其他变量固定为平均值
- 最终计算并存储每个变量对应的C值,统一格式化输出
内容的提问来源于stack exchange,提问作者Jeff Handerson
相关产品推荐
相关产品推荐

