def formation_densite(Beta=numpy.ones((nbre_noeuds,nbre_noeuds))): Psi2_grad = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi1_grad = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi3_grad = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi1_intermediaire = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi2_intermediaire = numpy.zeros((nbre_noeuds,nbre_noeuds)) grad = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi1_grad = copy.copy(Psi1) Psi1_intermediaire = copy.copy(numpy.dot(-Psi1,Beta.transpose())) Psi2_grad = copy.copy(Psi2.transpose()) Psi2_intermediaire = copy.copy(numpy.dot(-Psi2,Beta)) produit_densite = list() produit_densite_log = list() produit_gradient = numpy.zeros((nbre_noeuds,nbre_noeuds)) c = 0 while c < max_infections: produit_densite.append(copy.copy(numpy.dot(T3[c],Beta))) produit_gradient = produit_gradient + matrix_inverse_elements(produit_densite[c],T3[c]) produit_densite_log.append(copy.copy(log_elements(produit_densite[c]))) c += 1 grad = copy.copy((Psi1_grad + Psi2_grad) - (produit_gradient)) for i in range(len(grad)): for j in range(len(grad[i])): if Beta[i,j] == 0: grad[i,j] = 0 return ((- somme_diag_elements(Psi1_intermediaire) - somme_diag_elements(Psi2_intermediaire) - somme_diag_elements(sum(produit_densite_log)))/max_infections, grad/max_infections)
def formation_densite(Beta=numpy.ones((nbre_noeuds,nbre_noeuds))): Psi2_grad = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi1_grad = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi3_grad = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi1_intermediaire = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi2_intermediaire = numpy.zeros((nbre_noeuds,nbre_noeuds)) grad = numpy.zeros((nbre_noeuds,nbre_noeuds)) Psi1_grad = copy.copy(Psi1) Psi1_intermediaire = copy.copy(numpy.dot(-Psi1,Beta.transpose())) Psi2_grad = copy.copy(Psi2.transpose()) Psi2_intermediaire = copy.copy(numpy.dot(-Psi2,Beta)) produit_densite = list() produit_densite_log = list() produit_gradient = numpy.zeros((nbre_noeuds,nbre_noeuds)) c = 0 while c < nbre_infections: produit_densite.append(copy.copy(numpy.dot(T3[c],Beta))) produit_gradient = produit_gradient + matrix_inverse_elements(produit_densite[c],T3[c]) produit_densite_log.append(copy.copy(log_elements(produit_densite[c]))) c += 1 grad = copy.copy((Psi1_grad + Psi2_grad) - (produit_gradient)) for i in range(len(grad)): for j in range(len(grad[i])): if Beta[i,j] == 0: grad[i,j] = 0 def hessienne(): while c < nbre_infections: i = 0 j = 0 k = 0 while i < nbre_noeuds: j = 0 while j < nbre_noeuds: k = 0 while k < nbre_noeuds: if produit_densite[c][j,j] != 0: hessienne[i*nbre_noeuds+j][k*nbre_noeuds+j] += T3[c][i,j]*T3[c][k,j]/(produit_densite[c][j,j]**2) k += 1 j += 1 i += 1 c+=1 return ((- somme_diag_elements(Psi1_intermediaire) - somme_diag_elements(Psi2_intermediaire) - somme_diag_elements(sum(produit_densite)))/nbre_infections, grad/nbre_infections)