matplotlib 我怎样画变量n和误差p的图?

wtlkbnrh  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(95)
import math
x= float(input())
term = 1
sum = 1
n = 1
eps = 10**-7
while abs(term/sum) > eps:
    term = -x/n * term
    sum  = sum + term
    n = n + 1.
print (n)
print (sum)
error = 100 - (sum * 100 /math.exp(-x))
print(abs(error), "%")

上面的代码计算了e^-x的值,并将其与内置函数的值进行比较,我试图绘制一个n(达到预期精度所需的迭代次数)和误差p(每次迭代后的值错误).我导入了matplotlib,尝试使用列表,但没有成功.它不允许我追加任何值,我做的每一个列表只包含最终的值,而不是每次迭代后errorp的值,所以图上根本没有显示出来。
我怎样才能把它们之间的关系画出来呢?
先谢了。

brtdzjyr

brtdzjyr1#

你应该把误差值存储在一个列表中,在循环的每一步都附加计算出的误差,然后绘制迭代列表和误差列表:

import matplotlib.pyplot as plt
import math

x=float(input("Enter x value: "))
term = 1
s = 1
n = 1
eps = 10**-7
error_lst = []
while abs(term/s) > eps:
    term = -x/n * term
    s  = s + term
    error_lst.append(abs(100 - (s * 100 /math.exp(-x))))
    n = n + 1.

fig, ax = plt.subplots()
ax.plot(range(1, int(n)), error_lst)
ax.set_title(f"Iterations for x={x} (approx. of exp({-x}))")
ax.set_xlabel('iterations')
ax.set_ylabel('error in %')
plt.show()

输出:

相关问题