本文主要是介绍2024河南商丘ICPC Problem B. 表达式求导,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目描述
给定一个合法的函数表达式f(x),请你求出y=f(x)在a处的导数值,输入保证此处导数值一定存在,答案四舍五入保留两位小数。
该函数表达式被称为合法,即满足以下要求:
1. x一定合法。
2. 如果表达式A合法,表达式BBB合法,那么A+B,A−B一定合法。
3. 如果表达式A合法,那么ln(A)ln(A)ln(A)也合法。
输入描述
本题有多组数据。
第一行输入整数T(1≤T≤30)T(1 \le T \le 30)T(1≤T≤30),表示数据组数。
接下来每组数据包含两行。
其中第一行输入一个字符串S,表示f(x)f(x)f(x)的函数表达式,1≤∣S∣≤20。
其中第二行输入一个至多两位小数的浮点数a(0≤a≤20),含义如上所示。
输出描述
输出一个浮点数,表示y=f(x)在a处的导数值,答案四舍五入保留两位小数。
示例1
输入 | 输出 |
1 ln(x)+x 0.5 | 3.00 |
思路
用定义求导 [f(x+Δx)-f(x)]/Δx,给Δx个很小的值就可以
python秒了
代码
import re
import mathdef rep_x(str):pattern = r'(\d)([a-zA-Z])'res = re.sub(pattern, r'\1*\2', str)return resdef ln(x):return math.log(x)def cos(x):return math.cos(x)def sin(x):return math.sin(x)def solve():a=rep_x(input().replace('^','**'))x=float(input())dt = 0.0000000001res1 = eval(a)x += dtres2 = eval(a)res = (res2-res1)/dtprint("%.2f"%(res))t=int(input())
for i in range(t):solve()
这篇关于2024河南商丘ICPC Problem B. 表达式求导的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!