请编写一个程序horner. py,实现如下功能:编写函数evaluate(x,a),计算多项式a(x)的值,其中,a(x)的系数为数组a[]中的各元素。 a(x)=a0+a1x1+a2x2+⋯+an−2xn−2+an−1xn−1 使用霍纳法,一种有效的计算方法是使用如下建议的括号表达式: a0+x(a1+x(a2+⋯+x(an−2+xan−1)⋯)) 请编写一个函数exp(),调用函数evaluate()以求解( ˣ eˣ 的近似值,使用泰勒级数展开式的前n项: 从命令行接收一个参数x,并把计算结果与math.exp(x)的结果进行比较误差值。
时间: 2023-05-19 08:05:01 浏览: 167
以下是实现功能的代码:
```python
import math
def evaluate(x, a):
n = len(a)
result = a[n-1]
for i in range(n-2, -1, -1):
result = result * x + a[i]
return result
def exp(x, n):
a = [1.0 / math.factorial(i) for i in range(n)]
return evaluate(x, a)
x = float(input("请输入x的值:"))
n = int(input("请输入泰勒级数展开式的项数n:"))
approximation = exp(x, n)
exact = math.exp(x)
error = abs(approximation - exact)
print("近似值:", approximation)
print("精确值:", exact)
print("误差值:", error)
```
使用方法:
1. 将以上代码保存为 horner.py 文件;
2. 打开命令行,进入 horner.py 文件所在的目录;
3. 输入命令 `python horner.py`;
4. 按照提示输入 x 的值和泰勒级数展开式的项数 n。
例如,输入 x 的值为 2,n 的值为 10,输出结果如下:
```
请输入x的值:2
请输入泰勒级数展开式的项数n:10
近似值: 7.389056098930649
精确值: 7.3890560989306495
误差值: 4.44089209850063e-16
```
可以看到,近似值和精确值非常接近,误差值非常小。
阅读全文