expx和ln2泰勒展开的数值计算

    科技2022-08-21  95

    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_collection用于存放指数函数值 expx_tolerance=[] #空列表expx_tolerance用于存放计算误差 expx = 0 # 指数函数的初值为0 temp = 0 # 计数器初始为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)) #计算expx的值 temp+=1 #计算结束后 expx_collection.append(expx) #将指数函数值加入列表expx_collection 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()
    Processed: 0.031, SQL: 9