expx和ln2泰勒展开的数值计算
代码实现:
expx:
import matplotlib.pyplot as plt
import numpy as np
x=input("请输入e^x中x的取值:")
x=int(x)
n=input("请输入计算阶数n的取值:")
n=int(n)
def method_expx(num):
expx_collection=[]
expx_tolerance=[]
expx = 0
temp = 0
tolerance=np.math.exp(x)-expx
expx_collection.append(expx)
expx_tolerance.append(tolerance)
for i in range(num):
print("第{}阶expx值为{},误差为{}。".format(i,expx,tolerance))
expx=expx+(x**temp)/(np.math.factorial(temp))
temp+=1
expx_collection.append(expx)
tolerance=np.math.exp(x)-expx
expx_tolerance.append(tolerance)
return expx_tolerance
x_method_expx=np.arange(n+1)
y_method_expx=method_expx(n)
plt.scatter(x_method_expx,np.array(y_method_expx))
plt.title("e^x")
plt.xlabel("times")
plt.ylabel("tolerance")
plt.show()
ln2(两种展开):
import matplotlib.pyplot as plt
import numpy as np
def method01_ln2(num):
ln2_collection=[]
ln2=0
temp=-1
for i in range(num):
temp =temp*(-1)
ln2=ln2+temp*(1/(i+1))
ln2_collection.append(ln2)
return ln2_collection
def method02_ln2(num):
ln2_collection2=[]
ln2=0
temp2=1/3
for i in range(num):
temp1=2*i+1
temp2=temp2*9
ln2=ln2+1/(temp1*temp2)
ln2_collection2.append(ln2*2)
return ln2_collection2
n=100
x_method01_ln2=np.arange(n)
x_method02_ln2=np.arange(n)
y_method01_ln2=method01_ln2(n)
y_method02_ln2=method02_ln2(n)
plt.scatter(x_method01_ln2,np.array(y_method01_ln2))
plt.scatter(x_method02_ln2,np.array(y_method02_ln2))
plt.title("ln2")
plt.xlabel("x")
plt.ylabel("y")
plt.tick_params(axis='both')
plt.legend(['method01','method02'])
plt.show()
转载请注明原文地址:https://blackberry.8miu.com/read-17001.html