题目描述
给定一个合法的函数表达式f(x),请你求出y=f(x)在a处的导数值,输入保证此处导数值一定存在,答案四舍五入保留两位小数。
该函数表达式被称为合法,即满足以下要求:
x一定合法。
如果表达式A合法,表达式BBB合法,那么A+B,A−B一定合法。
如果表达式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秒了
代码
python
import re
import math
def rep_x(str):
pattern = r'(\d)([a-zA-Z])'
res = re.sub(pattern, r'\1*\2', str)
return res
def 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.0000000001
res1 = eval(a)
x += dt
res2 = eval(a)
res = (res2-res1)/dt
print("%.2f"%(res))
t=int(input())
for i in range(t):
solve()