120109_DevTaylor pour Res

135 days ago by Tobi@sagemath

def Deriv_D(k,N): i = [1 for i in range(k)] res=0. for j in range(N^k): valid = 1 #Test if index-tupel is valid i.e that there are no double indices for p in range(k): if i[p] in i[p+1:k]: valid=0 if valid: res+=1/2^sum(i) i[0]+=1 for l in range(k-1): if i[l]==N+1: i[l]=1 i[l+1]+=1 return (-1)^k*res N=10 der_d=[1] k=1 der_d.append(Deriv_D(k,N)) print k print der_d[k] k=2 der_d.append(Deriv_D(k,N)) print k print der_d[k] k=3 der_d.append(Deriv_D(k,N)) print k print der_d[k] k=4 der_d.append(Deriv_D(k,N)) print k print der_d[k] k=5 der_d.append(Deriv_D(k,N)) print k print der_d[k] k=6 der_d.append(Deriv_D(k,N)) print k print der_d[k] k=7 der_d.append(Deriv_D(k,N)) print k print der_d[k] 
       
1
-0.999023437500000
2
0.664714813232422
3
-0.283764973282814
4
0.0750794825144112
5
-0.0119203815484070
6
0.00109979710714470
7
-0.0000568300670522603
1
-0.999023437500000
2
0.664714813232422
3
-0.283764973282814
4
0.0750794825144112
5
-0.0119203815484070
6
0.00109979710714470
7
-0.0000568300670522603
################# #Plot parameters ################# zmax=14 ymin=-2 ymax=2 var('z') def D(z, N): ret=1 for i in range(N-1): ret*=(1-z/2^(i+1)) return ret def Taylor_pol(z,k): res=0 for i in range(k+1): res+=1/factorial(i)*der_d[i]*z^i return res D_plot=plot(D(z,20), (z,0,zmax),rgbcolor='red', ymin=ymin, ymax=ymax) TP1 = plot(Taylor_pol(z,1), (z,0,zmax)) TP2 = plot(Taylor_pol(z,2), (z,0,zmax)) TP3 = plot(Taylor_pol(z,3), (z,0,zmax)) TP4 = plot(Taylor_pol(z,4), (z,0,zmax)) TP5 = plot(Taylor_pol(z,5), (z,0,zmax)) TP6 = plot(Taylor_pol(z,6), (z,0,zmax)) TP7 = plot(Taylor_pol(z,7), (z,0,zmax)) show(D_plot+TP1+TP2+TP3+TP4+TP5+TP6+TP7) 
       
 
       
6
6