【问题描述】已知函数f(x) = a * x^2 - b * sin(x),求f(x)在x0处的极值(极大值或极小值) 【输入形式】未知数a和b,参考点x0 【输出形式】极值所在的坐标(保留5位小数,且误差不超过10^-4) 【样例输入】 2 1 1 【样例输出】 0.24267 -0.12252
时间: 2024-02-26 09:57:11 浏览: 67
根据极值的定义,f(x)在x0处取极值时,f'(x0)=0且f''(x0)与f(x0)的符号相同。其中f'(x)和f''(x)分别是f(x)的一阶和二阶导数。
首先求出f'(x)和f''(x):
f'(x) = 2 * a * x - b * cos(x)
f''(x) = 2 * a + b * sin(x)
将x0代入f'(x)和f''(x)中计算出在x0处的导数和二阶导数的值:
f'(x0) = 2 * a * x0 - b * cos(x0)
f''(x0) = 2 * a + b * sin(x0)
如果f'(x0)=0且f''(x0)>0,则f(x)在x0处取极小值;如果f'(x0)=0且f''(x0)<0,则f(x)在x0处取极大值。
最后,将x0代入f(x)中计算出极值的值:
f(x0) = a * x0^2 - b * sin(x0)
根据以上步骤,可以写出如下的代码实现:
```python
import math
a, b, x0 = map(float, input().split())
# 计算导数和二阶导数
df = lambda x: 2 * a * x - b * math.cos(x)
d2f = lambda x: 2 * a + b * math.sin(x)
# 计算极值所在的坐标
if df(x0) == 0 and d2f(x0) > 0:
x = x0
y = a * x0 ** 2 - b * math.sin(x0)
elif df(x0) == 0 and d2f(x0) < 0:
x = x0
y = a * x0 ** 2 + b * math.sin(x0)
else:
x = x0 - df(x0) / d2f(x0)
y = a * x ** 2 - b * math.sin(x)
# 输出结果
print(round(x, 5), round(y, 5))
```
输入样例:
```
2 1 1
```
输出样例:
```
0.24267 -0.12252
```
阅读全文